数据链路层属于计算机网络的低层。数据链路层使用的信道主要有以下两种类型:
- 点对点信道。这种信道使用一对一的点对点通信方式。
- 广播信道。这种信道使用一对多的广播通信方式,因此过程比较复杂。广播信道上
连接的主机很多,因此必须使用专用的共享信道协议来协调这些主机的数据发送。
局域网虽然是个网络,但我们并不把局域网放在网络层中讨论。这是因为在网络层要讨论的问题是多个网络互连的问题,是讨论分组怎样从一个网络,通过路由器,转发到另个网络。在本章中我们研究的是在同一个局域网中,分组怎样从一台主机传送到另一台主机,但并不经过路由器转发。从整个互联网来看,局域网仍属于数据链路层的范围。
点对点 PPP 信道
基本概念
- 链路和数据链路:链路是物理线路,数据链路除了物理线路之外还加入了控制数据传输的通信协议。
- 网络适配器:实际上就是网卡,实现这些通信协议的设备。每一个网卡都有一个独一无二的
MAC
地址,它被写在卡上的一块ROM
中。在网络上的每一个计算机都拥有一个独一无二的MAC
地址。这是因为电气电子工程师协会(IEEE
)负责为网络接口控制器(网卡)销售商分配唯一的MAC
地址。
点对点信道数据链路层工作原理
点对点信道的数据链路层在进行通信时的主要步骤如下
- 结点 A 的数据链路层把网络层交下来的 IP 数据报添加首部和尾部封装成帧。
- 结点 A 把封装好的帧发送给结点 B 的数据链路层。
- 若结点 B 的数椐链路层收到的帧无差错,则从收到的帧中提取出 IP 数据报交给上面的网络层;否则丢弃这个帧。
下面是工作过程的细节:
封装成帧 framing
封装成帧(framing
)就是在一段数据的前后分别添加首部和尾部,这样就构成了一个帧。接收端在收到物理层上交的比特流后,就能根据首部和尾部的标记,从收到的比特流中识别帧的开始和结束。
首部和尾部的一个重要作用就是进行帧定界(即确定帧的界限)。此外,首部和尾部还包括许多必要的控制信息。在发送帧时,是从帧首部开始发送的。各种数据链路层协议都对帧首部和帧尾部的格式有明确的规定。显然,为了提高帧的传输效率,应当使帧的数据部分长度尽可能地大于首部和尾部的长度。但是,每一种链路层协议都规定了所能传送的帧的数据部分长度上限一一最大传送单元 MTU
(Maximum Transfer Unit
)。图 3-4 给出了帧的首部和尾部的位置,以及帧的数据部分与 MTU
的关系。
当数据是由可打印的 ASCI
码组成的文本文件时,帧定界可以使用特殊的帧定界符。我们知道,ASCI
码可打印的有 95 个,而不可打印的控制字符有 33 个。控制字符 SOH
(Start Of Header
)放在一帧的最前面,表示帧的首部开始。另一个控制字符 EOT
(End Of Transmission
)表示帧的结束。请注意,SOH
和 EOT
都是控制字符的名称。它们的十六进制编码分别是 01和 04,而不是字符。
透明传输
当传送的帧是用文本文件组成的帧时(文本文件中的字符都是从键盘上输入的),其数据部分显然不会出现像 SOH
或 EOT
这样的帧定界控制字符。不管从键盘上输入什么字符都可以放在这样的帧中传输过去,因此这样的传输就是透明传输。
但当数据部分是非 ASCII
码的文本文件时(如二进制代码的计算机程序或图像等),情况就不同了。如果数据中的某个字节的二进制代码恰好和 SOH
或 EOT
这种控制字符一样,数据链路层就会错误地“找到帧的边界”,把部分帧收下(误认为是个完整的帧),而把剩下的那部分数据丢弃(这部分找不到帧定界控制字符 SOH
)。
为了解决透明传输问题,就必须设法使数据中可能出现的控制字符SOH
和EOT
在接收端不被解释为控制字符。
具体的方法是:发送端的数据链路层在数据中出现控制字符 SOH
或EOT
的前面插入一个转义字符ESC
(其十六进制编码是 1B
)。而在接收端的数据链路层在把数据送往网络层之前删除这个插入的转义字符。如果转义字符也出现在数据当中,那么解决方法仍然是在转义字符的前面插入一个转义字符。因此,当接收端收到连续的两个转义字符时,就删除其中前面的一个。下图表示用字节填充法解决透明传输的问题。
差错检测
循环冗余码(Cyclic Redundancy Code
, CRC
)又称为多项式码,任何一个由二进制数位串组成的代码都可以和一个只含有 0 和 1 两个系数的多项式建立一一对应关系。一个 k
位帧可以看成是从 X^k-1^ 到 X^0^ 的 k 次多项式的系数序列,这个多项式的阶数为 k-1, 高位是 X^k-1^ 项的系数,下一位是 X^k-2^ 的系数,依此类推。例如:1110011 有 7 位,表示成多项式是 X^6^+X^5^+X^4^+X+1, 而多项式 X^5^+X^4^+X^2^+X 对应的位串是 110110, 其运算过程如下图所示。
给定一个 m bit
的帧或报文,发送器生成一个 r bit
的序列,称为帧检验序列(FCS
)。这样所形成的帧将由(m+r)
比特组成。发送方和接收方事先商定一个多项式 G (x)
(最高位和最低位必须为 1),使这个带检验码的帧刚好能被这个预先确定的多项式 G (x)
整除。接收方用相同的多项式去除收到的帧,如果无余数,则认为无差错。
假设一个帧有 m
位,其对应的多项式为 M (x)
,则计算冗余码的步骤如下:
- 加 0。假设
G (x)
的阶为r
,在帧的低位端加上r
个 0 - 模 2 除。利用模 2 除法,用
G (x)
对应的数据串去除 (1) 中计算出的数据串,得到的余数
即为冗余码(共 r
位,前面的 0 不可省略)。常用的生成多项式有下面几种:
我们知道,过去 OSI
的观点是:必须让数据链路层向上提供可靠传输。接收端收到正确的帧就要向发送端发送确认。发送端在一定的期限内若没有收到对方的确认,就认为出现了差错,因而就进行重传,直到收到对方的确认为止。这种方法在历史上曾经起到很好的作用。但现在的通信线路的质量已经大大提高了,由通信链路质量不好引起差错的概率已经大大降低。因此,现在互联网就采取了区别对待的方法:
对于通信质量良好的有线传输链路,数据链路层协议不使用确认和重传机制,即不要求数据链路层向上提供可靠传输的服务,这叫做无差错接受。如果在数据链路层传输数据时出现了差错并且需要进行改正,那么改正差错的任务就由上层协议(如TCP
协议)来完成。
对于通信质量较差的无线传输链路,数据链路层协议使用确认和重传机制,数据链路层向上提供可靠传输的服务
实践证明,这样做可以提高通信效率
PPP 点对点协议
PPP
和P2P
其实是一个意思!Point to Point Protocol
P2P
是形容拓扑结构
PPP
是形容链路状态
特点
PPP
协议有三个组成部分:
- 一个将 P 数据报封装到串行链路的方法。
PPP
既支持异步链路(无奇偶检验的 8 比特数据),也支持面向比特的同步链路。P
数据报在PPP
帧中就是其信息部分。这个信息部分的长度受最大传送单元MTU
的限制。(MTU
默认为1500字节) - 一个用来建立、配置和测试数据链路连接的链路控制协议 LCP (Link Control Protocol)。通信的双方可协商一些选项。在
RFC1661
中定义了 11 种类型的LCP
分组,位于PPP
帧的首部第四个字段和第五个字段。 - 一套网络控制协议 NCP (Network Control Protocol),其中的每一个协议支持不同的网络层协议,如
IP
、OSI
的网络层、Decnet
,以及Appletalk
等。 - 因特网是由大量的异构网络通过路由器相互连接起来的。而你说的网络层是指的我们用的最多的以太网的网络层,它主要运行
IP
协议。路由器可以连接不同的网络,即支持不同的网络层协议。所以PPP
链路的两端的NCP
根据网络层的不同协议互相交换网络层特定的网络控制分组。总之,PPP
协议两端的网络层可以运行不同的网络层协议,但仍然可使用同一个PPP
协议进行通信。
如果在PPP
链路上运行的是IP协议,则对PPP
链路的每一端配置IP
协议模块(如分配IP
地址)时就要使用NCP
中支持IP
的协议——IP
控制协议IPCP(IP Control Protocol)
。IPCP
分组也封装成PPP
帧在PPP
链路上传送。
PPP 的帧格式
首部的第一个字段和尾部的第二个字段都是标志字段 F
(Flag
),规定为 0x7E
。十六进制的 7E
标志字段表示一个帧的开始或结束。因此标志字段就是 PPP
帧的定界符。连续两帧之间只需要用一个标志字段。如果出现连续两个标志字段,就表示这是一个空帧,应当丢弃。
首部中的地址字段 A
规定为 0xFF
,控制字段 C
规定为 0x03
(最初曾考虑以后再对这两个字段的值进行其他定义,但至今也没有给出。可见这两个字段实际上并没有携带 PPP
帧的信息。
PPP
首部的第四个字段是 2 字节的协议字段。当协议字段为 0x0021
时,PPP
帧的信息字段就是 IP
数据报。若为 0xC021
, 则信息字段是 PPP
链路控制协议 LCP
的数据,而 0x8021
表示这是网络层的控制数据°。
信息字段的长度是可变的,不超过 1500 字节。
尾部中的第一个字段(2 字节)是使用 CRC
的帧检验序列 FCS
。
当 PPP
使用异步传输时,它把转义符定义为 0x7D
,并使用字节填充 RFC1662
规定了如下所述的填充方法:
零比特填充
PPP
协议用在SONET/SDH
链路时,使用同步传输(一连串的比特连续传送)而不是异步传输(逐个字符地传送),在这种情况下, PPP
协议采用零比特填充方法来实现透明传输。
零比特填充的具体做法是:在发送端,先扫描整个信息字段(通常用硬件实现,但也可用软件实现,只是会慢些),只要发现有5个连续1,则立即填入一个0。因此经过这种零比特填充后的数据,就可以保证在信息字段中不会出现6个连续1,接收端在收到一个帧时,先找到标志字段F
以确定一个帧的边界,接着再用硬件对其中的比特流进行扫描。每当发现5个连续1时,就把这5个连续1后的一个0删除,以还原成原来的信息比特流(下图),这样就保证了透明传输:在所传送的数据比特流中可以传送任意组合的比特流,而不会引起对帧边界的错误判断。
问题:为什么对于同步异步传输,填充方式不一样。。
主要是对同步传输和异步传输不理解
- 异步传输(Asynchronous Transmission): 异步传输将比特分成小组进行传送,小组可以是8位的1个字符或更长。发送方可以在任何时刻发送这些比特组,而接收方从不知道它们会在什么时候到达。一个常见的例子是计算机键盘与主机的通信。按下一个字母键、数字键或特殊字符键,就发送一个8比特位的ASCII代码。键盘可以在任何时刻发送代码,这取决于用户的输入速度,内部的硬件必须能够在任何时刻接收一个键入的字符。
- 同步传输(Synchronous Transmission):同步传输的比特分组要大得多。它不是独立地发送每个字符,每个字符都有自己的开始位和停止位,而是把它们组合起来一起发送。我们将这些组合称为数据帧,或简称为帧。
PPP的工作状态
当用户拨号接入ISP
后,就建立了一条从用户个人电脑到ISP
的物理连接。这时,用户个人电脑向ISP
发送一系列的链路控制协议LCP
分组(封装成多个PPP
帧),以便建立LCP
连接。这些分组及其响应选择了将要使用的一些PPP
参数。接着还要进行网络层配置,网络控制协议NCP
给新接入的用户个人电脑分配一个临时的IP
地址。这样,用户个人电脑就成为互联网上的一个有IP
地址的主机了。
当用户通信完毕时, NCP
释放网络层连接,收回原来分配出去的IP
地址。接着, LCP
释放数据链路层连接。最后释放的是物理层的连接。
使用广播信道的数据链路层
局域网的数据链路层
局域网可按网络拓扑进行分类。
- 星形网。由于集线器的出现和双绞线大量用于局域网中,星形以太网以及多级星形结构的以太网获得了非常广泛的应用
- 环形网
- 总线网,各站直接连在总线上。总线两端的匹配电阻吸收在总线上传播的电磁波信号的能量,避免在总线上产生有害的电磁波反射。总线网以传统以太网最为著名。
现在以太网几乎成为了局域网的同义词,因此本章从本节开始都是讨论以太网技术。局域网可使用多种传输媒体。双绞线原来只用于低速 1~2 Mbit/s 基带网。现在从 10 Mbit/s 至 10 Gbit/s 的局域网都可使用双绞线。双绞线已成为局域网中的主流传输媒体。当数据率很高时,往往需要使用光纤作为传输媒体。
共享信道技术上有两种方法实现:
- 静态划分信道,如频分复用、时分复用、波分复用和码分复用等。用户只要分配到了信道就不会和其他用户发生冲突。但这种划分信道的方法代价较高,不适合于局域网使用
- 动态媒体接入控制,它又称为多点接入(multiple access),其特点是信道并非在用户通信时固定分配给用户。这里又分为以下两类
- 随机接入 特点是所有的用户可随机地发送信息(想发就发)。但如果恰巧有两个或更多的用户在同一时刻发送信息,那么在共享媒体上就要产生碰撞(即发生了冲突),使得这些用户的发送都失败。因此,必须有解决碰撞的网络协议。
- 受控接入 特点是用户不能随机地发送信息而必须服从一定的控制。这类的典型代表有分散控制的令牌环局域网和轮询。局域网中使用得较少。
令牌环网是一个环形网,工作原理如下:
- 当网络空闲时,环路中只有令牌在网络中循环传递。
- 令牌传道到有数据要发送的结点处,该结点就修改令牌中的一个标志位,然店在令牌中附加自己需要传输的数据,这样就将令牌改换成了一个数据帧,源结点将这个数据帧发送出去。
- 数据帧沿着环路传递,接收到的结点一边转发数据,一边査看帧的目的地址。如果目的地址和自己的地址相同,接收结点就复制该数据帧以便进行下一步处理。
- 数据帧沿着环路传输,直到到达该帧的源结点,源结点接收自己发出去的数据帧便不再转发。同时,该源结点可以通过校验返回的数据帧,以查看数据传输过程中是否有错,若有错,则重传该帧。
- 源结点传送完数据以后,重新产生一个父牌好将令牌传递给下一个站点,以交出发送数据帧的权限。
为了使用多种局域网标准,IEEE 把数据链路层拆成两个子层,即逻辑链路控制 LLC (Logical Link Control)子层和媒体接入控制 MAC (Medium Access Control)子层。与物理介质有关的内放在 MAC 子层,而 LLC 子层则与传输媒体无关,不管采用何种介质和 MAC 对 LLC 来说都是透明的。(当然现在因为都使用的是 DIX Ethernet V2,所以LLC作用消失了,很多厂商生产的适配器上就仅装有 MAC 协议而没有 LLC 协议,因为现在链路层都是无连接的)
CSMA/CD 协议
CSMA/CD协议的原理可以用以下这个例子来比喻:有一屋子的人在开讨论会,没有会议主持人控制发言。想发言的随时可发言,不需要举手示意(多点接入)。但我们还必须有个协议来协调大家的发言。这就是:如果你听见有人在发言,那么你就必须等别人讲完了才能发言(否则就干扰了别人的发言)(载波监听)。但有时碰巧两个或更多的人同时发言了,那么且发现冲突,大家都必须立即停止发言,等听到没有人发言了你再发言(碰撞检测)。
注意,这里的冲突是你在发信息的时候同时收到了别人发来的数据(局域网),两股邪恶势力碰撞肯定是会有影响的,但对于全双工模式,不需要使用 CSMA/CD 的(发送和接收互不影响)
特点
- “多点接入” 就是总线型网络,许多计算机以多点接入的方式连接在一根总线上。协议的实质是“载波监听”和“碰撞检测”。
- “载波监听” 就是用电子技术检测总线上有没有其他计算机也在发送。载波监听就是检测信道,在发送前,或者是在发送中,每个站都必须不停地检测信道。在发送前检测信道,是为了获得发送权。如果检测出已经有其他站在发送,则自己就暂时不许发送数据,必须要等到信道变为空闲时才能发送。在发送中检测信道,是为了及时发现有没有其他站的发送和本站发送的碰撞。这就称为 “碰撞检测”
- “碰撞检测” 也就是“边发送边监听”,即适配器边发送数据边检测信道上的信号电压的变化情况。当几个站同时发送数据时,总线上的信号电压变化幅度将会增大(互相叠加)。当适配器检测到的信号电压变化幅度超过一定的门限值时,就认为总线上至少有两个站同时在发送数据,表明产生了碰撞。所谓“碰撞”就是发生了冲突。因此“碰撞检测”也称为“冲突检测”。这时,总线上传输的信号产生了严重的失真,无法从中恢复出有用的信息来。因此,任何一个正在发送数据的站,一旦发现总线上出现了碰撞,其适配器就要立即停止发送,免得继续进行无效的发送,白白浪费网络资源,然后等待一段随机时间后再次发送。随机时间有多种算法,最常用的是二进制指数退避算法,下面的 N 是重传时间,M 是基本等待时间的倍数,等待时间等于
2 * <0~M 的一个数> * <基本等待时间>:
(优点是考虑是考虑负载对冲突的影响,因为等待时间和重发时间联系起来帧同步)- 当 1 ≤ N ≤ 10 时,M = 2^N^ - 1
- 当 10 ≤ N ≤ 15 时,M = 2^10^ - 1 = 1023。
- 当 16 ≤ N 时,认为网络有问题,直接丢弃,并给计算机发送一个错误报告。
使用集线器的星形拓扑
- 从表面上看,使用集线器的局域网在是星形网,但集线器实际上相当于电缆线,因此整个系统仍像一个传统以太网那样运行。也就是说,在逻辑上仍是一个总线网,各站共享逻辑上的总线,使用的还是 CSMA/CD 协议。网络中的各站必须竞争对传输媒体的控制,并且在同一时刻至多只允许一个站发送数据。
- 一个集线器有许多接口,例如 8 至 16 个,每个接口通过 RJ-45 插头(想一想水晶头样子)用两对双绞线与一台计算机上的适配器相连。
- 集线器工作在物理层,仅仅简单地转发比特一一收到 1 就转发 1, 收到 0 就转发 0, 不进行碰撞检测。若两个接口同时有信号输入(即发生碰撞),那么所有的接口都将收不到正确的帧。
以太网的信道利用率
上图是以太网的信道被占用的情况。一个站在发送帧时出现了碰撞。经过若干个争用期 $2\tau$ ( $\tau$ 是单程端到端时延) 后,一个站发送成功了。而成功发送一个帧需要占用信道的时间是 $T_0+\tau$,比这个帧的发送时间要多一个 $\tau$。这是因为当一个站发送完最后一个比特时,这个比特还要在以太网上传播。在最极端的情况下,发送站在传输媒体的一端,而比特在媒体上传输到另一端所需的时间是$\tau$。因此,必须在经过时间 $T_0+\tau$ 后以太网的媒体才完全进入空闲状态,オ能允许其他站发送数据。
可看出,要提高以太网的信道利用率,就必须减小 $\tau$ 与 $T_0$ 之比。在以太网中定义了参数 $a$,它是以太网单程端到端时延 $\tau$ 与帧的发送时间 $T_0$ 之比:
$$
a=\frac{\tau}{T_{0}}
$$
当 $a \rightarrow 0$ 时,表示只要一发生碰撞,就立即可以检测出来(争用期很短),并立即停止发送,因而信道资源被浪费的时间非常非常少。反之,参数 $a$ 越大,表明争用期所占的比例越大,这就使得每发生一次碰撞就浪费了不少的信道资源,使得信道利用率明显降低。
如总线一旦空闲就有某一个站立即发送数据。于是我们可计算出极限信道利用率 $S_{max}$ 为:
$$
S_{\max }=\frac{T_{0}}{T_{0}+\tau}=\frac{1}{1+a}
$$
在以太网中,一般取51.2微秒作为争用期,是因为信号在以太网上传播1km大约需要5μ秒,以太网最大端到端长度约5km,而且还有很多其他的许多因素,如存在的转发器所增加的时延,以及强化碰撞的干扰信号的持续时间,所以以太网的争用期确定为51.2μs。因而最短有效帧长等于争用期乘以带宽为 512 比特。
以太网的MAC层
在局域网中,硬件地址又称为物理地址或 MAC 地址,一共四十八位,六个字节(其实当然物理地址不一定是 MAC 地址,比如令牌环网,但不过现在也没人用了科科 )
“名字指出我们所要寻找的那个资源,地址指出那个资源在何处,路由告诉我们如何到达该处。”
MAC 地址可以理解为人的身份证号,根据身份证号我可以找到对应的一个实体,但不过如果警察想要来找你,单单凭借一个身份证号是不够的(因为十三亿人,一个个拿身份证比对多累啊)。这就是IP地址的作用之处,IP地址相当于你的住址,通过 IP 地址可以找到你在的地方,再根据 MAC 地址比对下然后确认是你。(乱举例子中)
MAC 地址 6 个字节中的前三个字节由IEEE管理。世界上凡要生产适配器的厂家都必须向 IEEE 购买由这三个字节构成的这个号(即地址块),这个号的正式名称是组织唯一标识符 OUI (Organizationally Unique Identifier),通常也做公司标识符(company_id) 。地址字段中的后三个字节(即低位 24 位)则由厂家自行指派,称为扩展标识符(extended identifier),只要保证生产出的适配器没有重复地址即可。可见用个地址块可以生成 24 个不同的地址。用这种方式得到的 48 位地址称为 EUI-48 (Extended Unique Identifier),即MAC地址。
但不过,IEEE 规定地址字段的第一字节的最低位为 IG 位。IG 表示 Individual/Group。IG=0,地址字段表示一个单个站地址。IG=1,表示组地址,用来进行多播。因此,IEEE 只分配地址字段前三个字节中的 23 位。
网卡有个模式叫做混杂模式。一般情况下,网卡往往只会接收目的地址是它的数据包而不会接收目的地址不是它的数据包。混杂模式就是接收所有经过网卡的数据包,包括不是发给本机的包。默认情况下,网卡只把发给本机的包(包括广播包)传递给上层程序,其他的包一律丢弃。嗅探器(Sniffer)就使用了设置为混杂方式的网络适配器(嗅探器是软件咳咳)
Linux 下设置混杂模式的方法如下:(貌似mac不可以用,我这个是连接上的服务器,也有可能是网卡的问题)
取消请使用:
ifconfig eth0 -promisc
MAC帧的格式
前两个字段分别为 6 字节长的目的地址和源地址字段。
第三个字段是 2 字节的类型字段,用来标志上一层使用的是什么协议,以便把收到的 MAC 帧的数据上交给上一层的这个协议。例如,当类型字段的值是 0 x0800 时,就表示上层使用的是 IP 数据报。若类型字段的值为 0 x8137, 则表示该帧是由 Novell IPX 发过来的。
第四个字段是数据字段,最后一个字段是 4 字节的帧检验序列 FCS(使用 CRC 检验)。
交换机的三种交换模式
直通转发模式(Cut—through)
指交换机在接收到帧后,一般只要接收到帧的前6字节(目的MAC地址6字节),就已经知道了目的地了,不进行缓存和奇偶校验,而是直接转发到目的端口。转发反应时间非常短,同时也存在以下3方面的问题:转发残帧、转发错误帧和容易拥塞。
存储转发模式(Store—forward)
指交换机首先在缓冲区中存储整个接收到的封装数据包,然后使用CRC检测法检查数据包是否正确,如果正确,交换机便从地址表中寻找目的端口地址,地址得到后,即建立两个端口的连接并开始传输数据。如果不正确,表明该数据中包含有一个或一个以上的错误,则将予以丢弃。除
了检查CRC外,存储转发交换机还将检查整个数据帧,当发现超短帧或超长帧等错误时,也会自动将其过滤掉。优点是没有残帧或错误帧的转发,减少了潜在的不必要数据转发,提高了网络传输效率。缺点是转发延迟要比直通式长得多。同时,存储转发式交换机通常也需要更大量的内存空间来保存帧。
准直通转发模式(Interim cut—trough switch)
是对直通转发模式的一种简改进(采用一种特殊的缓存:FIFO),只转发长度至少为64B的帧,从而避免了残帧的转发。
以太网的扩展
在物理层扩展以太网
用多个集线器连成更大的以太网,这样做可以有以下两个好处。第一,使以太网上的计算机能够进行通信。第二,扩大了以太网覆盖的地理范围。
缺点是:第一,碰撞域中只能有一个站在发送数据,三个连在一起只能使用10 Mbits/s 的带宽。第二,如果不同的系使用不同的以太网技术(如数据率不同),如果一个使用 10 Mbit/s的适配器,而另外两个使用 10/100 Mbit/s 的适配器,那么用集线器连接起来后,大家都只能工作在 10 Mbit/s的速率。集线器基本上是个多接口(即多端口)的转发器,它并不能把帧进行缓存,那么就不可能用集线器将它们互连起来。
在数据链路层扩展以太网
扩展以太网更常用的方法是在数据链路层进行。
网桥的连接模式
交换机的连接方式
一开始的时候,由于硬件水平不是很发达,人们为了提高局域网效率,减少广播风暴的出现,他们生产了网桥,然后他们把一个局域网一分为二,中间用网桥连接,这样A发给BCD的数据就不会再广播到EFGH了(网桥发现如果数据包不是转发给下面这个子网的,它会自动丢弃此包),只有从A发到EFGH的数据包才能通过网桥,到达另外一个子网(网桥发现如果数据包是转发给下面这个子网的,它才会把包转发给这个子网)。
在某种程度上,可以把交换机看做一种特殊的多口的网桥。交换机也称交换式集线器(switching hub),或者第二层交换机(L2 switch),强调这种交换机工作在数据链路层。
以太网交换机的特点
- 并行性,即能同时连通多对接口,使多对主机能同时通信。相互通信的主机都是独占传输媒体,无碰撞地传输数据。
- 接口有存储器,能在输出端口繁忙时把到来的帧进行缓存。
- 是即插即用设备,其内部的帧交换表(又称为地址表)是通过自学习算法自动地逐渐建立起来的。
- 有专用的交换结构芯片,用硬件转发,其转发速率要比使用软件转发的网桥快很多。
有一些交换机使用的是直通(cut-through)的交换方式。直通交换不必把整个数据帧先缓存后再进行处理,而是在接收数据帧的同时就立即按数据帧的目的 MAC 地址决定该帧的转发接口,因而提高了帧的转发速度。
虚拟局域网 vlan
计算机 B1~B3 同属于虚拟局域网 VLAN2。当 B1 向工作组内成员发送数据时,计算机 B2 和 B3 将会收到广播的信息,虽然它们没有和 B1 连在同一个以太网交换机上。相反,B1 向工作组内成员发送数据时,计算机 A1, A2 和 C1 都不会收到 B1 发出的广播信息,虽然它们都与 B1 连接在同一个以太网交换机上。以太网交换机不向虚拟局域网以外的计算机传送 B1 的广播信息。(虽然不在不同区域,但仍然如在连着一个集线器一样的感觉)
这样,虚拟局域网限制了接收广播信息的计算机数,使得网络不会因传播过多的广播信息(即所谓的“广播风暴”)而引起性能恶化。在类型前面加上了VLAN的标记标记VLAN。
高速以太网
根据以下公式,我们可以提高数据率,从而达到增大带宽的作用。但不过呢,此时 $T_0$ 会减少(因为数据率增大,而帧长不变,一个帧的发送速度变快了),导致信道利用率减少,因此我们需要减少 $\tau$,我们可以减短电缆的长度。这样我们就可以提高以太网的带宽。