第三章:数据链路层
数据链路层信道类型:
- 点对点通信
- 广播通信
使用一对多的广播通信方式
必须使用专用的共享通信协议来协调这些主机的数据发送
链路是一条无源的点到点物理线路段,中间没有任何其他的交换节点。一条链路只是一条通路的一个组成部分。或者物理链路。
数据链路,是将实现控制数据传输协议的硬件和软件加到链路上就构成了数据链路。或者路基链路。典型实现:适配器或者网卡。
链路层的三个基本问题
封装成帧(framing)
在一段数据的前后分别添加首部和尾部,构成一个帧。
首部和尾部的一个重要作用就是进行帧定界(确定帧的界限)
最大传输单元 MTU(Maximum Transfer Unit)规定了所能传送的帧的数据部分长度上限。
用控制字符作为帧定界符
控制字符 SOH(Start Of Header)放在一帧的最前面,表示帧的首部开始。
控制字符 EOT(End of Transmission)放在一帧的末尾,表示帧结束。
透明传输
当数据中的某个字节的二进制代码恰好和 SOH 或 EOT 一样,数据链路就会错误的“找到帧的边界”,导致错误。
透明:是指一个实际存在的事物看起来好像不存在一样,
数据链路层的透明传输是指:无论发送什么样的比特组合的数据,这些数据都能够按照原样没有差错的通过这个数据链路层。
“字节填充”或“字符填充”法解决透明传输的问题
差错检测
在传输过程中可能回产生比特差错:
在一段时间内,传输错误的比特占所传输比特总数的比特率称为误码率 BER(Bit Error Rate)
- 循环冗余检验 CRC (Cyclic Redundancy Check)原理
在发送端,先把数据划分为组,假定每组 k 个比特。
CRC 运算在每个组 M 后面再添加供差错检验用的 n 位冗余码,然后构成一个帧发送出去,一共发送(k + n)位。

CRC 冗余码的计算
用二进制的模 2 运算进行 2^n 乘 M 的运算,这相当于在 M 后面添加 n 个 0.
得到的(k + n)位的数除以实现定好的长度为(n + 1)位的除数 p,得出商是 Q,余数是 R,余数 R 比除数 P 少 1 位,即 R 是 n 位。
将余数 R 作为冗余码拼接在数据 M 后面,一起发送出去。
这种为了进行检错二添加的冗余码常称为帧检验序列 FCS(Frame Check Sequence)

帧检验序列 FCS
在数据后面加上的冗余码称为帧检验序列 FCS(Frame Check Sequence)
循环冗余检验 CRC 和帧检验序列 FCS 并不等同。
CRC 是一种常用的检错方法,而 FCS 是添加在数据后面的冗余码。
FCS 可以用 CRC 这种方法的得出,但 CRC 并非用来获得 FCS 的唯一方法。
广泛使用的生成多项式 P(X)

仅用循环冗余检验 CRC 差错检测技术只能做到无差错接受(accept)
凡是接受的帧(即不包括丢弃的帧),我们都可以以非常接近于 1 的概率认为这些帧在传输过程中没有产生差错。
凡是接收端数据链路层接受的帧均无差错。
- “无比特差错”与“无传输差错”是不同的
可靠传输:数据链路层的发送端发送什么,在接收端就收到什么。
传输差错两类:
比特差错;
传输差错:帧丢失、帧重复或帧失序等。
在数据链路层使用 CRC 检验,能够实现无比特差错的传输,但这还不是可靠传输。
做到可靠传输,还必须再加上帧编号、确认和重传等机制。
3.2 PPP 协议
对于点对点的链路,目前使用最广泛的数据链路层协议是点对点协议 PPP(Piont-to-Point Protocol)
PPP 协议在 1994 年已经成为互联网正式标准 [RFC 1661, STD51]

ppp 协议满足的要求
简单,首要要求
封装成帧,必须规定特殊的字符作为帧定界符
透明性,必须保证数据传输的透明性
多种网络协议,能够在同一条物理链路上同时支持多种网络层协议
多种类型链路,能够在多种类型的链路上运行
差错检验,能够对接收端接收到的帧进行检测,并且立即丢弃有差错的帧
检测连接状态,能够及时自动检测出链路是否处于正常工作状态
最大传输单元,必须对每一种类型的点对点链路设置最大传输单元 MTU 的标准默认值,促进各种实现之间的互操作性。
网络层地址协商,必须提供一种机制使通信的两个网络层实体能够通过协商知道或能够配置彼此的网络层地址。
数据压缩协商,必须提供一种方法,来协商使用数据压缩算法。
PPP 协议的组成
一个将 IP 数据报封装到串行链路的方法
一个链路控制协议 LCP(Link Control Protocol)
一套网络控制协议 NCP(Network Control Protocol)
PPP 是面向字节的,所有的 PPP 帧的长度是整数字节。
PPP 协议的工作状态
用户拨号接入 ISP 之后,就建立了一条从用户到个人电脑的 ISP 的物理连接。
用户个人电脑向 ISP 发送一系列的链路控制协议 LCP 分组(封装成多个 PPP 帧),以便建立 LCP 连接。
之后进行网络层配置。网络层连接,收回原来分配出去的 IP 地址。
当用户通信完毕时,NCP 释放网络层连接,收回原来分配出去的 IP 地址。 LCP 释放数据链路层连接,最后释放的是物理层的连接。
透明传送,字节填充,零比特填充
透明传输问题
当 PPP 在异步传输时,使用字节填充法
当 PPP 用在同步传输链路时,采用零比特填充法
字节填充
帧开始符 7E
字节填充 7D

零比特填充
发送端在 5 个连 1 之后填入比特 0,再发送出去
接收端删除填入的 0 比特
3.3 使用广播信道的数据链路层
局域网
以太网的两个标准
- DIX Ethernet V2:世界上第一个局域网产品(以太网)的规约
- IEEE 802.3:第一个 IEEE 的以太网标准
这两种标准的硬件实现可以在同一个局域网上互操作。两个标准差别很小,很多人也常把 802.3 局域网简称为“以太网”。
局域网数据链路层分为 2 个子层
逻辑链路控制 LLC(Logical Link Control)子层,与传输媒体无关。
媒体接入控制 MAC(Medium Access Control)子层:与传输媒体有关。

适配器的作用
【图】
计算机通过适配器和局域网进行通信
主要功能:
进行串行/并行转换
对数据进行缓存
在计算机的操作系统安装设备驱动程序
实现以太网协议
CSMA/CD协议概念及原理
CSDA/CD (Carrier Sense Multiple Access whit Collision Detection) 载波监听多点接入 / 碰撞检测
早期以太网将许多计算机接到一根总线上。总线通信易于实现广播通信,简单可靠。
为了实现一对一通信,将接收站的硬件地址写入帧首部中的目的地址字段中。仅当数据帧中的目的地址与适配器硬件地址一致时,才能接收这个数据帧。
总线缺点;多个站点同时发送,会产生发送碰撞或者冲突,倒是发送失败。
以太网采取的 2 种重要措施
采取较为灵活的无连接工作方式
不必先建立连接就可以直接发送数据
对发送的数据帧不进行编号,也不要求对方发回确认
提供不可靠的交付服务
尽最大努力交付
对有差错帧是否需要重传则由高层来决定
同一时间只能允许一台计算机发送
以太网采用最简单随机接入
使用 CSMA/CD 协议减少冲突发生的概率
发送数据都使用曼彻斯特(Manchester)编码
曼彻斯特编码的缺点:所占用频带宽度比原始基带信号增加了一倍。
协议的工作过程
- 多点接入:说明是总线型网络。许多计算机以多点接入的方式连接在一根总线上。
- 载波监听:即“边发送边监听”。不管在想要发送数据之前,还是在发生数据之中,每个站都必须不停的检测信道。
- 碰撞检测:适配器边发送数据,边检测信道上的信号电压的变化情况,电压摆动超过一定的门限值时,就认为总线上至少有两个站点在发送数据,表明产生了碰撞(或冲突)。
检测到碰撞后
- 适配器立即停止发送
- 等待一端随机时间后再次发送

因为信号传播时延对载波监听产生了影响,故需要进行碰撞检测
每一个站在自己发送数据之后一小段时间内,存在着遭遇可能碰撞的可能性。
最短帧长与争用期的关系
- 争用期
以太网端到端往返时延 2t(tao)称为争用期,或者碰撞窗口
具体的争用期时间 = 51.2 us
经过争用期这段时间还没有检测到碰撞,才能肯定这次发送不会发送碰撞。 - 碰撞后的重传时机
采用截断二进制指数退避(truncated binary exponential backoff)确定
发送碰撞后的站停止发送数据后,要退避一个随机时间后在发送数据。
基本退退避时间 2t
从整数集合 [0, 1, …, (2^k - 1)] 中随机取出一个数,记为 r。
重传所需要的时延 = r * 基本退避时间
参数 k = Min[重传次数, 10]
当重传达 16 次仍然不能成功时,即丢弃该帧,并且向高层报告。- 10 Mbit/s 以太网争用期的长度
争用期长度 = 51.2 us
对于 10 Mbit/s 以太网,在争用期内可以发送 512 bit ,即64字节。以太网在发送数据时,若是前 64 字节没有发生冲突,则后续的数据就不会发生冲突。
以太网规定了最短有效帧长度为 64 字节,饭长度小于 64 字节的帧都是由于冲突而异常终止的无效帧。应当将其丢弃。
- 10 Mbit/s 以太网争用期的长度
争用期的长度 = 51.2 us
对于 10 Mbit/s 以太网,在争用期内可以发送 512 bit 即 64 字节。
以太网最大端到端单程时延必须小于争用期的一半(即 25.6 us)
相当于以太网的最大端到端长度约为 5 km发送站检测到冲突后,立即停止发送数据帧,接着就发送 32 或者 48 比特的人为干扰信号(jamming signal)
以太网还规定了帧间最小间隔为 9.6 us
【图】
CSMA / CD协议的要点
CRC差错检测,求冗余码
【图】
集线器、转发器、网桥、以太网交换机的异同及其各自工作的层次
星形以太网 10BASE-T
以太网的信道利用率
因为碰撞,以太网的信道利用率并不能达到 100%。
假设:单程端到端传播时延 = t,则争用期长度 = 2t。检测到碰撞后不发送干扰信号。
设:帧长 = L(bit),数据发送速率 = C(bit/s),则帧的发送时间 T0 = L / C (s)
- 成功发送一个帧需要占用的信道时间时 T0 + t,比帧的发送时间要多一个单程端到端时延 t。
参数 a 与利用率
要提高以太网信道利用率,就必须减少 t 与 T0 之比。
在以太网中定义了参数 a = 以太网单程端到端时延 t 与帧的发送时间 T0 之比。
a = t / T0;
a 趋于 0 ,表示一发生碰撞就可以检测出来,并且立即停止发送,信道利用率很高。
a 越大,表示争用期占用的比例越大,没发送一次碰撞就浪费许多资源,信道利用率明显降低。
信道利用率的最大值 Smax
集线器的特点
- 使用电子器件来模拟实际电缆线的工作,因此整个系统仍然像一个传统的以太网那样运行。
- 使用集线器的以太网在逻辑上仍然是一个总线网,各工作站使用的还是 CSDA / CD 协议,并共享逻辑上的总线。
- 很像一个多接口的转发器,工作在物理层。
- 采用了专门芯片,进行自适应串音回拨抵消,减少了近端串音。
以太网的 MAC 层
MAC层的硬件地址
硬件地址又叫物理地址,或者 MAC 地址。
IEEE 802 标准为局域网规定了一种 48 位的全球地址,是指局域网上每一台计算机中固化在适配器的 ROM 中的地址。
若连接在局域网上的主机或路由器安装有多个适配器,这样的主机或路由器就有多个“地址”,更准确的说,这种 48 位“地址”应当时某个接口的标识符。
IEEE 注册管理机构 RA 负责像厂家分配前 3 个字节(即高 24 位)称为组织唯一标识符 OUI (Organizationally Unique Identifer)。
厂家自行指派后三个字节(即低 24 位)称为扩展标识符(extended identifier)。
必须保证生产出的适配器没有重复地址。
地址被固化在适配器的 ROM 中。
单站地址、组地址、广播地址
IEEE 规定地址字段的第 1 字节的最低位 I/G(Individual / Group)位。
单站地址:I / G 位 = 0。
组地址: I / G 位 = 1。组地址用来进行多播。
广播地址:所有 48 位都为 1(全 1)。只能作为目的地址使用。IEEE 把地址字段第 1 字节的最低 2 位规定为 G/L(Global / Local)位
全球管理:G / L位 = 0。厂商向IEEE购买的 OUI 都属于全球管理。
本地管理:G / L位 = 1。这时用户可以任意分配网络适配器上的地址。
- 适配器具有过滤功能
每收到一个 MAC 帧,先用硬件检查帧中的 MAC 地址。
如果时发往本站的帧则收下,然后再进行其他处理。
否则就将此帧丢弃,不再进行其他处理。
发往本站的帧,包括以下三种:
单播(unicast)帧;(一对一)
广播(broadcast)帧;(一对全体)
多播(multicast)帧;(一对多)
以混杂模式(promiscuous mode)工作的以太网适配器只要“听到”有帧在以太网上传输就都接收下来。
MAC 帧的格式
常用的以太网 MAC 帧格式有 2 中标准:
DIX Ethernet V2 标准
IEEE 的 802.3 标准
最常用的 MAC 帧是以太网 V2 的格式。





无效 MAC 帧
数据字段的长度与长度字段的值不一致;
帧的长度不是整数个字节;
用收到的帧检验序列 FCS 查出有差错;
数据字段的长度不在 46 ~ 1500 字节之间;
有效的 MAC 帧长度为 64 ~ 1518 字节之间;
对于检查出无效的 MAC 帧就简单的丢弃,以太网不负责重传丢弃的帧。
IEEE 802.3 MAC 与以太网 V2 MAC 帧格式的区别
现在市场上流行的都是以太网 V2 的 MAC 帧,但大家也常常把它称为 IEEE 802.3 标准的 MAC 帧。
了解网络适配器的主要功能及其工作在哪一层
扩展的以太网
在物理层扩展以太网
- 使用光纤扩展
- 使用集线器扩展
优点:
使原来属于不同碰撞域(冲突域)的计算机能够跨碰撞域通信。
扩大了以太网覆盖的地理范围。
缺点:
碰撞域增大了,总的吞吐量未提高。
如果使用不同的以太网技术(如数据率不同),那么就不能用集线器将他们互连起来。
碰撞域(collision domain)又称为冲突与,指网络中一个站点发出的帧会与其他站点发出的帧产生碰撞或者冲突的那部分网络。
碰撞域越大,发生碰撞的概率越高。
在数据链路层扩展以太网
更为常用。早期使用网桥,现在使用以太网交换机。
网桥:
工作在数据链路层;
根据 MAC 帧的目的地址对收到的帧进行转发和过滤。或者转发,或者丢弃。
交换机:
工作在数据链路层;
多端口的网桥;
可明显地提高以太网得性能;
以太网交换机得特点
实际上是一个多接口网桥;
通常有十几个或者更多的接口;
每个接口都直接与一个单台主机或另外一个以太网交换机相连,并且一般都出现在全双工方式;
以太网交换机具有并行性:
能同时连通多对接口,使多对主机能够同时通信;
相互通信得主机都独占传输媒体,无碰撞地传输数据;
每一个端口和连接到端口得主机构成了一个碰撞域;
以太网交换机的特点
接口有存储器;
即插即用;
其内部的帧交换表(又称为地址表)通过自学习算法自动地逐步建立起来,这种交换表就是一个内容可寻址存储器 CAM(Content addressable MeMory)
使用专用的交换结构芯片,用硬件转发,其转发速率要比使用软件转发的网桥快很多。以太网交换机的性能远远超过普通的集线器。且价格不贵。
以太网交换机的优点
每个用户独享宽带,增加了总容量
集线器:
N 个用户共享集线器提供的带宽 B;
平均每个用户仅占有 B / N 的带宽;
交换机:
交换机为每个端口提供带宽 B;
N 个用户,每个用户独占宽带 B;
交换机总容量达 B x N;- 以太网交换机的交换方式
存储转发方式:
把整个数据帧先缓存,再进行处理;
直通方式(cut-through)方式
节后数据帧的同时立即按数据帧的目的 MAC 地址决定该帧的转发接口。
缺点:不检查差错就直接将帧转发出去,有可能转发无效帧。
- 以太网交换机的自学习功能





- 消除回路:使用生成树协议(SPT)
生成树协议 STP(Spaning Tree Protocol):
不改变网络的实际拓扑,但在逻辑上切断某些链路,使得一台主机到所有其他的路径是无环路的树状结构,从而消除了兜圈子现象。
虚拟局域网
以太网存在的主要问题:
广播风暴;一个以太网是一个广播域,交换机之间的冗余链路形成广播风暴。
安全问题;交换机每个接口都处于一个独立的碰撞域(或冲突域)中,但所有计算机都处在同一个广播域中。
管理困难等;
- IEEE 802.3Q 对虚拟局域网 VLAN 定义
虚拟局域网 VLAN是由一些局域网网段构成的物理位置无关的逻辑组,而这些网段具有某些共同的需求。每一个 VLAN 的帧都有一个明确的标识符,指明发送这个帧的计算器属于哪一个 VLAN
虚拟局域网其实只是局域网给用户提供的一种服务,并不是一种新型的局域网。
虚拟局域网限制了接收广播的工作站数,使得网络不会因传播过多的广播信息(广播风暴)而引起性能恶化。
虚拟局域网的优点:
改善了性能
简化了管理
降低了成本
改善了安全性
划分虚拟局域网的方法
基于交换机端口
> 最简单、常用的方法。属于再第一层划分虚拟局域网的方法。但是不允许用户移动。
基于计算机网卡的 MAC 地址
> 根据用户计算机的 MAC 地址划分虚拟局域网。
> 属于在第二层划分虚拟局域网的方法。
> 允许用户移动
> 缺点:需要输入和管理大量的 MAC 地址。如果用户的 MAC 地址该变了,则需要管理员重新配置 VLAN
基于协议类型
> 根据以太网的第三个字段“类型”确定该类型的协议属于哪一个虚拟局域网。
> 属于第二层划分虚拟局域网的方法。
基于 IP 子网地址
> 根据以太网帧的第三个字段“类型”和 IP 分组。首部中的源 IP 地址字段确定该 IP 分组属于哪一个虚拟局域网。
> 属于在第三层划分虚拟局域网的方法。
基于高层应用或服务
根据高层应用或服务、或者他们的组合划分虚拟局域网。
更加灵活,但更加复杂。
3.5 Gbit 以太网
(待补充……)


