HDLC高级数据链路控制

作者在 2008-07-01 00:23:47 发布以下内容
HDLC (High-level Data Link Control) 的意思是:

 高级数据链路控制,是一个在同步网上传输数据、面向位的数据链路层协议,它是由国际标准化组织(ISO)制订的。HDLC是面向位的,传输的数据以二进制数据组成,不存在任何特殊的控制代码,但帧中的信息包含了控制和响应命令。支持全双工传输,具有较高的吞吐率。HDLC适合于点对点和多点(多路播送或一对多)连接。HDLC的子集被用来向X.25、ISDN和帧中继网提供信令和控制数据链路。

 

   HDLC规程主要由HDLC帧结构、规程要素、规程类别三个部分组成[1]。为了能够实现HDLC的基本功能并能按照各项标准的规定灵活采用不同的CRC校验算法,我们必须了解HDLC基本的帧结构形式。
<a href="http://www.zjetime.com">交换机</a><a href="http://www.zjetime.com">集
   HDLC是面向比特的链路控制规程,其链路监控功能通过一定的比特组合所表示的命令和响应来实现,这些监控比特和信息比特一起以帧的形式传送。
    以下是ISO/IEC 3309标准规定的HDLC的基本帧结构。
    

起始标志

地址数据

控制数据

信息数据

帧校验序列

结束标志

01111110

8bits

8bits

8bits

16或32bits

01111110

    其它的HDLC标准也有类似的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]。

 

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

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

每个帧前、后均有一标志码01111110,用作帧的起始、终止指示及帧的同步。标志码不允许在帧的内部出现,以免引起畸意。为保证标志码的唯一性但又兼顾帧内数据的透明性,可以采用“0比特插入法”来解决。该法在发送端监视除标志码以外的所有字段,当发现有连续5个“1”出现时,便在其后添插一个“0”,然后继续发后继的比特流。在接收端,同样监除起始标志码以外的所有字段。当连续发现5个“1”出现后,若其后一个比特“0”则自动删除它,以恢复原来的比特流;若发现连续6个“1”,则可能是插入的“0”发生差错变成的“1”,也可能是收到了帧的终止标志码。后两种情况,可以进一步通过帧中的帧检验序列来加以区分。“0比特插入法”原理简单,很适合于硬件实现。

在面向比特的协议的帧格式中,有一个8比特的控制字段,可以用它以编码方式定义丰富的控制命令和应答,相当于起到了BSC协议中众多传输控制字符和转义序列的功能。

作为面向比特的数据链路控制协议的典型,HDLC具有如下特点:协议不依赖于任何一种字符编码集;数据报文可透明舆传输,用于实现透明传输的“0比特插入法”易于硬件实现;全双工通信,不必等待确认便可连续发送数据,有较高的数据链路传输效率;所有帧均采用CRC校验,对信息帧进行编号,可纺止漏收或重份,传输可靠性高;传输控制功能与处理功能分离,具有较大灵活性和较完善的控制功能。由于以上特点,目前网络设计普遍使用HDLC作为数据链路管制协议。

1.HDLC的操作方式

HCLC是通用的数据链路控制协议,当开始建立数据链路时,允许选用特定的操作方式。所谓链路操作方式,通俗地讲就是某站点以主站方式操作,还是以从站方式操作,或者是二者兼备。

在链路上用于控制目的站称为主站,其它的受主站控制的站称为从站。主站负责对数据流进行组织,半且对链路上的差错实施恢复。由主站发往从站的帧称为命令帧,而由由站返回主站的帧称响应帧。

连有多个站点的链路通常使用轮询技术,轮询其它站的站称为主站,而在点到点燃链路中每个站均可为主站。主站需要比从站有更多的逻辑功能,所以当终端与主机相连时,主机一般总是主站。

在一个站连接多条链中的情况下,该站对于一些链路而言可能是主站,而对另外一些链路而言又可能是从站。

有些可兼备主站和从站的功能,这站称为组合站,用于组合站之间信息传输的协议是对称的,即在链路上主、从站具有同样的传输控制功能,这又称作平衡操作,在计算机网络中这是一个非常重要的概念。相对的,那种操作时有主站、从站之分的,且各自功能不同的操作,称非平衡操作。

HDCL中常用的操作方式有以下三种:

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

(2)异步响应方式ARM

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

(3)异步平衡方式ABM

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

2.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)位。

(4)信息字段(I)

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

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

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

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

默认分类 | 阅读 8956 次
文章评论,共0条
游客请输入验证码
浏览63328次
文章分类