HDLC(高级数据链路控制,High-Level Data Link Control)的帧结构

HDLC(高级数据链路控制,High-Level Data Link Control)是一种面向比特的同步数据链路层协议,其帧结构如下:

标准 HDLC 帧格式

+-----------+--------+-----------+----------+----------+-----------+
| 标志字段  | 地址字段 | 控制字段 | 信息字段 | 帧校验序列 | 标志字段  |
| (1字节)   | (1字节) | (1字节)  | (可变长) | (2字节)   | (1字节)   |
| 01111110  |        |          |          |           | 01111110  |
+-----------+--------+-----------+----------+----------+-----------+

各字段详细说明

  1. 标志字段 (Flag)
    • 固定为 01111110 (0x7E)
    • 用于标识帧的开始和结束
    • 在两个帧之间只需一个标志字段(即前一帧的结束标志可作为下一帧的开始标志)
  2. 地址字段 (Address)
    • 通常为1字节,但可通过扩展机制延长
    • 在点对点链路中主要用于区分命令和响应
  3. 控制字段 (Control)
    • 1字节(可扩展为2字节)
    • 定义帧类型和控制信息:
      • 信息帧(I帧):用于传输用户数据,包含发送序号N(S)和接收序号N(R)
      • 监控帧(S帧):用于流量控制和差错控制,如RR(接收就绪)、RNR(接收未就绪)、REJ(拒绝)
      • 无编号帧(U帧):用于链路控制,如设置模式、断开连接等
  4. 信息字段 (Information)
    • 可变长度(可以为0)
    • 包含实际要传输的用户数据
    • 在监控帧和无编号帧中通常不存在
  5. 帧校验序列 (FCS)
    • 通常为2字节(CRC-16),也可使用4字节(CRC-32)
    • 校验范围:地址字段、控制字段和信息字段
    • 用于检测传输错误

比特填充(零比特插入)

为了保证标志字段的唯一性,HDLC采用比特填充技术:

  • 发送端:在数据流中每连续出现5个”1″后自动插入一个”0″
  • 接收端:检测到5个连续”1″后的”0″则将其删除

这样可确保标志字段01111110不会在数据部分意外出现。