1、 第8章数据链路传输控制规程8.1数据链路层的功能及传输控制规程的功能与分类数据链路层的功能及传输控制规程的功能与分类8.2面向字符的传输控制规程面向字符的传输控制规程8.3面向比特的传输控制规程面向比特的传输控制规程本章小结本章小结 8.1 数据链路层的功能及传输控制规程的数据链路层的功能及传输控制规程的 功能与分类功能与分类8.1.1 数据链路层的功能数据链路层的功能数据链路层主要是为ISO/OSI七层模型中的网络层提供一条无差错的通信链路,因此数据链路层应具备如下功能:(1)数据成帧功能:将网络层的数据划分为数据块,各块组成一个数据帧,数据帧的开头和结尾要有明确的标志。数据帧是数据链路层
2、的基本单位。(2)数据链路的建立、拆除和管理:在两个节点之间通信时建立数据传输的通信链路,在不通信时拆除所建立的通信链路,并对链路进行有效的管理。(3)数据链路的检错和纠错:数据链路层应保证数据传输过程中不出现差错,若出现则给予发现和纠正;同时,还应提供流量控制,调整发送速率,使收发两端的发送能力与接收能力相匹配。(4)异常处理能力:应规定当出现异常情况时,节点如何运行及处理异常情况,以免造成由于节点的死锁而引起整个网络的瘫痪。(5)应具备标准的通信接口:由于节点的种类繁多、功能各异,因而要求节点与通信线路间要有统一的标准接口。8.1.2 传输控制规程的主要功能与分类传输控制规程的主要功能与分
3、类 1.帧同步功能帧同步的主要作用是能从接收的比特流中区分出帧的起始位置和终止位置。实现帧同步的方法主要有字节计数法、字符填充法、比特填充法和违法编码法等。字节计数法采用一个特殊的字符表征一帧的开始,并以一个专门的字段表示帧内的字节数。接收端可通过对特殊字符的识别从比特流中辨别出帧的开始,并从专门的字段中获知该帧中随后的数据字节,从而确定出帧的终止位置。由于该方法采用字段计数方法来确定帧的边界,不会引起数据及其他信息的混淆,因而不必采用任何措施便可实现数据的透明传输。字符填充法用一些特定的字符来界定一帧的起始与终止。为了不使数据信息位中出现的与特定字符相同的字符而被误判为帧的首尾定界符,可以在
4、数据字符前填充一个转义控制字符(DLE)以示区别,从而实现透明传输。比特填充法用一组特定的比特模式(如01111110)来标志一帧的起始与终止。为了不使信息位中出现的与该模式相似的比特串而被判为帧的首尾标志,可以采用比特填充的方法。如采用特定模式01111110,则对信息位中连续出现5个“1”的情况采用在发送时在该5个“1”的串后插入一个“0”的方法。在接收时,如出现5个“1”,后面的“0”则自动删除,以此来恢复原始的数据信息,从而实现透明传输。比特填充法易用硬件实现,性能优于字符填充法。违法编码法是在物理层采用特定的比特编码来实现辨别帧的首尾的。例如,采用曼切斯特编码方法,将数据比特“1”编
5、成“高-低”电平对,将数据比特“0”编成“低-高”电平对。“高-高”和“低-低”电平对在数据比特中是违法的编码。因此,可以采用这种违法编码序列来界定帧的起始与终止。局域网IEEE 802标准就采用了这种方法。违法编码法不需要任何填充技术,能实现数据透明传输,但仅适合于采用冗余编码的特殊编码情况。2.差错控制功能数据在传输过程中,由于信道及设备的特性使得数据在传输时会发生错误,这些错误会降低通信的可靠性,因此必须对传输错误进行纠正,使差错尽可能地控制在较低程度。差错控制就是要能及时发现传输错误,并及时纠正,它是数据链路层的主要功能之一。接收端可以通过对差错编码的检查判断帧在传输中是否出错,一旦发
6、现,就可采用反馈重发的方法来纠正。这就要求接收端接收完一帧后向发送端反馈一个接收是否正确的信息,使发送端能以此做出是否需要重发的动作。当发送端收到接收端已正确接收的反馈信息后才能认为该帧已正确发送,否则需要重发,直到正确为止。为了避免由于收不到反馈信息的情况,发送端往往采用计时器来限定接收端等待接收反馈信息的时间,即发送端发送一帧的同时,计时器也启动,若在限定的时间内收不到反馈信息,发送端则认为所发送的帧已出错或丢失,于是重发该帧。由于同一帧可能出现被多次发送的重复发送的情况,这就可能引起接收端多次收到同一帧,并将其传递给网络层,从而引起网络层的错误。为此,可以采用对发送帧编号,赋予每一帧一个
7、序号,从而使接收端能辨别是新收到的帧还是重发的帧,一旦接收到重发的帧,则丢弃该帧。数据链路层采用计时器和序号的方式以保证每帧都能被正确地传递给网络层。3.流量控制流量控制是数据链路层的主要功能之一。许多高层协议中也具有流量控制功能。流量控制的目的是解决收发双方匹配的问题。由于收发双方各自系统的工作速率和缓冲空间有差异,可能会出现发送端发送的数据过多,而接收端接收能力有限而无法全部接收的现象。此时,应对发送端的发送量(发送速率/速度)做某些限制,以免造成由于发送量过大以致接收端接收不了的现象。4.链路管理链路管理功能主要是面向连接服务的。通信双方在进行通信前,必须首先确认对方已处于就绪状态,并交
8、换一些必要的信息,如对帧序号进行初始化等,然后才能建立起连接。数据传输完毕后则需要释放连接。数据链路层的建立、维持和释放等就是链路管理的内容。5.分类现有的数据链路控制总体上可分为面向字符(又称为面向字节)和面向比特两类。8.2 面向字符的传输控制规程面向字符的传输控制规程8.2.1 IBM的的BSC规程简介规程简介控制节点通过轮询(或邀请发送)一个从属节点来启动数据传输。网络传输在指定的控制节点和从属节点之间进行,同时其他节点保持在一种被动监听方式下。一个选择(请求接收)由控制节点发往一个从属节点,从而使该节点接收后面的报文。BSC是一种半双工规程,通信可以在两个方向上交替进行。点到点的链路
9、可以建立在交换或专用线上。在交换网上,每次传输任务完毕后都要将数据链路释放。由于BSC是一种字符控制规程,所以它对代码敏感。它使用ASCII或EBCDIC等编码的字符进行链路控制,并采用特殊字符分隔各种信息段。通过一条BSC信息传送的每个字符都要在接收端译码,以判断是控制字还是信息数据。8.2.2 控制字符控制字符所有链路层协议都可由链路的建立、数据传输和链路拆除三部分组成。为了实现链路建立、链路拆除以及同步等各种功能,除了正常的数据块和报文外,还需要一些控制字符。BSC协议用ASCII和EBCDIC字符集定义的传输控制字来实现相应的功能。这些控制字的含义如表8.2.1所示。上述10个控制字的
10、功能如下:SOH(Start of Heading):标题开始,用于表示信息报文标题的开始。标题是信息报文中正文之前的字符序列,它由表示路由、优先权、保密措施、报文编号以及有关字符组成。SOH在正文中不允许出现。STX(Start of Text):正文开始,用于表示标题信息的结束和信息报文的正文开始。当正文被分隔成若干码组时,每组均以STX开始,但在标题中不允许出现STX。ETX(End of Text):正文结束。ETX由发送端发送,表示信息博文结束。当信息被分隔成若干组时,只有最后一个信息组的报文使用ETX结束,在ETX后是校验码BCC。EOT(End of Transmission):
11、传输结束,用于表示数据传输结束,EOT可由发送端也可由接收端发出,并拆除链路。ENQ(Enquiry):询问,用于请求远方节点给出响应,响应可能包括节点的身份或状态。ACK(Acknowledge):确认,由接收端发出的作为对正确接收到报文的应答。DLE(Data Link Escape):数据链转义,用以修正紧跟其后的有限个字符的意义。在BSC中实现透明方式的数据传输,或者当10个传输控制字符不够用时提供新的转义传输控制字符。NAK(Negative Acknowledge):否认,由接收端发出的作为对未正确接收的报文的响应。SYN(Synchronous):同步字符。在同步协议中,用以实现
12、节点之间的字符同步,或用于在无线数据传输时的时间填充,以保持收发两端的同步,但它不能插在转义序列和校验码与控制字符的中间,也不参加校验码的计算。ETB(End of Transmission Block):块终或组终,用以表示当报文分成多个数据块的结束。它仅由发送端发出,组校验码(BCC)紧跟在它后面,但当最后一个信息码组结束时必须用ETX。8.2.3 帧格式帧格式1.数据帧数据报文一般由报头和文本组成。文本是需传输的信息,报头是与文本传输及处理有关的辅助信息,报头有时也可不用。对于不超过长度限制的报文只用一个数据块发送,对较长的报文则要分为多个数据块发送,每个数据块作为一个传输单位。接收方对
13、于每一个收到的数据块都要予以确认,发送端收到接收端的确认后才能发送下一个数据块。BSC协议的数据帧可分为4种格式:信息报文基本格式:信息报文一般由标题(报头)和正文组成。正文是要传输的有用的数据信息。标题包括发信地址、接收地址、信息报头名称、报文级别、编号、传送路径等。通常采用构成信息报文格式的控制字符SOH、STX、ETB、ETX作为结构字符来连接标题和正文,并且在ETX或ETB后附加校验码BCC。BCC是一个字节或两个字节的循环校验码(CRC)。信息报文的基本格式如图8.2.1所示。图8.2.1 信息报文基本格式多块帧:一个较长的报文被分隔成了多个数据块,就构成了多块数据帧。在传输多块数据
14、帧时,除最后一块外,每块都由一个STX字符开始,由一个组传输结束符ETB结束。最后一个块由STX开始,由EXT结束。在每一个ETB或ETX字符之后发送一个BCC域。通过这种方式,接收端可以对每一块单独进行差错检验,从而增加了检测的可靠性。如果任何一个数据块出错,整个帧将重新传送。在接收到ETX字符并校验了最后一个BCC域后,接收端对整个帧发送一个单独的应答消息。多块帧的基本格式如图8.2.2所示。图8.2.2 多块帧基本格式多帧传输:有些信息过长,一个帧不能容纳时,可将该信息分为若干个帧,可将这若干个帧连续发送。为了使接收端知道帧的结束,而不是整个信息传送的结束,除了最后一帧外,其他帧中的文本
15、结束符(EXT)都被组传输符(ETB)替代。接收端可分别对各帧进行应答。多帧传输的基本格式如图8.2.3所示。图8.2.3 多帧传输基本格式多报文头帧:在传输信息时,有时报文头很长,此时可仿照多帧格式将报头分成多组,此时每个报头的开始都用标题开始符(SOH),而每组报文的结尾仍用ETB,其格式如图8.2.4所示。图8.2.4 多报文头帧格式2.控制帧控制帧是一个节点向另一个节点发送的命令或获取消息的信息,主要用于通信双方间的呼叫应答,以确保报文信息正常、可靠地传送。控制帧包括正向控制帧和反向控制帧。正向控制帧是由主节点发送到从属节点的控制序列,与信息报文传送的方向一致,主要用于通信双方的呼叫建
16、立,它包括标志信息、地址信息;反向控制帧是由从(从属)节点发送到主节点的控制序列,它的方向与信息报文的传送方向相反,主要用于对呼叫的应答,主要包括状态信息。一个控制帧包含控制字符(没有信息数据),它携带了特定的用于数据链的控制信息。控制帧格式如图8.2.5所示。图8.2.5 控制帧格式控制帧主要用来完成建立链路、传输中的流量维护和错误控制,以及终止连接三种服务。在发送时,发送节点是知道它所要发送帧的确切顺序的,发送后等待接收端回送的确认。接收节点发送带有序号的ACK通知发送端已正确接收。对于一个半双工通信,使用0和1这两个序号就可作为应答ACK的序号,ACK0表示双号帧接收无误,ACK1表示单
17、号帧接收无误。BSC采用的线路控制编码有ACK0、ACK1、WACK、RVI、DISC和TTD。依赖于编码的协议在对线路控制解释方面可能建立双重含义。一个特定控制序列的含义不但取决于它是由主节点还是由从节点发出的,而且还取决于线路是处于控制方式还是报文方式。表8.2.2列出了BSC可能产生双重含义的一些情况。多点操作,开始时由主节点传送下列控制帧:SYN SYN EOT PAD SYN SYN ENQ该序列确保所有从节点处在控制方式,并且准备好接收来自主节点的轮询(邀请发出)或者选择(请求接收)。轮询和选择序列由17个定义节点的地址和节点内要求使用的设备的字符组成,后面紧跟ENQ。用大写字母表
18、示的地址标志一个轮询,用小写字母表示的地址标志一个选择帧。可将大写字母序列看成是节点内发送设备的地址,把小写字母序列看成是节点内的接收设备地址。一个被轮询的从节点可能的回答如下:报头数据(SYN SYN SOH);正文数据(SYN SYN STX 正文);透明正文数据(SYN SYN DLE STX透明正文);否定(当节点没有要发送的信息时)(SYN SYN EOT);暂时正文推迟(当节点不能在2秒内发送它的起始块时)(SYN SYN STX ENQ)。一个被选择的从节点可能回答的如下:肯定,表明从节点准备好接收(SYN SYN ACK0);否定,表明从节点不准备接收(SYN SYN NAK)
19、,还表明从节点暂时不准备接收(SYN SYN WACK)。从BSC帧结构可以看出,数据块越大,则数据传输的效率越高。但如果线路质量不高,则需要重发的数据帧也越多,因此小数据块的效率反而要比大数据块要高。BSC与异步协议相比,数据信息对控制信息的比例要大,传送大量的数据只需要少量的起始、停止和错误检测字符,这是因为在异步通信中,起始、停止和检错的信息所占的比例是相同的。因此,BSC的数据传输速率比异步通信的传输速率高,特别是在大容量数据通信的情况下。与面向比特的规程相比,面向字符的规程复杂且效率低,所以BSC在许多应用场合下逐渐被面向比特的高级数据链路控制(HDLC)规程所替代。8.2.4 数据
20、的透明性与同步数据的透明性与同步1.数据的透明性在BSC规程中的数据透明性是通过字节填充来实现的。首先通过数据链路转义符(DLE)定义透明文本区域,如在透明文本区域内的DLE字符前面再加一个DLE,这样透明的DLE字符就不会被认为是转义符了。为了定义透明区域,需在文本开始的STX字符前插入一个转义符DLE,并且在文本区域结束符EXT(或ETB)前也插入一个转义符DLE。第一个DLE字符的含义是告诉接收端文本中可能有控制字符,并要求忽略这些控制字符,最后一个DLE字符告诉接收端透明区域结束。如果透明区域内还有一个作为文本的转义符DLE,那么可以在每个DLE前再插入一个DLE。由于BSC协议与特定
21、的字符编码集有关,故兼容性较差。为了满足数据透明性而采用字符填充的方法实现起来较麻烦,它依赖所采用的字符编码集。另外,由于BSC协议需要的缓冲存储空间较小,因此在面向终端的网络系统中仍然被广泛使用。2.同步链路控制协议可分为同步协议与异步协议两类。异步协议以字符为独立的信息传输单位,在每个字符的起始处对字符内的各位进行同步,但字符与字符之间的间隔时间是固定的,因而称为异步协议。在异步协议中,由于每个要传输的字符都要添加起始位、校验位、停止位,所以添加的冗余比特较多,故传输效率较低,一般适合数据速率低的场合。同步协议是以许多字符或许多二进制码元组成的数据块为传输单位的,该数据块称为数据帧,在帧的
22、起始处同步,使帧维持固定的节奏。由于采用帧为传输单位,所以能更有效地使用信道,更便于实现差错控制、流量控制。同步协议可分为面向字符及面向比特的同步协议。BSC是典型的面向字符的同步协议,在BSC中,所有发送的数据均跟在至少2个SYN字符之后。SYN是接口硬件能识别的用以实现同步的标识。每次传输时,接收端都由识别SYN字符重新建立字符同步,字符同步一直维持到接收到一个线路换向字符或传输结束字符。为了在传输期间维持同步,在1秒时间间隔处自动在报头数据和正文数据中插入同步空转字符,对于非透明数据,同步空转字符是SYNSYN,对透明数据则是DLESYN。同步空转字符不参与块的差错检验。8.2.5 数据
23、链路结构及建立数据链路结构及建立1.数据链路结构数据链路是指两个节点进行数据通信的过程,通常需要经过建立数据链路、传送信息和拆除数据链路这三个阶段。节点是数据链路收发两端用来完成数据传输的终端装置,它可以是数据终端(DTE)、信息转换设备(DCE)及任何一种中间设备。在BSC协议中定义了两种类型的节点,即主节点和从节点。主节点能对链路完全控制,主要功能是发送命令帧、数据帧、接收响应帧,并对整个链路进行管理。从节点(或从属节点)接收主节点的命令帧、数据帧,向主节点发送响应帧,并配合主节点完成差错控制。在一次通信中,呼叫建立数据链路的是主节点,被呼叫的为从节点,它们之间构成了固定的主从结构。数据链
24、路的结构可分为点对点、多点集中及多点非集中的三种结构。点对点结构:在两点直通情况下,两个点处于同等地位,没有主、从区别。在数据通信时,发送节点直接通知接收节点接收即可。此时发端为主节点,接收端为从节点。多点集中结构:在这种结构中,通常安排一个节点为管理者,执行探询、选择和异常处理等操作,另外的节点为从节点。若所有各节点中,只有一个主节点,其他各节点仅能与主节点通信,这种结构就叫多点集中结构。多点非集中结构:只有一个主节点,但其他任意两个节点间可以通信的结构就称为多点非集中结构。2.数据链路的建立在数据链路中,主节点负责保证完成信息传送的任务,从节点负责接收主节点发送的信息。一条数据链路上同时可
25、以有多个从节点,在一次通信连接中,一个节点可以交替地变成主节点或从节点。由于数据链路的结构不同,传输控制的方式也不同,因此必须采用不同的方法来建立数据链路。对上述三种不同结构,建立数据链路的方式有两种,第一种是争用(Contention)方式,适用于点对点结构;第二种是探询/选择方式,适用于设有主节点的多点分支的链路结构,它又分为集中控制和非集中控制两种。在集中控制方式中,由主节点控制所有的从节点,仅允许主节点与从节点之间进行数据传输,由主节点发送探询序列或选择序列,以控制从节点间发送或接收信息报文;在非集中控制方式中,允许主节点和从节点之间或从节点之间进行通信。当主节点向从节点发送探询序列之
26、后,被探询的从节点才能成为主节点,此时,该主节点可以向控制节点或其他从节点发送选择序列,执行选择过程。在没有控制节点的集中控制系统中,为防止争夺作主节点,探询过程是控制节点按一定顺序一个个地控制从节点变为主节点的过程。探询只能由控制节点执行,被探询的从节点收到了探询序列后就成为了主节点。探询时,控制节点已做好了接收数据的准备,希望被控节点发送信息,向被控节点询问有无信息报文要发送,如有,此时被探询的从节点就变成了主节点,并发送信息报文。对于非集中控制方式,被探询的从节点还应向其他从节点或控制节点发送选择序列;如没有,则被探询的节点发出应答EOT,表示“没有信息报文要发送给控制节点”。探询可分为
27、轮流探询(Roll Polling)和传递探询(Hub Polling)两种类型。轮流探询(简称轮询)是一种应用较广的方式。控制节点根据一张存储好的探询表来决定被控节点的探询次序。探询表由软件组成,各个被探询的节点和探询的优先次数可由软件设置,使系统有很大的灵活性。控制节点给某个被控节点发出探询后,如果该节点不变为主节点,则回答“否”(即没有信息要发送),控制节点按探询表的次序探询下一个。传递探询是为了改善系统响应时间而采用的,它需要双向环形信道。由控制节点探询第一个被控节点是否要发送信息,如果该被控节点没有信息要发送,则由它把探询传递给第二个节点,如此下去。当所有被控节点都没有要发信息,由最
28、后一个节点向控制节点返回一个无信息报文发送的应答,从而减少了反向应答的时间;如果被探询的节点有信息报文要发送,则就建立起被控与控制节点间的数据链路,开始向控制节点发送信息报文,当信息报文发送完毕,则由它向下一节点发出探询,如此下去。选择是主节点用选择序列控制一个或多个从节点接收信息报文的过程。它只能由主节点执行。在执行选择时,可以给出一个节点地址或使用广播地址选择一个或多个从节点。按实现的方法不同,选择又可分为选择保持或快速选择方式。在选择保持中,主节点首先发送一个选择序列(选择地址和ENQ)给一个或几个节点,当被选择的节点回答ACK时,表明该节点可以接收信息,则建立数据链路,把信息报文发送给
29、从节点;当被选择的节点回答NAK时,表明该节点不能接收信息,则数据链路不能建立。在快速选择方式中,没有单独选择从节点建立链路的过程,此时,主节点将信息报文直接随着选择一起发送给从节点,无需等待对方回答。该方式节省时间,但差错恢复过程复杂。争用就是争夺主节点,是建立数据链路的另一种方式。其基本思想是按照“先来先服务”的原则分配线路。当每个节点已准备好要发送信息或处于中性状态时,都可以发出选择信息,若被对方节点选中则变成从节点,而本节点即成为主节点,于是建立起数据链路,主节点可以向从节点发送信息报文。这种方式适用于两点直通式,优点是延迟小,但控制方式较复杂。8.3 面向比特的传输控制规程面向比特的
30、传输控制规程8.3.1 HDLC数据链路控制规程数据链路控制规程1.面向比特型规程的基本特征面向比特型规程具有透明传输、可靠性高、传输效率高、可双向传输的基本特征。面向比特型的数据链路控制规程用唯一的标识符F(01111110)作为定界符,除F外的所有信息不受任何限制,具有良好的透明性。在比特型的所有数据和控制帧中,都采用了循环冗余差错控制校验序列,并且将信息帧按顺序编号,从而防止了信息帧的漏收和重发。另外,比特型规程要扩充功能,仅需改变帧内控制字段的内容和规定即可,与面向字符型的规程采用的转义字符相比提高了传输的可靠性。比特型规程在链路上传输信息采用的是连续发送方式,无需等待接收方的应答就可
31、发送下一帧数据,与面向字符规程的等待应答传送方式相比,其效率较高。面向字符型规程只适用于半双工通信,而且链路结构采用主/从结构,需要有一个主节点来控制整个数据链路。面向比特型规程可适应全双工通信,且扩展了字符型规程的数据链路结构,允许有两个主节点共同控制一条通信链路,能在两个方向上采用类似的方式组织数据的收发。2.HDLC的节点类型和链路结构HDLC定义了三种类型的节点,即主节点、从节点和复合节点。复合节点具有主、从节点两种功能,既可以发送命令,也可以进行响应。链路结构是指链路上硬件设备的关系。设备可以按照主从方式或对等方式组织。主、从及复合节点具有如图8.3.1所示的平衡和非平衡两种链路结构
32、。图8.3.1 HDLC规程链路结构主从链路结构是一个设备为主设备,令一个或几个为从设备所构成的结构方式,典型的例子是一台计算机控制一台或几台计算机终端。平衡链路是指链路上每个物理节点是复合站点,即有两个逻辑站点,一个主节点,另一个是从节点。平衡链路结构中,链路的控制权可以在两个节点间交换。典型的例子是计算机计算机关系中,两端的计算机都有主、从功能。3.HDLC的操作方式HDLC的操作方式是指在一次交互中涉及的两个设备之间的关系,它主要描述由哪个设备控制链路。HDLC规程支持节点间的正常应答方式(Norma Responses Mode,NRM)、异步响应方式(Asynchronous Res
33、ponses Mode,ARM)及异步平衡方式(Asynchronous Balanced Mode,ABM)三种不同的操作方式。通常主从链路结构进行的交互总是以正常应答方式进行的。正常应答方式(NRM)是一个非平衡数据链路方式,有时也称为非平衡正常响应方式。该操作方式适用于面向终端的点对点或点对多点的链路。在这种操作方式下,传输过程由主节点启动,从节点只有收到主节点的某个命令帧后,才能做出响应,并向主节点传输信息。响应信息可由一个或多个帧组成,若信息由多个帧组成,则应指出哪一个帧是最后一帧。在NRM中,主节点负责整个链路,具有轮询、选择从节点及向从节点发送命令的权力,同时负责超时、重发及各类
34、异常操作的控制。从节点是由主节点发送的SNRM命令来设置为正常应答方式的。异步响应方式(ARM)也是一种非平衡数据链路操作方式。在这种操作方式中,与NRM不同的是ARM的传输过程是由从节点启动的,从节点主动发给主节点一个或一组数据或命令帧。一个从节点发给另一个从节点的信息也必须经过主节点中继后再转发给目的节点。该操作方式下,由从节点来控制超时和重发,由主节点发送SRAM命令来设置从节点为ARM操作方式。异步平衡方式(ABM)是一种允许任何节点来启动传输的操作方式。为了提高链路传输效率,节点之间在两个方向上都需要有较高的信息传输质量。在此操作方式下,任何时候任何节点都能启动传输操作,每个节点既可
35、以作为主节点又可以作为从节点,此时节点成为了复合节点。各节点都有相同的一组协议,任何节点都可以发送或接收命令,也可以应答,并且各节点对差错恢复过程都负有相同的责任,一般都是通过SABM命令来设置为该种操作模式的。操作方式与节点类型之间的关系可用表8.3.1来表述。8.3.2 HDLC的帧结构的帧结构HDLC在数据链路上的传输是以帧为单位进行的,信息数据报文及控制报文均按帧的要求来组成的。一个完整的HDLC的帧由标志字段(F)、地址字段(A)、控制字段(C)、信息字段(I)和帧校验字段(FCS)等组成,其结构如图8.3.2所示。图8.3.2 HDLC的帧结构1.标志字段(F)标志字段以唯一的01
36、111110的8个比特在帧的两端来定界,指明帧的起始和前一帧的终止。在用户网络接口的两侧,接收端不断地搜索标志序列,用于一个帧起始时刻的同步。当接收到一个帧之后,节点继续搜索这个序列,用于判断该帧的结束。通常,在不进行帧传送的时刻,信道仍处于激活状态,标志字段也可以作为帧与帧之间的时间填充序列。在这种状态下,发送方不断地发送标志字段,而接收方则检测每个收到的标志字段,一旦发现某个标志字段后面不再是一个标志字段,便可以认为一个新的帧已开始传送。01111110有可能出现在帧中间,可能被误认为标志(F),从而破坏帧的完整性。为了避免出现这种情况,通常采用“0”比特插入、删除的方法以实现数据的透明传
37、输。当发现连续出现5个连续的“1”时,发送设备便在其后添加一个“0”,然后继续发送后面的数据比特,这就保证了除标志帧外,所有的帧均不会出现多于5个连续“1”的情况。在接收端,在检测到起始标志后,会检测5个连“1”之后的比特,若发现连续5个“1”后的第6个比特是“0”,则将其删除以恢复原始的比特信息;若发现第6个比特是“1”,则再检测下一个比特,即第7个比特。如果第7个比特是“0”,就认为该组序列是标志字段;若第7个比特是1,则表示该序列错误,接收端拒绝接收此帧。采用“0比特插入、删除”技术后,帧中的信息字段中可以传输任意比特。这种性质称为数据的透明性,该传输方式称为透明传输方式。2.地址字段(
38、A)地址字段通常为8比特,可寻址256个地址。当采用扩展格式时,第一个字节的最后一位是“0”,表示后面紧跟的8比特也是地址的组成部分;如果第2个字节的最后一位也是“0”,则表示后面紧跟的8比特也是地址部分。可以按照此方式扩展,当地址字段为一个字节时,这个字节的最后一位是“1”,这时地址的实际长度是7比特,一个字节实际寻址128个地址,而每个8比特组的最低位是“1”还是“0”,取决于它是否是最后一个地址字节。除最后一个字节外,其他8比特组组成了7比特的地址段。地址字段的构成如图8.3.3所示。图8.3.3 HDLC的帧结构的地址字段某一地址也可分配给多个节点,这种地址称为组地址。利用一个组地址,
39、所传输的帧能被组内所有拥有该地址的节点接收,但当一个从节点或复合节点发送响应时,它仍应当做唯一的地址。不论是一个字节的地址、还是多个字节的地址,由8位地址“11111111”所表示的是整个节点,称为为广播地址,含有广播地址的帧将传送给链路上所有的节点。另外,还规定全“0”地址为无节点地址,该地址不分配给任何节点,仅用于测试。3.控制字段(C)控制字段用来标志帧的类型和功能,使对方节点执行特定的操作。根据帧类型的不同,相应的控制字段也不同。如果控制字段的第一个比特是“0”,则该帧就是一个信息帧(称为I帧);如果第一个比特是“1”,第二个比特是“0”,则该帧就是一个监控帧(称为S帧);如果第一个比
40、特和第二个比特都是“1”,则该帧是一个无序号的帧(称为U帧)。所有这三种类型的帧中的控制字段都包含一个查询/结束(Poll/Final,P/F)位。一个I帧在P/F位两侧具有两个3比特的流量和差错控制序列,称为N(S)和N(R)。N(S)描述了当前发送帧的序号,是一个帧自身的识别号码。N(R)指明了在双向交流中期望返回帧的序号,N(R)是应答字段。如果最近接收的一个帧是正确的,N(R)字段中的值将是序列中下一帧的序号;如果最近接收的一帧有错误,N(R)字段的值将是这个坏帧的序号,表明需要重传此帧。在S帧中的控制字段包含一个N(R)值,没有N(S)值。S帧的作用是在接收端没有数据发送时使用,返回
41、的N(R)值是期望发送的下一个帧的序号。S帧并不传送数据,因此并不需要N(S)值来标识发送帧的序号。S帧中在P/F位之前的两位编码位用于表示S帧的功能,并与主节点配合实现流量和差错控制。U帧无N(R)和N(S)值,是一个无序号的帧。在U帧的P/F位之前有2比特编码位,在U帧的P/F位之后有3比特编码位,共5比特、32种组合,用于表示U帧的类型和功能。当控制字段是一个字节时称为基本控制字段,当控制字段是两个以上字节时称为扩展控制字段。HDLC控制字段的结构如图8.3.4所示。图8.3.4 HDLC的帧结构的控制字段4.信息字段信息字段可以是任意二进制比特序列。比特序列的长度未作严格限定,其上限受
42、链路差错特性或节点缓冲区容量的限制。一般规定最大信息长度不超过256个字节,但监控帧S中不可含有信息字段。5.帧校验序列字段(FCS)帧校验序列字段可以采用16位CRC对两个标志字段之间整个帧的内容进行校验。FCS的生成多项式由CCITT V.41建议规定,为X16+X12+X5+1或CRC-32。8.3.3 HDLC帧类型和功能帧类型和功能HDLC有信息帧(I帧)、监控帧(S帧)和无编号帧(U帧)3种不同类型,各类帧中的控制字段的格式及比特定义如表8.3.2所示。控制字段中的第1位或第1、2位表示传送帧的类型;第5位是P/F位,即轮询/终止位。当P/F位位于命令帧内时,起轮询作用,即当该位为
43、“1”时,要求被轮询的从节点给出响应,此时,P/F位称为轮询位(或P位);当P/F位于响应帧时,称为终止位(或F位),即当P/F=1时,表示接收双方确认结束。P/F具有如下具体功能:(1)轮询位P的功能。按照NRM方式,具有P=1的命令帧表示请求从节点响应。例如,主节点可以通过P=1的I帧或S帧来请求从节点传送I帧。从节点不能异步自动发送I帧,但在异步方式时,从节点可以异步传送I帧,主节点利用P=1的命令帧请求从节点尽快对该帧进行响应,并强制从节点做出应答。(2)终止位F的功能。在NRM方式下,从节点必须将最后一个响应帧的F位置1,然后从节点停止发送,直到从节点又收到主节点发送来了P位置1的命
44、令帧为止。在异步响应方式下,从节点仅在回送P=1的命令帧的应答帧时,将F位置1,同时从节点不停止发送。这说明别的响应帧可跟在带F位置1的响应帧后进行传送。F位置1的响应不表示从节点的传送结束。P位置1的命令帧和F位置1的响应帧总是成对出现的,即一个P位置1的命令帧,必然有一个F位置1响应帧与之对应,并且在一条链路上,在给定的时间内,只可能有一个带P位置1的命令帧是未完成的。利用P/F位的对称性和N(R)可较早地检测出I帧的顺序出错。为了进行连续传送,需要对帧进行编号,控制字段中包括了帧的编号。对于信息帧I帧来说,I帧是以控制字段第1位为“0”来标志的。信息帧控制字段中的N(S)表示本节点当前发
45、送的帧序号,发送方可以不必等待确认地连续发送多个帧。N(R)表示本节点期望接收到对方节点的下一个帧的序号。N(S)和N(R)均为3位二进制编码,可取值07。对于监控帧S帧来说,它以控制字段的第1、2位为“10”来标志的。S帧不携带信息字段。S帧的控制字段的第3、4位为S帧类型编码,共有4种不同组合,如表8.3.3所示。“00”表示接收就绪(RR)。主节点可以使用RR型S帧来轮询从节点,即希望从节点传送编号为N(R)的I帧,若存在这样的帧,便进行传送。从节点也可以用RR型S帧来响应,表示从节点期望接收的下一帧的编号为N(R)。如果一个节点原先用RNR表示处于忙的状态,则它可以用RR命令表示本节点
46、现在已经可以接收数据。RR型S帧可用于所有类型的链路。“01”表示拒绝(REJ)。主节点或从节点发送,用以要求发送方对从编号为N(R)开始的帧及其以后所有的帧进行重发,同时说明N(R)以前的I帧已被正确接收。REJ型S帧仅用于全双工。“10”表示接收未就绪(RNR),它表示编号小于N(R)的I帧已被正确接收,但目前正处于忙状态,尚未准备好接收编号为N(R)的I帧,这可用来对链路流量进行控制。RNR型S帧可用于所有类型的链路。“11”表示选择拒绝(SREJ),它表示接收端检测出编号为N(R)帧出错,要求发送方发送编号为N(R)的单个I帧,并说明其他编号的I帧已经全部确认。SREJ型S帧仅用于全双
47、工通信。可见,接收就绪RR帧和接收未就绪RNR帧有两个主要功能:第一,这两种类型的S帧均可用来表示从节点已或未准备好接收信息的状态;第二,确认编号小于N(R)的所有接收到的I帧。拒绝REJ和选择SREJ帧,用于向对方节点指出序号为N(R)的帧发生了差错。REJ帧对应GobackN的策略,用于请求重发N(R)起始的所有帧,而N(R)以前的帧已被确认,当收到一个N(S)等于REJ帧的N(R)的I帧后,REJ状态即可清除。SREJ帧对应选择重发策略,当收到一个N(S)等于SREJ帧的N(R)的I帧后,SREJ状态即可清除。但任意一个节点在给定的时间内,只能建立一个REJ(或SREJ)异常状态,必须在
48、前一个异常状态清除以后,才能发送REJ(或SREJ)帧。对于无编号U帧,它用于链路的建立、拆除以及多种控制功能,这些控制功能用5个M1M5位来定义,可定义32种附加的命令或应当功能。HDLC无编号U帧的名称和功能如表8.3.4所示。SNRM、SARM、SABM方式设置命令:SNRM将从节点设置为正常应答方式;SARM将从节点设置为异步应答方式;SABM将复合节点设置为异步平衡方式。SNRME、SARME、SABME扩充方式设置命令:扩充方式的控制字段为两个字节。SNRME将从节点设置为扩充正常应答方式;SARME将从节点设置为扩充异步应答方式;SABME将复合节点设置为扩充异步平衡方式。DIS
49、C断开链路命令:用于终止已建立的各种操作方式。当一个主节点或复合节点要关断链路时,发送一个DISC命令,它所期待的应答是UA。该命令的接收端进入断链方式,在此方式下仅能接受置方式命令。UA无编号确认:用于对方收到无编号命令后的确认响应。它是对一些置方式命令以及SIM、DISC和RESET命令的肯定确认。DM:用于对置方式命令的否定应答。SIM置初始化方式命令:用于重新初始化链路。当收到UA应答后初始化操作完成。RIM请求初始化方式应答:RIM由从节点发送,用于催促主节点发送SIM命令。当不能执行一个置方式命令所要求的功能时,从节点可以使用RIM响应。主节点随后发送一个SIM命令对链路进行初始化
50、。RD请求断链应答:请求主节点将链路置于断开状态。当从节点要终止链路操作时,可发出RD响应,主节点随后应发送DISC命令。XID交换标志命令:用于请求一个节点的标志或特征。应答也是XID。UI无编号信息帧:在初始化方式下,两个节点用无编号信息帧UI交换数据和命令。FRMR帧拒绝:接收端通知发送端收到一个错误帧。该错误帧接收端不能理解或违反协议规则。UP无编号轮询帧:用于探询一个节点或同时探询多个节点。RSET重置命令:在数据传送过程中,复合节点用它对链路上一个方向上的数据流重新进行初始化。TEST测试命令:用于对数据链路控制的基本测试。8.3.4 HDLC操作规程操作规程1.数据链路的建立主节