数据链路层:组帧、差错控制与CRC/海明码。

3.1 数据链路层的功能

数据链路层工作于物理层之上,核心功能是在相邻节点间的单一通信链路上,以为基本单位实现数据的可靠传输与处理。

  • 链路:网络中两节点间的物理通道(双绞线、光纤、微波等)。
  • 数据链路:在物理链路基础上,通过硬件与软件实现数据传输协议构建的逻辑通道。

1. 为网络层提供服务

数据链路层向网络层提供以下三类服务:

服务类型 特点 适用场景
无确认的无连接服务 无需建立链路,直接发送,接收方不回确认,丢失帧由上层处理 实时通信、低误码率信道(如以太网)
有确认的无连接服务 无需建立链路,但每帧需确认,超时重传 误码率较高的无线通信
有确认的面向连接服务 建立链路 → 传输帧 → 释放链路,每帧确认,可靠性最高 对可靠性和实时性要求严格的场景

注意:无确认的面向连接服务在实际中不存在。

2. 链路管理

  • 数据链路层连接的建立、维持和释放过程(主要针对面向连接的服务)。
  • 包括:确认对方就绪状态、交换初始化信息、维持连接、释放连接。
  • 多站点共享信道时的资源分配与管理也属于链路管理范畴。

3. 帧定界、帧同步与透明传输

概念 定义
帧结构 在网络层数据报前后添加首部和尾部(含控制信息)
帧定界 利用首部和尾部界定帧的边界
帧同步 接收方从比特流中精准识别帧的起始与结束位置
透明传输 数据链路层不干预数据内容,通过机制避免数据中特殊字符被误判为帧边界
MTU 最大传送单元,平衡传输效率与可靠性

4. 流量控制

  • 目的:限制发送方的发送速率,使其不超过接收方的接收能力,避免数据丢失或缓冲区溢出。

不同层的流量控制

层次 控制对象
数据链路层 相邻节点之间
网络层 整个网络
传输层 端到端

注意:OSI体系中流量控制主要在数据链路层;TCP/IP体系中主要在传输层。

5. 差错控制

  • 目的:发送方确定接收方是否正确收到数据。
差错类型 描述 处理方式
位错 帧中某些位出现差错 CRC检错 + ARQ重传
帧错 帧丢失、重复或失序 定时器 + 编号机制

3.2 组帧

四种组帧方法对比

方法 原理 优点 缺点
字符计数法 帧头部用计数字段标明帧内字符数 简单直接 计数字段出错会导致帧同步失效
字符填充的首尾定界符法 用SOH/EOT标识帧边界,数据中特殊字符前加转义字符ESC 定界符明显,便于识别 需字符填充,增加复杂性
零比特填充的首尾标志法 用01111110标识边界,数据中每5个1后插入0 比特级操作,适合硬件实现 需填充/移除逻辑
违规编码法 使用正常编码中不出现的码组标识边界 无需填充,识别简单 仅适用于冗余编码环境

3.3 差错控制

差错控制策略

  • ARQ(自动重传请求):检测出错时通知发送端重发,直到正确接收。
  • FEC(前向纠错):检测出错时能定位并纠正错误。

3.3.1 检错编码

1. 奇偶校验码

  • 在数据末尾添加一位校验位。
  • 奇校验:数据中1的个数为奇数时校验位=0,偶数时=1。
  • 偶校验:数据中1的个数为偶数时校验位=0,奇数时=1。
  • 优点:实现简单,计算开销低。
  • 缺点:只能检测奇数个比特错误,无法检测偶数个错误。

2. 循环冗余码(CRC)

  • 将数据视为多项式,通过生成多项式进行模2除法,余数作为校验码(FCS)附加到数据后。
  • 模2除法:加法不进位,减法不借位(异或操作)。

CRC编码步骤

  1. 双方商定生成多项式$G(x)$,设$G(x)$有$r+1$位,最高位和最低位必须为1。
  2. 在帧尾部加上$r$个0。
  3. 用$G(x)$对扩展后的数据进行模2除法,得到余数$R(x)$(FCS)。
  4. 将校验码附加在原始数据之后传输。
  5. 接收端用$G(x)$整除收到的数据帧,余数为0则无差错,否则丢弃。

3.3.2 纠错编码

海明码

  • 在数据中插入冗余校验位,使数据和校验位的组合能唯一标识错误位置。

关键概念

  • 海明距离:两个二进制字符串之间相应位不同的位数。
  • 检错d位:编码集海明距离至少为$d+1$。
  • 纠错d位:编码集海明距离至少为$2d+1$。

冗余校验位数量

  • 设数据位数为$n$,校验位数为$r$,需满足:$2^r \geq n + r + 1$
  • 校验位插入位置:自右向左$2^i$(1,2,4,8…)位置。

习题

  1. 在数据链路层中,以下哪种服务适用于实时通信或误码率较低的通信信道?
    A. 无确认的无连接服务

  2. 在数据链路层中,透明传输的含义是:
    C. 数据在传输过程中不被修改或解释

  3. 在数据链路层中,流量控制的主要目的是:
    C. 限制发送方的数据流量

  4. 在数据链路层中,帧同步的主要作用是:
    A. 确定帧的起始与终止

  5. 在字符计数法中,如果帧长度字段出错,会导致什么问题?
    D. 帧边界错误

  6. 在字符填充的首尾定界符法中,如果数据中出现与定界符相同的字符,发送方会如何处理?
    C. 在该字符前插入转义字符

  7. 在违规编码法中,帧的定界符通常采用什么方式实现?
    C. 使用物理层违规编码

  8. 奇偶校验码可以检测出(A. 奇数)个错误。

  9. 已知两个二进制字符串为10110和11011,它们的海明距离是(B. 3

  10. 若一个编码系统的海明距离为7,则它最多可以(C. 检错6位,纠错3位

  11. CRC计算题(谢希仁3-07)

    • 数据:1101011011,$G(x)=x^4+x+1$(10011)
    • 计算余数:
      • 数据后加4个0:11010110110000
      • 模2除10011,得余数1110
    • 最后一个1变0(1101011010)→ 能被整除?能发现(余数不为0)
    • 最后两个1变0(1101011000)→ 能发现
    • CRC检验后是否变成可靠传输?,CRC只能检测错误,不能纠错,且不能检测所有错误(如帧丢失、重复等)。
  12. 零比特填充题(谢希仁3-10)

    • 原始比特串:0110111111111100
      • 遇到5个1插入0:01101111101111100 → 01101111101111100
    • 接收端数据:0001110111110111110110
      • 删除5个1后的0:0001110111110111110110 → 00011101111111111110

笔记结束