HDLC(高级数据链路控制,High-Level Data Link Control)的帧结构
HDLC(高级数据链路控制,High-Level Data Link Control)是一种面向比特的同步数据链路层协议,其帧结构如下:
标准 HDLC 帧格式
+-----------+--------+-----------+----------+----------+-----------+
| 标志字段 | 地址字段 | 控制字段 | 信息字段 | 帧校验序列 | 标志字段 |
| (1字节) | (1字节) | (1字节) | (可变长) | (2字节) | (1字节) |
| 01111110 | | | | | 01111110 |
+-----------+--------+-----------+----------+----------+-----------+
各字段详细说明
- 标志字段 (Flag)
- 固定为
01111110
(0x7E) - 用于标识帧的开始和结束
- 在两个帧之间只需一个标志字段(即前一帧的结束标志可作为下一帧的开始标志)
- 固定为
- 地址字段 (Address)
- 通常为1字节,但可通过扩展机制延长
- 在点对点链路中主要用于区分命令和响应
- 控制字段 (Control)
- 1字节(可扩展为2字节)
- 定义帧类型和控制信息:
- 信息帧(I帧):用于传输用户数据,包含发送序号N(S)和接收序号N(R)
- 监控帧(S帧):用于流量控制和差错控制,如RR(接收就绪)、RNR(接收未就绪)、REJ(拒绝)
- 无编号帧(U帧):用于链路控制,如设置模式、断开连接等
- 信息字段 (Information)
- 可变长度(可以为0)
- 包含实际要传输的用户数据
- 在监控帧和无编号帧中通常不存在
- 帧校验序列 (FCS)
- 通常为2字节(CRC-16),也可使用4字节(CRC-32)
- 校验范围:地址字段、控制字段和信息字段
- 用于检测传输错误
比特填充(零比特插入)
为了保证标志字段的唯一性,HDLC采用比特填充技术:
- 发送端:在数据流中每连续出现5个”1″后自动插入一个”0″
- 接收端:检测到5个连续”1″后的”0″则将其删除
这样可确保标志字段01111110
不会在数据部分意外出现。