📅  最后修改于: 2023-12-03 15:01:07.597000             🧑  作者: Mango
HDLC(High-Level Data Link Control)是一种数据链路协议,用于在不可靠的通信信道上传输数据。HDLC帧由标识符、控制字段、数据字段、帧校验序列等组成。根据不同的控制字段,HDLC帧分为三种类型:信息帧、确认帧和无编号帧。
信息帧(I-frame)用于在两个节点之间传输数据。它包含了数据字段和帧序号,可以进行差错控制和流量控制。I-frame的控制字段值为0x00或0x10。
I-frame格式:
+-------+--------+-------+---------+-----------------+----------+
| Flag | Address| Control | Data |checksum(optional)| Flag |
+-------+--------+-------+---------+-----------------+----------+
| 01111110 | | 0x00/0x10 | DATA | FCS(optional) |01111110|
+-------+--------+-------+---------+-----------------+----------+
确认帧(S-frame)用于数据链路层的确认和控制流量,可以包含确认序号和请求发送序号。S-frame的控制字段值为0x01、0x09、0x11或0x19。
S-frame格式:
+-------+--------+-------+---------+-----------------+----------+
| Flag | Address| Control | Data |checksum(optional)| Flag |
+-------+--------+-------+---------+-----------------+----------+
| 01111110 | | 0x01/0x09/0x11/0x19 | DATA | FCS(optional) |01111110|
+-------+--------+-------+-------+-----------------+----------+
无编号帧(U-frame)用于链路控制、向对端发送指令等。它不包含帧序号,可以用来进行链路维护。U-frame的控制字段值为0x03、0x07、0x0B、0x13、0x17、0x1B。
U-frame格式:
+-------+--------+-------+---------+-----------------+----------+
| Flag | Address| Control | Data |checksum(optional)| Flag |
+-------+--------+-------+---------+-----------------+----------+
| 01111110 | | 0x03/0x07/0x0B/0x13/0x17/0x1B| DATA | FCS(optional) |01111110|
+-------+--------+-------+---------+-----------------+----------+
以上是HDLC帧的基本类型,程序员可以根据具体使用场景进行选择。