数据链路层功能概述

数据链路层位于OSI模型的第二层,直接为网络层提供服务,负责在相邻节点间可靠地传输数据帧。核心功能包括:

  • 组帧/封装成帧:将网络层的数据包添加头部和尾部,形成可识别的数据帧。
  • 差错控制:检测并纠正传输过程中的比特错误,常用检错码(如CRC)或纠错码(如汉明码)。
  • 流量控制:协调发送方与接收方的速率,避免数据溢出(如滑动窗口协议)。
  • 可靠传输机制:通过确认(ACK)、超时重传等机制确保数据完整到达。

组帧/封装成帧

数据链路层通过添加特定格式的头部和尾部将原始数据包装成帧,常见方法包括:

  • 字符计数法:在帧头部指定帧的字符数,简单但易因计数错误导致同步问题。
  • 字符填充法:使用特殊字符(如DLE STX/DLE ETX)标记帧边界,需转义数据中的相同字符。
  • 比特填充法(如HDLC):用比特模式“01111110”标识帧首尾,遇到连续5个“1”自动插入“0”避免混淆。

示例:HDLC帧格式

| 标志域 (8bit) | 地址域 (8bit) | 控制域 (8bit) | 数据域 (可变) | CRC校验 (16/32bit) | 标志域 (8bit) |

差错控制

数据链路层通过以下技术保证数据完整性:

  • 奇偶校验:单比特检错,通过附加位使“1”的个数为奇/偶数。
  • 循环冗余校验(CRC):生成多项式除法余数作为校验码,检错能力强。
    CRC计算示例
    数据位为101001,生成多项式为$x^3 + x + 1$(对应1011),校验码为余数001。
  • 汉明码:可纠正单比特错误的纠错码,通过冗余位定位错误位置。

流量控制与可靠传输机制

流量控制
  • 停止-等待协议:发送方每发送一帧需等待接收方确认,效率低但实现简单。
  • 滑动窗口协议
    • 后退N帧(GBN):允许连续发送多帧,出错时重传所有未确认帧。
    • 选择重传(SR):仅重传错误帧,需缓存已接收的乱序帧。
可靠传输实现
  • 确认机制:接收方返回ACK(确认)或NAK(否定确认)。
  • 超时重传:发送方未收到ACK时重发帧(如TCP的RTO机制)。
  • 序号管理:帧头部包含序列号,避免重复接收或丢失检测。

滑动窗口示例
发送窗口大小=3时,可连续发送帧1、2、3,收到ACK1后窗口滑动至帧4、5、6。


关键技术对比

| 机制 | 优点 | 缺点 |
|---------------|-----------------------|-----------------------|
| CRC校验 | 高效,适合高速网络 | 仅检错,不纠错 |
| GBN协议 | 实现简单 | 带宽利用率低 |
| SR协议 | 高效利用带宽 | 缓存管理复杂 |

通过合理选择组帧方法、差错控制策略及流量控制协议,数据链路层能够平衡效率与可靠性,为上层提供稳定服务。

更多推荐