03数据链路层

Lingfeng2025-03-13

03数据链路层

1. 数据链路层的设计

1.1 数据链路层的功能

  • 成帧(Framing):也叫组帧。将比特划分成数据帧来检测和纠正物理层在传输中可能出现的错误。
  • 差错控制(Error Control):处理传输中出现的差错
  • 流量控制(Flow Control):确保发送方的发送速率不大于接收方的处理速率

1.2 数据链路层提供的服务

  • 无确认无连接服务( Unacknowledged connectionless )
  • 有确认无连接服务( Acknowledged connectionless )
  • 有确认有连接服务(Acknowledged connection-oriented)

2. 成帧

  • 字节计数法:固定长度字节为一帧
  • 带字节填充的定界符法:使用定界符(FLAG),比如 01111110,即 0x7E,用于区分前后两个不同的帧
  • 带比特填充的定界符法:定界符:两个0比特之间,连续6个1比特,即01111110,0x7E
  • 物理层编码违例:选择的定界符不会在数据部分出现

2.1 基于帧进行的差错控制

链路存在的问题

  • 差错(incorrect):数据发送错误
  • 丢失(lost):接收方未收到
  • 乱序(out of order):先发后到,后发先到
  • 重复(repeatedly delivery):一次发送,多次接收

解决方法

  • 确认:接收方校验数据,并给发送法应答
  • 定时器:发送方启用定时器,防止丢失
  • 顺序号:接收方检查序号,防止乱序递交,重复递交

2.2 基于帧进行的流量控制

问题

  • 接收方的接收缓冲区溢出

解决方案

  • 基于反馈的流量控制
  • 基于速率的浏览控制

3. 差错控制

  • 码字:一个包含m个数据位和r个校验位的n位单元
  • 码率:码字中不含冗余部分所占的比例,可以用m/n表示

Definition (海明距离 Hamming distance)

两个码字之间不同对应比特的数目

Theorem (海明距离编码)

  • 为了检查出d个错(比特错),可以使用海明距离为 d+1 的编码
  • 为了纠正d个错,可以使用海明距离为 2d+1 的编码

3.1 检错码

  • 在被发送的数据块中,包含一些冗余信息,但这些信息只能使接收方推断是否发生错误,但不能推断哪位发生错误,接收方可以请求发送方重传数据

Definition (奇偶校验 Parity Check)

增加1位校验位,可以检查奇数位错误

Definition (校验和 Checksum)

  • 发送方进行 16 位二进制补码求和运算,计算结果取反,随数据一同发送。
  • 接收方进行 16 位二进制补码求和运算(包含校验和),结果非全1,则检测到错误。

Definition (循环冗余校验 Cyclic Redundancy Check,CRC)

  • 双方规定多项式
  • 将原始数据D乘以2n (相当于在D后面添加 n 个 0),产生k+n位二进制位模式,
  • 用G对该位模式做模2除,得到余数R(n位,不足n位前面用0补齐)即为CRC校验码

3.2 纠错码

  • 发送方在每个数据块中加入足够的冗余信息,使得接收方能够判断接收到的数据是否有错,并能纠正错误(定位出错的位置)

Definition (海明码)

  • 海明码在 数据位(Data bits) 中插入 冗余校验位(Parity bits),这些校验位用于错误检测和纠正。
  • 海明码的校验位存放在 位置(即 1、2、4、8…),这些校验位计算 特定比特的奇偶性

Theorem (海明码冗余位数计算)

设计单比特纠错海明码:给定个信息位,个校验位,纠正单比特错,需满足

Definition (RS码)

  • RS会将需要编码的流数据重新排列为以符号(Symbol)为单位的数据块
  • m表示符号的大小,如 m=4 表示每个符号由4位二进制数组成
  • 对于一个(n, k)RS编码,k为原始数据符号数,n-k为校验符号数
  • n-k=2t,t表示能够纠正的错误数

4. 基本的数据链路层协议

4.1 乌托邦式单工协议

Definition (乌托邦式单工协议假设)

  • 单工协议:数据单向运输
  • 完美信道:帧不会丢失或受损
  • 始终就绪:发送方/接收方的网络层始终处于就绪状态
  • 瞬间完成:发送方/接收方能够生成/处理无穷多数据

乌托邦:

  • 不处理任何流量控制或纠错工作
  • 接近于无确认的无连接服务,必须依赖更高层次解决上述问题

Definition (乌托邦式单工协议)

发送方

  • 在循环中不停发送
  • 在网络层获得数据
  • 封装成帧
  • 交给物理层
  • 完成一次发送
    接收方
  • 在循环中持续接收
  • 等待帧到达
  • 从物理层获得帧
  • 解封装,将帧中的数据传递给网络层
  • 完成一次接收

4.2 无错信道的停等式协议

Definition (无错信道的停等式协议假设)

  • 不再假设接收方能够处理以无限高速进来的数据
  • 但假设通信信道不会出错,并且数据传输保持单向,但需要双向传输链路(半双工物理信道)

Definition (无错信道的停等式协议)

发送方发送一帧后暂停,等待确认到达后发送下一帧。接收方完成接收后,回复确认接收。
发送方

  • 完成一帧发送
  • 等待确认到达
  • 确认到达后,发送下一帧
    接收方
  • 完成一帧接收后
  • 交给物理层一个哑帧
  • 作为成功接收上一帧的确认

4.3 有错信道上的单工停等式协议

Definition (有错信道上的单工停等式协议假设)

通信信道可能出错,导致:

  • 帧在传输过程中可能会被损坏,接收方能够检测出来
  • 帧在传输过程中可能会丢失,永远不可能到达接收方

Definition (有错信道上的单工停等式协议)

发送方

  • 初始化帧序号0,发送帧
  • 等待:正确的确认/错误的确认/超时
  • 正确确认:发送下一帧
  • 超时/错误确认:重发
    接收方
  • 初始化期待0号帧
  • 等待帧达到
  • 正确帧:交给网络层,并发送该帧确认
  • 错误帧:发送上一个成功接受帧的确认

Definition (信道利用率)

5. 流量控制

Definition (滑动窗口)

  • 发送窗口(SWND):在收到对方确认的信息之前,可以连续发出的最多数据帧数
  • 接收窗口(RWND):可以连续接收的最多数据帧数

5.1 回退N(Go-Back-N)协议

Definition (回退N协议)

发送窗口大于1,接收窗口为1。当接收端受到一个出错帧或乱序帧,丢弃所有的后续真,并且不为这些帧发送确认。发送端超时后,重传所有未被确认的帧

5.2 选择性重传(Selective Repeat)协议

Definition (选择性重传协议)

发送窗口大于1,接受窗口大于1。若发送方发出连续的若干帧后,收到对其中一帧的否认帧,或某一帧的定时器超时,则只重传改出错帧或计时器超时的数据帧。

Theorem (选择重传协议滑动窗口长度)

6. 数据链路协议实例

6.1 PPP协议

Definition (PPP协议)

PPP协议,全称是 Point-to-Point Protocol(点对点协议),是一种在两个节点之间直接通信的网络层下的数据链路层协议,用于建立、配置、维护和拆除点对点连接。

Definition (字节填充)

  • 避免在信息字段中出现和标志字段一样的比特组合(0X7E)
  • 当PPP使用异步传输时,定义转义字符0X7D,并使用字节填充
  • 将信息字段中出现的0x7E 字节转变成为2字节序列(0x7D, 0x5E)
  • 若信息字段中出现一个0x7D 字节, 则将其转变成为2字节序列(0x7D, 0x5D)
  • 若信息字段中出现 ASCII 码的控制字符(即数值小于 0x20 的字符),则在该字符前面要加入一个 0x7D 字节,同时将该字符的编码加以改变
    在发送端进行了字节填充,链路上传递的信息字节数超过原来的信息字节数。接收端进行字节填充相反的工作,恢复为原来的信息

Definition (零比特填充)

PPP协议用在SONET/SDH链路时,使用同步传输(一连串的比特连续传送),不是异步传输(逐个字符地传送)

  • 信息字段中出现了和标志字段 F 完全一样的 8 比特组合(0x7E)
  • 发送端在 5 个连 1 之后填入 0 比特再发送出去;
  • 在接收端把 5 个连 1 之后的 0 比特删除

6.2 PPPoE

Definition (PPPoE(Point-to-Point Protocol over Ethernet))

提供在以太网链路上的PPP连接

Last Updated 12/13/2025, 12:57:16 PM