什么是HDLC?HDLC是什么意思?HDLC英文全称High level Data Link Control,高级数据链路控制,HDLC是一个在同步网上传输数据、面向位的数据链路层协议,它是个由1970年代IBM所提出的对称式资料连结控制(Synchronous Data Link Control,SDLC)所研发出来的ISO标准。
高级数据链路控制(HDLC)协议是基于的一种数据链路层协议,促进传送到下一层的数据在传输过程中能够准确地被接收(也就是差错释放中没有任何损失并且序列正确)。
HDLC 的另一个重要功能是流量控制,换句话说,一旦接收端收到数据,便能立即进行传输。
H DLC 具有两种不同的实现方式:高级数据链路控制正常响应模式即HDLC NRM(又称为SDLC)和 HDLC 链路访问过程平衡(LAPB)。
其中第二种使用更为普遍。
HDLC 是 X.25 栈的一部分。
HDLC 是面向比特的同步通信协议,主要为全双工点对点操作提供完整的数据透明度。
它支持对等链路,表现在每个链路终端都不具有永久性管理站的功能。
另一方面,HDLC NRM 具有一个永久基站以及一个或多个次站。
HDLC LAPB 是一种高效协议,为确保流量控制、差错监测和恢复它要求额外开销最小。
如果数据在两个方向上(全双工)相互传输,数据帧本身就会传送所需的信息从而确保数据完整性。
帧窗口是用于在接收第一个帧已经正确收到的确认之前发送复帧。
这就意味着在具有长“turn-around”时间滞后的情况下数据能够继续传送,而不需要停下来等待响应。
例如在卫星通信中会发生这种情形。
通常,帧分为三种类型:信息帧:在链路上传送数据,并封装OSI体系的高层;管理帧:用于实现流量控制和差错恢复功能;无编号帧:提供链路的初始化和终止操作。
协议结构Flag ― 该字段值恒为 0x7E。
Address Field ― 定义发送帧的次站地址,或基站发送帧的目的地。
该字段包括服务访问点(6比特)、命令/响应位(表示帧是否与节点发送的信息帧有关或帧是否被节点接收)、地址扩展位(通常设置为1字节长)。
当设置错误时,表示一个附加字节。
Extended Address ― HDLC 为基本格式提供了另一种扩展。
通过多方协定,Address Field 可以被扩展为多个字节。
Control Field ― 识别帧类型。
另外,根据帧类型划分,该字段还包括序列号、控制特性和差错跟踪。
FCS ― 帧校验序列(FCS)字段通过许可传输帧数据的完整性,使高层物理差错控制可以被校验。
2 HDLC协议概述HDLC(High-Level Data Link Control,高层数据链路协议)是一组用于在网络节点间传送数据的协议,是在数据链路层中广泛使用的一种协议。
在HDLC 协议中,数据被组成一个个的单元(称为帧),通过网络传输,由接收方确认收到,同时HDLC协议也管理数据流和数据发送的间隔时间。
HDLC协议中每帧所传输的数据可以含有任意数量的比特位,而且帧的开始和结束是靠约定的比特模式(标志)来定界的,是一种“面向比特”的协议。
HDLC的帧格式见图1。
地址是目的地址,控制字节根据不同的内容定义不同的帧类型,每帧中所传输的数据长度为8的任意整数倍,每帧数据都需要作CRC校验。
HDLC(高级数据链路控制规程)HDLC是可靠性高,高速传输的控制规程。
其特点如下:可进行任意位组合的传输;可不等待接收端的应答,连续传输数据;错误控制严密;适合于计算机间的通信。
HDLC相当于OSI基本参照模型的数据链路层部分的标准方式的一种。
HDLC的适用领域很广,近代协议的数据链路层大部分都是基于HDLC的。
HDLC是面向比特的链路控制规程,其链路监控功能通过一定的比特组合所表示的命令和响应来实现,这些监控比特和信息比特一起以帧的形式传送。
以下是ISO/IEC 3309标准规定的HDLC的基本帧结构。
其它的HDL C标准也有类似的HDLC帧结构。
每帧的起始和结束以“7E”(01111110)做标志,两个“7E”之间为数据段(含地址数据、控制数据、信息数据)和帧校验序列。
帧校验采用CRC算法,对除了插入的“零”以外的所有数据进行校验。
为了避免将数据中的“7E”误为标志,在发送端和接收端要相应地对数据流和帧校验序列进行“插零”及“删零”操作。
各种HDLC协议间的区别之一是帧校验序列的CRC算法不同,这种不同表现在几个方面:a、 HDLC帧校验序列的位数不同,如16位和32位等;b、 CRC生成多项式不同,如对于16位的CRC,CCITT V .41标准的多项式是x16+x12+x5+1,ANSI CRC-16标准的多项式是x16+x15+x2+1等;c、 CRC序列的起始化条件不同,如可以初始化为全“0”、全“1”等;d、 CRC计算结果的处理方式不同,如可以直接把CRC结果发送,或对CRC结果取反后再发送等;e、对接收到的数据做CRC校验时,合格判据不同,因为有了上述的不同处理自然会得到不同的结果,由此造成合格判据不同,例如有的标准以校验结果“1DOF”判为无错误[2]。
而有的ASIC芯片以校验结果“F0B8”判为无错误[3]。
HDLC协议 - HDLC——面向比特的同步协议:High Level Data Link Control(高级数据链路控制规程)。
一.特点与格式面向比特的协议中最有代表性的是IBM的同步数据链路控制规程SDLC(Synchronous Data Link Control),国际标准化组织ISO(International Standards Organization)的高级数据链路控制规程HDLC(High Level Data Link Control),美国国家标准协会(American National Standards Institute )的先进数据通信规程ADCCP ( Advanced Data Communications Control Procedure)。
这些协议的特点是所传输的一帧数据可以是任意位,而且它是靠约定的位组合模式,而不是靠特定字符来标志帧的开始和结束,故称"面向比特"的协议。
二.帧信息的分段SDLC/HDLC的一帧信息包括以下几个场(Field),所有场都是从最低有效位开始传送。
1. SDLC/HDLC标志字符SDLC/HDLC协议规定,所有信息传输必须以一个标志字符开始,且以同一个字符结束。
这个标志字符是01111110,称标志场(F)。
从开始标志到结束标志之间构成一个完整的信息单位,称为一帧(Frame)。
所有的信息是以帧的形式传输的,而标志字符提供了每一帧的边界。
接收端可以通过搜索"01111110"来探知帧的开头和结束,以此建立帧同步。
2.地址场和控制场在标志场之后,可以有一个地址场A(Address)和一个控制场C (Contro1)。
地址场用来规定与之通信的次站的地址。
控制场可规定若干个命令。
SDLC规定A场和C场的宽度为8位。
HDLC则允许A 场可为任意长度,C场为8位或16位。
接收方必须检查每个地址字节的第一位,如果为"0",则后边跟着另一个地址字节;若为"1",则该字节就是最后一个地址字节。
同理,如果控制场第一个字节的第一位为"0",则还有第二个控制场字节,否则就只有一个字节。
3.信息场跟在控制场之后的是信息场I(Information)。
I场包含有要传送的数据,亦成为数据场。
并不是每一帧都必须有信息场。
即信息场可以为0,当它为0时,则这一帧主要是控制命令。
4.帧校验场紧跟在信息场之后的是两字节的帧校验场,帧校验场称为FC (Frame Check)场,校验序列FCS(Frame check Sequence)。
SDLC /HDLC均采用16位循环冗余校验码CRC (Cyclic Redundancy Code),其生成多项式为CCITT多项式X^16+X^12+X^5+1。
除了标志场和自动插入的"0"位外,所有的信息都参加CRC计算。
CRC的编码器在发送码组时为每一码组加入冗余的监督码位。
接收时译码器可对在纠错范围内的错码进行纠正,对在校错范围内的错码进行校验,但不能纠正。
超出校、纠错范围之外的多位错误将不可能被校验发现。
HDLC协议 - 实际应用时的两个技术问题1."0"位插入/删除技术如上所述,SDLC/HDLC协议规定以01111110为标志字节,但在信息场中也完全有可能有同一种模式的字符,为了把它与标志区分开来,所以采取了"0"位插入和删除技术。
具体作法是发送端在发送所有信息(除标志字节外)时,只要遇到连续5个"1",就自动插入一个"0"当接收端在接收数据时(除标志字节)如果连续接收到5个"1",就自动将其后的一个"0"删除,以恢复信息的原有形式。
这种"0"位的插入和删除过程是由硬件自动完成的,比上述面向字符的"数据透明"容易实现。
2.SDLC/HDLC异常结束若在发送过程中出现错误,则SDLC/HDLC协议用异常结束(Abort)字符,或称失效序列使本帧作废。
在HDLC规程中7个连续的"1"被作为失效字符,而在SDLC中失效字符是8个连续的"1"。
当然在失效序列中不使用"0"位插入/删除技术。
SDLC/HDLC协议规定,在一帧之内不允许出现数据间隔。
在两帧信息之间,发送器可以连续输出标志字符序列,也可以输出连续的高电平,它被称为空闲(Idle)信号。