HDLC协议(一)——基本概念

主要参考百度百科。

1. 什么是HDLC

广域网简称WAN,是一种跨越超大的、地域性的计算机网络集合。通常跨省、市、甚至一个国家。广域网包括很多子网,子网可以是局域网;也可以是小型的广域网。由于串行通信有着传输距离远、成本低的特点,所以远距离、超远距离的通信中较常使用串行通信。广域网以及两种最常用的广域网链路层协议——PPP协议HDLC协议

HDLC就是一种面向比特的网络节点之间同步传输数据的数据链路层协议。

【注】:OSI是Open System Interconnect的缩写,意为开放式系统互联。开放系统互连参考模型 (Open System Interconnect 简称OSI)是国际标准化组织(ISO)和国际电报电话咨询委员会(CCITT)联合制定的开放系统互连参考模型,为开放式互连信息系统提供了一种功能结构的框架。它从低到高分别是:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层

HDLC(High-Level Data Link Control,高级数据链路控制),是链路层协议的一项国际标准,用以实现远程用户间资源共享以及信息交互。HDLC协议用以保证传送到下一层的数据在传输过程中能够准确地被接收,也就是差错释放中没有任何损失,并且序列正确。HDLC协议的另一个重要功能是流量控制,即一旦接收端收到数据,便能立即进行传输。

HDLC协议由ISO/IEC13239定义,于2002年修订,2007年再次讨论后定稿。在通信领域中,HDLC协议应用非常广泛,其工作方式可以支持半双工全双工传送,支持点到点、多点结构,支持交换型、非交换型信道。 

2. 简介

HDLC(High-level Data Link Control,高级数据链路控)协议是一种面向比特的高效链路层协议。一般情况下,HDLC通信协议IP核为三个部分,即外部接口模块、数据发送部分和数据接收部分。在这类面向比特的数据链路协议中,帧头和帧尾都是特定的二进制序列, 通过控制字段来实现对链路的监控,可以采用多种编码方式 实现高效的、可靠的透明传输。故其最大特点是不需要数据必须是规定字符集,对任何一种比特流,均可以实现透明的传输。

1974年,IBM公司率先提出了面向比特的同步数据链路控制规程SDLC(Synchronous Data Link Control)。随后,ANSI和ISO均采纳并发展了SDLC,并分别提出了自己的标准:

  • 1、ANSI的高级通信控制过程ADCCP(Advanced DataControl Procedure),
  • 2、 ISO的高级数据链路控制规程HDLC(High-level Data LinkContl)。

从此,HDLC协议开始得到了人们的广泛关注,并开始应用于通信领域的各个方面。

3.特点

HDLC协议使用统一的帧格式,运用方便;采用零比特插入法,易于硬件实现,且支持任意的位流传输,实现信息的透明传输;全双工通信,吞吐率高,在未收到应答帧的情况下,可连续发送信息帧,提高数据链路传输的效率;采用CRC帧校验序列,可防止漏帧,提高信息传输的可靠性。 

主要有四个特点:

  • 1·对于任何一种比特流都可透明传输。
  • 2·较高的数据链路传输效率。
  • 3·所有的帧都有帧校验序列(FCS),传输可靠性高。
  • 4·用统一的帧格式来实现传输。 

4. 基本配置

HDLC协议定义了3种类型的站、2种链路配置和3种数据传输方式。

4.1 三种类型的站如下:

  • (1)主站。主站发出的帧叫命令帧,负责对链路进行控制。
  • (2)从站。从站发出的帧叫响应帧,在主站的控制下进行操作。
  • (3)复合站。既具有主站的功能,也有从站的功能,既可以发送命令帧,也可以发送响应帧。

4.2 两种种链路配置如下:

  • (1)非平衡配置。既可用于点对点链路也可用于多点链路。这种链路由一个主站和多个从站组成,可以支持全双工半双工
  • (2)平衡配置。只能用于点对点链路。这种配置由两个复合站组成,同样支持全双工或半双工传输。

4.3 三种数据传输方式如下:

  • (1)正常响应方式(Normal Response Mode,NRM):这种方式适合不平衡配置,主站启动数据传输过程,从站只有收到命令时才能发送数据。
  • (2)异步平衡方式(Asynchronous Balanced Mode,ABM):这种方式适合两端都是复合站的平衡配置,任何一方都可以启动数据传输。
  • (3)异步响应方式(Asynchronous Response Mode,ARM):这种方式适合不平衡配置,从站在没有收到主站命令时,就可以启动数据传输服务。 

5. 帧类型

HDLC的帧类型包括以下3种:

(1)信息帧(l帧)。信息帧包含用户数据、该帧的编号和捎带的应答序列N(R)。I帧包含一位PF位,主站发出的命令帧是P,即询问(Polling);从站发出的响应帧是F位,即终止位(Final)。

在正常响应方式(NRM)下,主站发出的命令帧将PF置l,表示询问帧,也允许从站发送数据;从站响应主站的询问,可以发送多个响应帧表示,只将最后一个响应帧的PF置1就表示数据发送完毕。在异步响应方式(ARM)和异步平衡方式(ABM)时,P/F位用于控制U帧和S帧的交换过程。

(2)管理帧(S帧)。管理帧负责流量控制和差错控制,管理帧有4种,包括接收就绪(RR)、接收未就绪(RNR)、拒绝接收(REJ)和选择性拒绝接收(SREG)。

S帧的名称和功能:

(3)无编号帧(U帧)。U帧用于链路控制。U帧比较多,按其控制功能可以分为以下几类:

  • a)设置数据传输方式的命令帧和响应帧。
  • b)传输信息的命令帧和响应帧。
  • c)链路恢复的命令帧和响应帧。
  • d)其他的命令帧和响应帧。

HDLC帧的U帧的类型定义 :

6. 帧格式

 

(1)帧标志F。HDLC采用固定的标志字段01111110作为帧的边界。当接收端检测到一个F标志时就开始接收帧,在接收的过程中如果发现F标志就认为该帧结束了。在传输的数据中可能会含有和标志字段相同的字段,而导致接收端误以为数据传输结束,为了防止这种情况的发生,引入了位填充技术。发送站在发送的数据比特序列中一旦发现0后有5个1,就在第7位插入一个0。接收端要进行相反的操作,如果在接收端发现0后面有5个1,则检查第7位,如果是0,则将0删除;如果是1并且第8位是0,则认为是标志字段F,这样就保证了数据比特位中不会有和标志字段相同的字段。

(2)地址字段A。地址字段用在多点链路中,它是用来存放从站的地址的。一般的地址字段是8位长,也可以扩展采用更长的地址,但是都是8的整数倍。每一个8位组的最低位表示该8位是否是地址字段的末尾:1表示是最后的8位组;0表示后面还有地址组,其余的7位表示整个扩展字段。

(3)控制字段C。HDLC定义了3种不同的帧,可以根据控制字段区分,信息帧(l帧)不仅用来传送数据,而且捎带流量控制和差错控制的应答信号。管理帧(S帧)是在不使用捎带机制的情况下管理帧控制的传输过程。无编号帧(U帧)具有各种链路的控制功能。控制字段使用前1位或前2位用来区别不同格式的帧,基本控制字段长度是8位。扩展控制字段是16位。

控制字段中传输帧的类型用第1位或第1、第2位表示。在HDLC中有三种不同类型的帧,分别是信息帧、监控帧和无编号帧。信息帧对应的第1位为“0”,监控帧对应的第1位和第2位为“10”,无编号帧对应的第1位和第2位为“11”。所有帧的控制字段的第5位都相同,叫做P/F位。 在信息帧中,第2、3、4位表示的N(S)是发送帧的帧序号。第5位P/F是轮询位,其值为1时,被轮询的从站对主站的要求必须给出响应。第6、7、8位表示的N(R)是主站要接收的下一个帧的序号。 在监控帧中,第3、4位表示的是S帧的类型编码。第5位P/F是轮询/终止位,其值为1时,表明了接收方已经确认结束。 在无编号帧中,链路的建立、控制和断等多种功能都由其管控。各种功能由第2、3、4、6、7、8位这五个M位来表示,根据组合计算能够表示最多32种命令或应答的功能。  

(4)信息字段INFO。I帧和一部分的U帧含有控制字段。这个字段可以包含用户数据的所有比特序列,长度没有限制,但在使用时通常限定了长度。

(5)校验字段FCS。校验字段包含地址字段、控制字段、信息字段的校验和,但不包括标志字段。一般校验字段使用的是16bit的CRCCCITT标准的校验序列,也可以使用32bit的CRC-32校验序列。

7. 协商过程

随着通信的进步,通信信道的可靠性比过去已经有了非常大的改进。已经没有必要在数据链路层使用很复杂的协议(包括编号、检错重传等技术)来实现数据的可靠传输。因此,不可靠传输协议PPP已成为数据链路层主流协议,而可靠传输责任落到运输层TCP协议身上。

下面来讨论其链路协商的过程。

(1)协商建立过程:HDLC每隔10s后互相发送链路探测的协商报文,报文的收发顺序是由序号决定的,序号失序则造成链路中断。这种用来探询点到点链路是否**状态的报文称之为keepalive报文。

(2)传输报文过程:将IP报文封装在HDLC层上,数据传输过程中,仍然进行keep-alive的报文协商以探测链路的合法有效。

(3)超时断连阶段:当封装HDLC的接口连续3次(当接收包速率超过1000packets/s时为6次),无法收到对方对自己的递增序号的确认时,HDLC协议Line Protocol由Up向Down转变。此时链路处于瘫痪状态,数据无法通信。

简单的说,链路处于Down状态,当设备检测到载波或网管配置指示物理层可用时,HDLC发送一个UP事件,进入Establish阶段。启动链路检测定时器、初始化超时计数器,通过Keepalive报文交互建立连接,当收到对端链路检测帧时,将链路协议UP并进入Maintain阶段,链路始终处于UP状态、可承载网络层报文。