HDLC帧格式介绍

网络 网络管理
高级数据链路控制(High-Level Data Link Control或简称HDLC),是一个在同步网上传输 数据、面向比特的数据链路层协议,它是由国际标准化组织根据IBM公司的SDLC协议扩展开发而成的。

特点与格式

面向比特的协议中最有代表性的是IBM的同步数据链路控制规程SDLC(Synchronous Data Link Control),国际标准化组织ISO (International Standards Organization)的高级数据链路控制规程HDLC(High Level Data Link Control),美国国家标准协会(American National Standar ds Institute )的先进数据通信规程ADCCP ( Advanced Data Communications Control Procedure)。这些协议的特点是所传输的一帧数据可以是任意位,而且它是靠约定的位组合模式,而不是靠特定字符来标志帧的开始和结束,故称"面向比特"的协议。

HDLC帧格式介绍

帧信息的分段

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的编码器在发送码组时为每一码组加入冗余的监督码位。接收时译码器可对在纠错范围内的错码进行纠正,对在校错范围内的错码进行校验,但不能纠正。超出校、纠错范围之外的多位错误将不可能被校验发现 。

实际应用时的两个技术问题

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)信号。

HDLC中常用的操作方式

(1)正常响应方式NRM

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

(2)异步平衡方式ABM

异步平衡方式ABM(Asynchronous Balanced Mode)是一种允许任何节点来启动传输的操作方式。为了提高链路传输效率,节点之间在两个方向上都需要的较高的信息传输量。在这种操作方式下任何时候任何站都能启动传输操作,每个站既可作为主站又可作为从站,每个站都是组合站。各站都有相同的一组协议,任何站都可以发送或接收命令,也可以给出应答,并且各站对差错恢复过程都负有相同的责任。

(3)异步响应方式

异步响应方式ARM(Asynchronous Responses Mode)也是一种非平衡数据链路操作方式,与NRM不同的是,ARM下的传输过程由从站启动。从站主动发送给主站的一个或一组帧中可包含有信息,也可以是仅以控制为目的而发的帧。在这种操作方式下,由从站来控制超时和重发。该方式对采用轮询方式的多站莲路来说是必不可少的。

帧格式

在HDLC中,数据和控制报文均以帧的标准格式传送。HDLC中的帧类似于BSC的字符块,但BSC协议中的数据报文和控制报文是独立传输的,而HDLC中的命令应以统一的格式按帧传输。HDLC的完整的帧由标志字段(F)、地址字段(A)、控制字段(C)、信息字段(I)、帧校验序列字段(FCS)等组成.

(1)标志字段(F)

标志字段为01111110的比特模式,用以标志帧的起始和前一帧的终止。标志字段也可以作为帧与帧之间的填充字符。通常,在不进行帧传送的时刻,信道仍处于激活状态,在这种状态下,发方不断地发送标志字段,便可认为一个新的帧传送已经开始。采用“0比特插入法”可以实现0数据的透明传输。

(2)地址字段(A)

地址字段的内容取决于所彩了的操作方式。在操作方式中,有主站、从站、组合站之分。每一个从站和组合站都被分配一个唯一的地址。命令帧中的地址字段携带的是对方站的地址,而响应帧中的地址字段所携带的地址是本站的地址。某一地址也可分配给不止一个站,这种地址称为组地址,利用一个组地址传输的帧能被组内所有拥有该组一焉的站接收。但当一个站或组合站发送响应时,它仍应当用它唯一的地址。还可用全“1”地址来表示包含所有站的地址,称为广播地址,含有广播地址的帧传送给链路上所有的站。另外,还规定全“0”地址为无站地址,这种地址不分配给任何站,仅作作测试。

(3)控制字段(C)

控制字段用于构成各种命令和响应,以便对链路进行监视和控制。发送方主站或组合站利用控制字段来通知被寻址的从站或组合站执行约定的操作;相反,从站用该字段作对命令的响应,报告已完成的操作或状态的变化。该字段是HDLC的关键。控制字段中的***位或***、第二位表示传送帧的类型,HDLC中有信息帧(I帧)、监控帧(S帧)和无编号帧(U帧)三种不同类型的帧。控制字段的第五位是P/F位,即轮询/终止(Poll/Final)位。

(4)信息字段(I)

信息字段可以是任意的二进制比特串。比特串长度未作限定,其上限由FCS字段或通信站的缓冲器容量来决定,国际上用得较多的是1000~2000比特;而下限可以为0,即无信息字段。但是,监控帧(S帧)中规定不可有信息字段。

(5)帧校验序列字段(FCS)

帧校验序列字段可以使用16位CRC,对两个标志字段之间的整个帧的内容进行校验。FCS的生成多项式CCITV4.1建议规定的X16+X12+X5+1。

帧类型

(1)信息帧(I帧)

信息帧用于传送有效信息或数据,通常简称I帧。I帧以控制字***位为“0”来标志。

信息帧的控制字段中的N(S)用于存放发送帧序号,以使发送方不必等待确认而连续发送多帧。N(R)用于存放接收方下一个预期要接收的帧的序号,N(R)=5,即表示接收方下一帧要接收5号帧,换言之,5号帧前的各帧接收到。N(S)和N(R)均为3位二进制编码,可取值0~7。

(2)监控帧(S帧)

监控帧用于差错控制和流量控制,通常简称S帧。S帧以控制字段***、二位为“10”来标志。S帧带信息字段,只有6个字节即48个比特。S帧的控制字段的第三、四位为S帧类型编码,共有四种不同编码,分别表示:

00——接收就绪(RR),由主站或从站发送。主站可以使用RR型S帧来轮询从站,即希望从站传输编号为N(R)的I帧,若存在这样的帧,便进行传输;从站也可用RR型S帧来作响应,表示从站希望从主站那里接收的下一个I帧的编号是N(R)。

01——拒绝(REJ),由主站或从站发送,用以要求发送方对从编号为N(R)开始的帧及其以后所有的帧进行重发,这也暗示N(R)以前的I帧已被正确接收。

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

11——选择拒绝(SREJ),它要求发送方发送编号为N(R)单个I帧,并暗示它编号的I帧已全部确认。

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

(3)无编号帧(U帧)

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

责任编辑:林琳 来源: ChinaUnix博客
相关推荐

2013-11-05 09:39:18

HDLC命令配置

2009-12-31 15:24:12

ADSL2标准

2010-08-25 10:17:38

DHCP报文格式

2021-10-26 08:42:27

7EUART串行

2010-07-12 17:31:36

UDTUDP协议

2010-01-05 14:49:03

JSON格式

2009-11-17 11:39:57

PHP日期格式

2010-05-11 14:30:39

2010-01-05 17:35:09

JSON数组格式

2011-01-14 13:44:45

Linux汇编语言

2009-11-17 16:24:27

PHP变量串行化

2021-08-27 15:30:13

PSPhotoshopPS格式

2011-04-06 16:43:48

验证物理链路HDLC

2019-11-24 22:09:50

广域网PPPHDLC

2011-04-06 16:49:14

PPP

2023-05-17 16:11:56

2010-09-06 09:31:12

PPP数据帧

2010-06-08 16:35:24

LIN总线协议

2010-05-07 11:38:55

Oracle DB2

2014-10-20 09:55:02

点赞
收藏

51CTO技术栈公众号