3.1 数据链路层设计要点
帧管理构成了数据链路层工作的核心
3.1.1 为网络层提供的服务
数据链路层为网络层提供服务,最主要的服务是将数据从源机器的网络层传输到目标机器的网络层。
主要以下三种:
1.无确认的无连接服务
2.有确认的无连接服务
3.有确认的面向连接服务
3.1.2 成帧
服务:物理层->数据链路层->网络层
物理层接收原始位流,递交给目标主机,位流可能出错。检测和纠错则是数据链路层的任务。为完成该任务,需要将位流分解成离散的帧
(就是把数据分成一小块一小块以检查其在传输过程中是否发生了错误->标识每一帧的起始和结束位置)。
成帧方法:
1.字符计数法
2.含字节填充的分界符法
3.含位填充的分界标识法
4.物理层编码违例法
说明:很多数据链路层协议使用字符计数法和其他某一种方法,以保证额外的安全性
字符计数法:
如图所示,每一帧第一个数字表示该帧的位数
一旦出错,目标方就会失去同步。
含字节填充的分界符法:
使用标志字节作为开始和结束。
若接收方失去同步,则只需搜索标志字节就能找到当前帧的结束位置。两个连续的标志字节代表了当前帧的结束和下一个帧的开始。
若数据段出现了标志字节则使用字节填充技术来区分,如图所示。若FLAG出现在数据段中,则在其前面填充ESC表示这个FLAG是数据,若ESC也出现在数据段中,则在其前面再填充一个ESC表示第二个ESC是数据。
缺点:紧紧地依赖于8位字符的模式
说明:这里用的字节填充方法是ppp协议中使用的填充方法的一个略微简化的形式。
含位填充的分界标识法:
允许数据帧包含任意长度的位,也允许每个字符有任意长度的位。
开始结束都使用标识字节:01111110
为避免数据段中出现标识字符,遇到5个连续的1自动在位输出流中填充一个0.接收方遇到5个连续的1且其后一位是0时,会自动去掉0。
物理层编码违例法:
适用于物理介质上的编码方法中包含冗余信息的网络。
3.1.3 错误控制
在可靠的,面向连接的服务中,发送方需要确认数据是否送达。
通常使用的方法是接收方反馈一些特殊的控制帧,对于它所接收到的帧进行肯定的或者否定的确认。
发送方需要管理定时器(避免永远等待确认报文)和序列号(避免同一个帧多次传递到网络层)。
3.1.4 流控制
目的:防止发送方发送帧的速度超过接收方能够接收这些帧的速度,使接收方被淹没
方法:基于反馈的流控制
基于速率的流控制
数据链路层使用的是基于反馈的流控制
3.2 错误检测和纠正
由于物理过程而产生的错误,在有些介质上常常是突发性的,而不是单个的。突发性的错误与孤立的,单个位的错误相比,既有优点也有缺点。
突发性的错误往往是连续的多位 ,但是可能许多个数据帧中,只有一帧出错。因此它更难以纠正。
3.2.1纠错码
使用纠错码的技术通常也称为
前向纠错。
适用于错误发生较频繁的信道上。
3.2.2检错码
适用于高可靠信道。