您现在的位置:首页 > 技术服务 > 技术资料

HDLC协议知识简介 --- 行业通信实用

 

1.1.1 介绍

HDLC协议,有时又称SDLC协议,是行业通信普遍采用的一种链路层协议。

HDLC协议规范参见ISO/IEC 13239标准文档。对于大部分行业通信的开发者和应用者,一般不需要对该标准做仔细的研究,因为其中相当多的内容我们用不到。

本文只描述HDLC协议的关键技术点,详细的介绍和说明请参考百度百科HDLC词条:http://baike.baidu.com/view/89174.htm


1.1.2 HDLC帧界定

SDLC/HDLC协议的标志符是一个8bit位组合,其格式为01111110(十六进制7E),即两个0中间夹着6个连续的1。一帧信息以标志符为起始,并以标志符作为结束,所以标志符也称为帧定界符。

HDLC协议的目标是能传输任意位组合的数据(即所谓的数据透明传输),同时标志符具有唯一性,即在数据序列中不能再出现01111110的序列。

为了达到透明传输的目的,发送方采用“0比特插入技术”,在发送信息帧时,对于除标志符以外的所有信息,只要遇到5个连续的1,就在其后自动插入1个0。接收方为恢复信息的原来格式,在接收时采用“0比特删除技术”,即除标志符外,当连续接收到5个1时,就自动删除1个0。


1.1.3 帧格式

HDLC完整的帧由标志字段(F)、地址字段(A)、控制字段(C)、信息字段(I)、帧校验序列字段(FCS)等组成:

标志字段(F):为标志符01111110,标志帧的起止。

地址字段(A):标识通信站点的地址,其中全1表示广播地址。

控制字段(C):确定帧类型。

信息字段(I):可变长字节的信息内容,必须是8位的整数倍,也可以为0长度。

帧校验序列(FCS):采用16位的CRC,对两个标志字段之间的整个帧的内容进行校验。

开始标志

Opening Flag

地址字段

Address Field

控制字段

Control Field

信息字段

Information Field

帧校验序列

Frame Check Sequence Field

结束标志

Closing Flag

01111110

1字节

1字节

可变长,N字节

2字节

01111110


1.1.4 帧类型与操作方式

HDLC协议根据控制字段把帧划分为信息帧I(Information)、 监控帧S(Supervisory)和无编号帧U(Unnumbered)三大类。并定义了NRM、ARM、ABM三种链路操作方式,约定通信端点之间如何主从,如何进行握手。

在实际应用中,我们只是利用HDLC的帧机制,透明传输用户自定义的数据包,一般不实现协议规定的帧类型和操作模式。用户根据行业通信的需要,采用自定义帧类型及地址字段。

FCS字段一般是必须的,为了保证数据的可靠性,CRC校验往往必不可少。

针对不同的应用,用户一般自定义链路操作方式,并不实现HDLC规范定义的操作方式。

 

1.1.5 实际应用的帧格式

实际应用的帧格式往往如下图所示:

开始标志

Opening Flag

用户自定义数据字段

Data Field

帧校验序列

Frame Check Sequence Field

结束标志

Closing Flag

01111110

可变长,N字节

2字节

01111110

 

由于HDLC很多情况下工作在低速线路上,为了避免包的延迟过长,要求数据字段尽可能的短,一般最长不超过256字节。