HDLC帧格式

1、

HDLC帧格式,如下:

字段

FLAG

ADDRESS

CONTROL

INFO

FCS

FLAG

……

8BIT

8BIT

8BIT

N*8BIT

16/32BIT

8BIT

……

         HDLC所有帧都必须以FLAG标志开始和结束,以实现帧的同步,空载时可以连续发送FLAG(7E或FF/7F/F7/E7)用来做时间填充。

         HDLC的0比特填充技术:在发送端的信码中连续5个1后插入一个0;在接收端,则去掉5个1后面的0,恢复正常的数据序列。它用于排除信息流中出现标志字段的可能性。

以下是ISO/IEC 3309标准规定的HDLC的基本帧结构。

2、

起始标志 地址数据 控制数据  信息数据 帧校验序列 结束标志
01111110  8bits  8bits 8bits *n 16或32bits  01111110

 constantine:原文中有点小错误,信息数据不是只有8bits,而是8bits的倍数,最小可以为0,比如监控帧就一定是0。另外在信息数据后面还有一段填充数据(8bits *n),主要是HDLC协议计算出FCS后需要进行“插零”操作。


其它的HDLC标准也有类似的帧结构。每帧的起始和结束以"7E"(01111110)做标志,两个"7E"之间为数据段(含地址数据、控制数据、信息数据)和帧校验序列。帧校验采用CRC算法,对除了插入的"零"以外的所有数据进行校验。为了避免将数据中的"7E"误为标志,在发送端和接收端要相应地对数据流和帧校验序列进行"插零"及"删零"操作。

各种HDLC间的区别之一是帧校验序列的CRC算法不同,这种不同表现在几个方面:
a. 帧校验序列的位数不同,如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校验时,合格判据不同。因为有了上述的不同处理,自然会得到不同的结果,由此造成合格判据不同。例如有的标准以校验结果"1D0F"判为无错误[2]。而有的ASIC芯片以校验结果"F0B8"判为无错误[3]。
显然,对于这些应用,可编程逻辑芯片正可以发挥自己的特长。

constantine:HDLC采用x16 + x12 + x5 + 1这个多项式。



3、帧格式说明——HDLC的帧格式

在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)位。

3. 控制字段

“控制”字段C(Control)用来实现HDLC 协议的各种控制信息,并标志是否是数据(因为它可以标志不同的帧类型),占1 个字节长度。发送方主站点或复合站点利用控制字段来通知被寻址的从站点或复合站点执行约定的操作;而从站点用该字段对来自主站点或复合站点的命令帧进行响应,报告已完成的操作或状态的变化。

“控制”字段的结构如图5-20 所示,共8 位,根据其最前面两个比特的取值,可将HDLC 帧划分为三大类,即信息帧I(Information)、 监控帧S(Supervisory)和无编号帧U(Unnumbered)。如果控制字段中的第1 位为0,则代表发送的是I 帧;如果控制字段中的第1 位和第2 位为10,则代表发送的是S 帧;如果控制字段中的第1 位和第2 位为11,则代表发送的是U 帧。有关这三种帧类型及各自的“控制”字段具体结构,将在本节后面介绍。

 
图5-20 HDLC“控制”字段结构

在“控制”字段结构中,最难理解的就是第5 位的P/F(Poll/Final,查询/ 结束)位。在HDLC 的各类帧中均带有这个P/F 位,但在不同帧中的含义不一样:在由主站点发出的命令帧中取“P”位,起查询的作用,即当该位为1 时,要求被查询的从站点做出响应;在从站点响应主站点的帧中取“F”位,起结束数据发送或确认结束的作用,即当该位为1 时,表示从站点数据发送完毕,或者响应完毕。P/F 位在不同的链路结构操作方式中所代表的含义并不一样。具体如下:

在NRM 方式中,从站点不能主动向主站点发送信息,从站点只有在收到主站点发出P位为1(表示对各从站点依次进行查询,看看这些从站点是否有数据发送)的命令帧以后才能发送对应的响应帧:如果从站点有数据发送,则在最后一个I 帧中将F 位置1(表示数据发送结束),中间的I 帧F 位置0(表示数据还没发完);如果从站点无数据发送,则要向主站点发送将F 位置1 的响应帧。

在ARM 或ABM 方式中,任何一个站点都可以在主动发送的S 帧和I 帧中将P 位置1(同样是表示对各从站点或者对方复合站点依次进行查询,看看它们是否有数据发送)。对方站点在收到P=1 的S 帧或I 帧后,同样会按照上面介绍的方法进行处理:如果对方站点有数据发送,则在最后一个S 帧或I 帧中将F 位置1(表示数据发送结束),中间的S 帧或I 帧F 位置0(表示数据还没发完);如果对方站点无数据发送,则要向主站点发送将F 位置1 的响应帧。


3.1)HDLC的帧类型


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种应答功能,但目前许多是空缺的。


(4)信息字段(I)

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

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

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


猜你喜欢

转载自blog.csdn.net/u012923751/article/details/80347952