HDLC协议介绍

1  HDLC协议概述网络

1.1  HDLC协议产生背景数据结构

七十年代初,IBM公司率先提出了面向比特的同步数据控制规程SDLC(SynchronousData Link Control)。随后,ANSI和ISO均采纳并发展了SDLC,并分别提出了本身的标准:ANSI的高级通信控制过程ADCCP(Advanced Data Communication Control Procedure),ISO的高级数据链路控制规程————HDLC(High_level Data Link Control)。并发

HDLC是面向比特的数据链路控制协议的典型表明,该协议不依赖于任何一种字符编码集;数据报文可透明传输,用于实现透明传输的“0比特插入法”易于硬件实现;全双工通讯,有较高的数据链路传输效率;全部帧采用CRC检验,对信息帧进行顺序编号,可防止漏收或重份,传输可靠性高;传输控制功能与处理功能分离,具备较大灵活性。异步

1.2  HDLC协议特色和格式工具

链路控制协议着重于对分段成物理块或包的数据的逻辑传输,块或包由起始标志引导并由终止标志结束,也称为帧。帧是每一个控制、每一个响应以及用协议传输的全部信息的媒体和工具。全部面向比特的数据链路控制协议均采用统一的帧格式,不管是数据仍是单独的控制信息均以帧为单位传送。测试

每一个帧前、后均有一标志码01111110,用做帧的起始、终止指示帧的同步。标志码不容许在帧的内部出现,以避免引发畸意。为保证标志码的惟一性但又兼顾帧内数据的透明性,能够采用“0比特插入法”来解决。该法在发送端监视除标志码之外的全部字段,当发现有连续的5个“1”出现时,便在其后添加一个“0”,而后继续发送后继的比特流。在接收端,一样监视除除标志码之外的全部字段。当连续发现5个“1”出现后,若其后一个比特为“0”,则自动删除它,以恢复原来的比特流;若发现连续6个连“1”,则多是插入的“0”发生错误,也多是收到了终止标志码。编码

做为面向比特的同步数据控制协议的典型,HDLC协议具备以下特色:spa

一、协议不依赖于任何一种字符编码集;设计

二、数据报文可透明传输,用于透明传输的“0比特插入法”易于硬件实现;orm

三、全双工通信,没必要等待确承认连续发送数据,有较高的数据链路传输效率;

四、全部帧均采用CRC校验,对信息帧进行顺序编号,可防止漏收或重收,传输可靠性高;

五、传输控制功能与处理功能分离,具备较大的灵活性和较完善的控制功能。

因为以上特色,目前网络设计及整机内部通信设计广泛使用HDLC数据链路控制协议。

2  HDLC协议的操做方式

HDLC是通用的数据链路控制协议,当开始创建数据链路时,容许选用特定的操做方式。所谓链路操做方式,通俗地讲就是以主节点方式操做,仍是以从节点方式操做,或者是两者兼备。

在链路上用于控制目的的节点称为主节点,其余的受主节点控制的节点称为从节点。主节点负责对数据流进行组织,而且对数据上的差错实施恢复。由主节点发往从节点的帧称为命令帧,而由从节点返回主节点的帧称为响应帧。连有多个节点的链路一般使用轮询技术,轮询其余节点的节点为主节点,而在点到点链路中每一个节点都可为主节点。在一个节点点链接多条链路的状况下,该节点对于一些链路而言多是主节点,而对另一些链路而言有多是从节点。

HDLC中经常使用的操做方式有3种:

(1)正常响应方式 NRM

正常响应方式 NRM(Normal Response Mode)一种非平衡数据链路操做方式,有时也称为非平衡正常响应方式。该操做方式使用于面向终端的点到点或一点到多点的链路。在这种操做方式下,传输过程由主节点启动,从节点只有收到主节点某个命令帧后,才能做为响应向主节点传输信息。响应信息能够由一个或多个帧组成,若信息由多个帧组成,则应指出哪一帧是最后一帧。主节点负责管理整个链路,且具备轮询、选择从节点及及向从节点发送命令的权利,同时也负责对超时、重发及各种恢复操做的控制。

(2)异步响应方式 ARM

异步响应方式 ARM(Asynchronous Response Mode)也是一种非平衡数据链路操做方式,与NRM不一样的是,ARM下的传输过程由从节点启动。从节点主动发送给主节点的一个或一组帧中可包含有信息,

也能够是仅以控制为目的而发的帧。在这种操做方式下,由从节点来控制超时和重发。该方式对采用轮询方式的多节点点链路来讲是比不可少的。

(3)异步平衡方式ABM

异步平衡方式ABM(Asynchronous Balanced Mode)是一种容许任何节点来启动传输的操做方式。为了提升链路传输效率,节点之间在两个方向上都须要有较高的信息传输量。在这种操做方式下,

任什么时候候任何节点都能启动传输操做,每一个节点点便可以做为主节点又能够做为从节点,即每一个节点都是组合节点。各个节点都有相同的一组协议,任何节点均可以发送或接受命令,也能够给出应答,而且各节点对差错恢复过程都负有相同的责任。

3  HDLC协议的帧格式

在HDLC中,数据和控制报文均以帧的标准格式传送。HDLC中的帧相似于BSC的字符块,但不是独立传输的。HDLC的完整的帧由标志字段(F)、地址字段(A)、控制字段(C)、信息字段(I)、帧校验序列字段(FCS)等组成。HDLC帧数据结构如图1所示:


图1:HDLC帧数据结构图

3.1  标志字段(F)

标志字段为01111110的比特模式,用以标志帧的开始与结束,也能够做为帧与帧之间的填充字符。一般,在不进行帧传送的时刻,信道仍处于激活状态,在这种状态下,发送方不断地发送标志字段,而接收方则检测每个收到的标志字段,一旦发现某个标志字段后面再也不是一个标志字段,即可认为新的帧传动已经开始。采用“0比特插入法”能够实现数据的透明传输。

发送端在两个标志字段之间的比特序列中,若是检查出连续的5个1,无论它后面的比特位是0或1,都增长1个0;在接收端,在2个标志字段之间的比特序列中检查出连续的5个1以后就删除1个0。

3.2  地址段(A)

当地址字段的首位为1时表示地址字段为8位;当首位为0时表示地址字段为16位。

地址字段的内容取决于所采用的操做方式,有主节点、从节点、组合节点之分。每一个从节点与组合节点都被分配一个惟一的地址,命令帧中的地址字段携带的是对方节点的地址,而响应帧中的地址字段所携带的地址是本节点的地址。某一地址也可分配给不止一个节点,这种地址称为组地址,利用一个组地址传输的帧能被组内全部拥有该地址的节点接收。但当一个节点或组合节点发送响应时,它仍应当用它惟一的地址。

还能够用全“1”地址来表示包含全部节点的地址,称为广播地址,含有广播地址的帧传送给链路上全部的节点。

另外还规定全0的地址为无节点地址,不分配给任何节点,仅做为测试用。

3.3  控制字段(C)

控制字段用于构成各类命令及响应,以便对链路进行监视与控制。发送方主节点或组合节点利用控制字段来通知被寻址的从节点或组合节点执行约定的操做;相反,从节点用该字段做为对命令的响应,报告已经完成的操做或状态的变化。

该字段是HDLC的关键。控制字段中的第一位或第一位、第二位表示传送帧的类型即信息帧(I帧)、监控帧(S帧)和无编号帧(U帧)3种不一样类型的帧。控制字段的第五位是P/F位,即轮询/终止位(POLL/Final)位。

控制字段中第1或第一、2位表示传送帧的类型,第1位为“0”表示是信息帧,第一、2位为“10”是监控帧,“11”是无编号帧。

  信息帧中,二、三、4位为存放发送帧序号,5位为轮询位,当为1时,要求被轮询的从站给出响应,六、七、8位为下个预期要接收的帧的序号。

  监控帧中,三、4位为S帧类型编码。第5位为轮询/终止位,当为1时,表示接收方确认结束。

无编号帧,提供对链路的创建、拆除以及多种控制功能,用三、四、六、七、8这五个M位来定义,能够定义32种附加的命令或应答功能。

3.4  信息字段(I)

信息字段是网络层的用户数据,能够是任意的二进制比特串,长度未做限定,其上限由FCS字段或通信节点的缓冲容量来决定,目前国际上用得较多的是1000-2000比特,而下限能够是0,即无信息字段。可是监控帧中不可有信息字段。

3.5  帧校验序列字段

帧检验序列字段可使用16位CRC,对两个标志字段之间的整个帧的内容进行校验。FCS的生成多项式是CCITT V.41建议的X'16+X'12+X'5+1。

4  HDLC协议控制字段帧类型

HDLC有信息帧(I帧)、监控帧(S帧)和无编号帧(U帧)3种不一样类型的帧。每一种帧中的控制字段的格式及比特定义以下:

4.1  信息帧(I帧)

信息帧用于传送有效信息或数据,一般简称为I帧。I帧以控制字段第一位为0为标志。控制字段中的N(S)用于存放发送帧序列,以便发送方没必要等待确认而连续发送多帧。N(R)用于存放接收方下一个预期要接收的帧的序号。N(S)与N(R)均为3位二进制编码,可取值0-7。

N(S):b一、b2和b3,表示当前发送的信息帧的序号

N(R):b五、b6和b7,表示一个站已正确接收序号N

P/F位:b4,探寻/终止位

n       0表示没有意义

n       P=1(询问),若是从站有帧要发送,则能够向主站发送

n       F=1(终止),发送的最后一帧,表示从站已经发送结束。

P=1和F=1在帧交换过程当中成对出现。例如目前发送的帧序号为3,在已经正确接收序号为3及之前的各帧,要求对方下一次发送序号为4的帧时,可以使用探询位P=1去询问对方

4.2  监控帧(S帧)

监控帧用于差错控制和流量控制,一般称为S帧。S帧以控制字段第一位、二位为“10”来标志。S帧不带信息字段,只有6个字节即48个比特。S帧的控制字段的第3、四位为S帧类型编码,共有4种不一样的编码,分别是:

n       00--接受就绪(RR),由主节点或从节点发送。主节点可使用RR型S帧来轮询从节点,即但愿从节点传输编号为N(R)的I帧,若存在这样的帧,即可以进行传输,从节点也能够用RR型S帧来做响应,表示从节点但愿从主节点那里接收的下一个I帧的编号是N(R)。

n       01--拒绝(REJ),由主节点或从节点发送,用以要求发送方从编号为N(R)开始的帧及其后全部的帧进行重发,着也暗示N(R)之前的I帧以被正确接收。

n       10--接收未就绪(RNR), 表示编号小于N(R)的I帧已被收到,但目前正处于忙状态,还没有准备好接受编号为N(R)的I帧,这可用来对链路进行流量控制。

n       11--选择拒绝(SREJ), 它要求发送方发送编号为N(R)的单个I帧,并暗示其余编号的I帧已经所有确认。

接收就绪RR型S帧和接收未就绪型S帧有两个主要功能:首先,这两种类型的S帧用来表示从站已经准备好或未准备好信息;其次,确认编号小于N(R)的全部接收到的I帧。拒绝REJ和选择拒绝SREJ的S帧用于向对方节点指出发生了差错。 REJ帧用于GO-BACK-N策略,用以请求重发N(R)起始的全部帧,而N(R)之前的帧已被确认,当收到一个N(S)等于REJ型S帧的N(R)的I帧后,REJ状态便可清除。SREJ帧用于选择重发策略,当收到一个N(S)等于SREJ型帧的N(R)的I帧后,SREJ状态便可清除。

4.3  无编号帧(U帧)

无编号帧因其控制字段中不包含编号N(S)和N(R)而得名,简称U帧。U帧用于提供对链路的创建、拆除以及多种控制功能,这些控制功能用5个M位(M1,M2,M3,M4,M5)也称修正位来定义。5个M位能够定义32种附加的命令功能或32种应答功能,但目前有许可能是空缺的。

5  HDLC协议的应用特色

5.1  应用场合

就系统结构而言,HDLC适用于点到点或点到多点式的结构;就工做方式而言,HDLC适用于半双工或全双工;就传输方式而言,HDLC只用于同步传输;在传输速率方面考虑,HDLC经常使用于中高速传输。

5.2  传输效率

HDLC开始发送一帧后,就要接二连三地发完该帧;HDLC能够同时确认几个帧;HDLC中的每一个帧含有地址字段A,在多点结构中,每一个从节点只接收含有本节点地址的帧,所以主节点在选中一个从节点并与之通信的同时,不用拆链,即可以选择其余的节点通信,便可以同时与多个节点创建链路。

因为以上特色,HDLC具备较高的传输效率。

5.3  传输可靠性

HDLC中全部的帧(包括响应帧)都有FCS,I帧按窗口序号顺序编号,传输可靠性比异步通信高。

5.4  数据透明性

HDLC采用“0比特插入法”对数据进行透明传输,传输信息的比特组合模式无任何限制,处理简单。

5.5  信息传输格式

HDLC采用统一的帧格式来实现数据、命令、响应的传输,实现起来方便。

5.6  链路控制

HDLC利用改变一帧中的控制字段的编码格式来完成各类规定的链路操做功能,提供的是面向比特的传输功能。