第5章 数据链路层技术.doc_第1页
第5章 数据链路层技术.doc_第2页
第5章 数据链路层技术.doc_第3页
第5章 数据链路层技术.doc_第4页
第5章 数据链路层技术.doc_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第5章 数据链路层技术51 OSIfRM中的数据链路层511 数据链路层功能512数据链路层服务52数据链路控制原理与技术521 基本的传输控制过程522链路级流量控制523 链路级差错控制53数据链路层协议实例531 高级数据链路控制规程HDLC532 因特网的数据链路协议 数据链路是构成端端逻辑信道的一段节点-节点间数据通路,是在一条数据线路基础上通过数据链路层协议建立起来的、具有它自己的数据传输格式(帧)和传输控制功能的节点节点间“逻辑联结”。 数据链路层为该层的对等通信实体间提供建立、维持和拆除一条或多条数据链路所必需的功能、过程,向网络层实体提供透明的、可靠的链路级数据传输服务。 在本章中,“链路” (1ink)是指实际存在的物理链路,与前面章节中所述的传输线路等同;“数据链路”(data link)是指通过协议控制建立起来的逻辑链路,反映出两点之间的传输联结关系。 本章首先综述OSIRM中定义的数据链路层功能和服务,然后主要讲述救据链路控制的原理与技术。最后,介绍两个最重要的数据链路控制协议实例。5.1 OSIRM中的数据链路层 数据链路层(DL)是OS!参考模型中的第2层,介于物理层和网络层之间。数据链路层的目的是在物理层提供的数据线路连接和比特流传输功能的基础上,为它的上层对等实体(网络层实体)之间建立、维持和释放“节点-节点”间的数据链路联结,并在这个联结上为传送数据链路层数据单元(帧)提供功能性和过程性的方法。5.11 数据链路层功能数据链路层在物理层提供的服务基础上,将网络层递交来的数据单元在邻接的两节点之间,实现透明的、高可靠的传输。这里所谓的“透明的”传输,是指无论什么类型(或结构)的数据,都按其原来的形式传输。为达到这一目的,数据链路层必须具备一系列相应的功能,归纳如下。1数据链路管理 当网络中的两个节点要进行通信时,发送方必须确知接收方是否已经处在准备接收的状态。为此,通信的双方必须先要交换一些必要的信息,以便建立起一种相互关系(逻辑联结关系)。在数据链路层,这种关系称为数据链路(DataLink)。同样地,在传输数据过程中还要维持这个数据链路,而在通信完毕时要释放这个数据链路。涉及数据链路的建立、维持和释放等方面的功能就叫做数据链路管理。2装帧与帧同步 在数据链路层,数据的传送单位是帧(Frame)。所以,当网络层实体递交并请求发送它的数据后,数据链路实体首先必须将该数据按照协议的要求,装配成数据帧,然后在数据链路控制协议的控制下发送到数据链路上去。在该链路的另一端则是相反的过程。另一方面,成批的数据如此被装配成数据帧,一帧一帧地在数据链路上传输,还必须保持它们的顺序性,以免在接收卸帧以后发生乱序。有关帧传输顺序性方面的功能就叫做帧同步。3流量控制 发送方发送数据的速率必须使接收方来得及接收,以免造成帧丢失。当接收方来不及接收时,就必须及时控制发送方的发送速率,以使收发双方的速率达到匹配。4差错控制 任何实用的通信系统都必须具有检测和纠正差错的能力,尤其是数据通信系统,要求最终的数据差错率达到极低的程度。因此,差错控制过程也是数据链路层的主要功能之一。5透明传输 如前所述,所谓透明传输就是不管所传数据是什么样的比特组合(例如,文本型数据、图像型数据、机器代码型数据等),都应当能够在链路上安全可靠地传输。当所传数据中的比特组合恰巧与协议的某个控制信息的结构完全一样时,就必须采取适当的措施,使接收方不会将这样的数据错误地认为是某个控制信息,这样才能保证数据链路上的传输是安全可靠的。6寻址 在一条简单的点点式链路上传输数据时,无所谓寻址问题。但是,在多点式链路上传输数据时,则必须保证每一帧都能送到正确的接收方,接收方也应当知道发送方是哪一个节点,所以数据链路层也存在简单的寻址问题。5.12 数据链路层服务 OSI/RM的数据链路层的功能结构及其相关要素,可以用图51所示的模型表示,它在相邻节点间实现透明的、高可靠的数据传输,并以此功能作为向网络层提供的服务数据链路服务。那么,如图51所示,数据链路层实体是这种服务的提供者,而上层的网络层实体就是它的服务用户,两层之间服务关系的接口就是数据链路服务访问点DLSAP。 数据链路层向网络层提供的基本服务,是将链路上源结点的网络层数据在逐条链路上传输,直到宿结点的网络层。如图51所示,在源结点网络层实体将数据交给数据链路层。数据链路层利用它的数据链路联结支持,把数据传输到宿结点的对等层,然后再递交给它的服务用户网络层实体。图5-1 数据链路层结构及其服务 数据链路层可以提供多种不同类型的服务,实际提供的服务因系统不同而不同,但基本上有3种。1.无确认、无联结服务 无确认、无联结服务是指源节点宿节点发送独立的数据帧,而且宿结点对收到的帧不做确认。数据链路层提供这种服务时,双方事先不必建立联结,因而也不存在释放联结的问题。如果某个帧由于线路差错而被丢失,数据链路层也不作任何处理,恢复工作留给上层去完成。 这类服务适用于数据线路差错率很低的情况,也适用于传输实时语音数据的情况,因为语音数据流不能容许因差错恢复所带来的过大的延时。许多局域网的数据链路层都提供无确认、无联结的服务。2有确认、无联结服务 为了提高可靠性,引入了有确认、无联结服务。这种服务仍然不需要建立联结,但是对一个被发出去的帧要进行单独确认。用这种方式,发送方就可以知道一帧是否已经安全到达目的地。如果在指定时间内一个帧未能到达目的地,则可以重传发生错误的帧。3面向联结的服务 数据链路层为网络层提供的最复杂的服务是面向联结服务。采用这种服务,源结点和宿结点在传输任何数据之前,必须先建立数据链路联结。在这种联结上传输的每一个帧被编上序号,数据链路层保证传输的帧被对方收到,且只收到一次,帧的先后顺序也不能改变。数据链路层的面向联结服务为网络层实体之间的交互提供了最可靠的数据传输服务。 使用面向联结服务时,链路上的数据传输过程分为3个不同阶段。第一阶段是建立联结,并把通信双方的帧传输变量和有关的计数器进行初始化:第二阶段进行数据帧的传输过程;第三阶段是断开数据链路连结,并释放有关变量、缓冲区和其他用于维持联结的资源。52 数据链路控制原理与技术 在一条数据线路两端的DTE之间,只有当执行某一种链路传输控制规程(协议)而建立起双方的逻辑联结后,一对通信实体之间的逻辑通路才可被称为“数据链路”。数据链路层的功能和服务,要通过在数据链路上执行数据链路控制规程来具体实现。 为了在数据链路上进行有效的、可靠的数据传输,需要对传输操作实施严格的控制和管理。完成这种控制和管理功能的规则和约定,称为链路控制规程(Link Control Procedure)。根据数据链路层的功能与服务要求,任一种数据链路规程都必须完成如下几个基本的控制与管理: 口 链路构型及其工作方式; 口 基本的传输操作与顺序,即传输的阶段性控制和链路管理; 口 数据传输流量的控制,即速度匹配控制; 口 数据传输差错的控制,即差错检测与恢复控制。下面几个小节分别讨论以上这几个基本控制问题的原理与技术。521 基本的传输控制过程 一对数据链路层实体之间进行数据传输,必须满足一定的条件和遵循一套约定好的操作规则和顺序,以及对异常情况的处理办法等,才能保证传输的可靠性和有效性。系统设计者必须预先制定出如何控制数据传输的这些操作规则和约定,即操作规程。另外,因链路构型的不同(如点点构型与多点构型),还存在是否寻址的问题。下面分两种情况来讨论。1点点链路 点点链路(Point-To-Point Link)上的操作规程比较简单,但它却是各种不同构型链路操作规程的基础。结合图5-2来说明一种最基本的半双工方式的传输操作(图中大写字母代表发送单元、小写字母代表接收单元;带圈的S代表起始态,E代表结束态)。图5-2 点点链路传输控制过程(半双工) 设一条链路上的两个通信实体分别为“站1”和“站2”。各站的主次属性,是在次数据传输联结开始时自动确定的。如图5-2所示,在某一时刻的S态,站1有数据欲传送到站2,则站1主动发出询问信息(ENQ),这时它自动居为主站地位。当站2接收到ENQ后,自动地居为次站地位,并且如果本站已准备好接收,给对方回送一个认可信息(ack),就可建立起完成一次传输联结的半双工链路(在本书的后文中,规定用大写字母表示发送信息,用小写字母表示接收信息)。 主站收到ack之后,即以同步方式或者异步方式开始发送数据帧(DATA)。但为了可靠起见,发送一定数量数据后,必须暂停一会,等待对方的认可(ack)后方可继续发送后续数据。待全部数据发送完毕,发送一个结束信息(EOT),表示本站这次传输已经结束,到达E态。至此,两个站的一次数据传输完成,链路联结结束,双方的主次关系亦到此结束。 当然,由于实际通信线路会造成传输过程中的差错,另外,接收站也有尚未准备好接收数据的情况。针对这些情况,接收站可以回送否认信息nak,或者不回送任何信息。对于发送站,收到nak后,应立即重发在此之前刚刚发送过的信息(ENQ或DATA)。如果发送站在等待回送期间收不到任何信息,则认为出现了异常情况,可能是接收站对接收信息的隐式否认,也可能是明式响应信息在传输中被丢失。发送站必须有正确处理这种异常情况的措施。任何站对本站中出现的异常情况的处理过程,称为“恢复过程” (后面将要讨论这个问题)。 一般地,一次数据传输的操作控制过程,可分为3个阶段: (1)建立联结:沟通双方的链路联结,确认发送接收(主次)关系 (2)数据传输:进行数据的分帧传输与认可; (3)终止联结:确认传输结束,结束双方的逻辑联结(终止双方的发送接收关系)。 以上传输控制3阶段,对于任何链路构型和不同的双工性,都是共同的。 对于点-点链路,上面所描述的操作规程及主次关系,对双方是对等的,也即任何一方都可居为主站而掌握主控权。但是,为避免发生竞争冲突,实际中当主站结束传输后应发送一个权利转移信息(RVl),以表明转换主控权。在许多应用场合下,往往固定一个主站,主控权始终不转移。例如计算机主机与终端之间的联结属这种情况。在这种固定形式下,若次站有数据要发送,只能等待主站的请求,次站才可允许进入数据传输阶段。 在全双工链路上,由于可以同时双向传输数据和控制信息,所以实际上是同时在两个方向上执行上述操作规则。在后述内容中将了解到这方面的情况。2 多点链路 多点链路(Multi-point Link)上的操作方式的选择,主要取决于是否存在一个被指定的主站。若有一个主站,则数据传输只能在主站与某一个次站之间进行,次站之间不传输数据。这种场合下普遍采用的所有操作规程,都是从一种所谓查询与选择方案变化而来的。这里所谓的查询:是指主站按某种顺序逐个地向次站请求数据,次站若有数据,则建立链路联结,将数据传给主站;选择:是指主站有数据送给某一次站,有选择地通知该次站“数据即将送到”。待链路联结后,将数据传给次站。 “查询与选择”方案中的传输控制3阶段,与点点链路上基本相同,只是由于存在一个以上的次站,在“建立”阶段需在控制信息中附加地址信息,通信实体必须具有寻址能力,并且在有差错情况下的“查询”与“选择”过程有所区别。图5-3所示为“查询”与“选择”方案的链路建立过程。数据传输阶段和结束阶段与点对点链路相同,图中做了简化。 主站通过“查询”操作向次站请求数据,以允许次站将本站的数据传送给主站。开始,主站发出询问信息ENQ并携带被查询的次站站址,以表示向该次站请求数据。被查询的次站收到ENQ后,若有数据要送,则立即进入数据传输阶段,以发送数据来兼作ack的响应和建立链路联结的作用。否则,回送nak,主站送出EOT以结束对这个次站的查询。若主站收到的响应不正确或无响应信息,则做异常情况处理,进入恢复过程。如此对一个次站的操作完毕后,又开始查询下一个次站,反复循环进行下去。图5-3 多点链路的传输控制过程(半双工) 主站通过“选择”操作来完成主站到次站的数据传输。开始,主站发出询问信息ENQ并携带被选择次站的地址,以通知该站“即将有数据送到”。若被选择次站已准备好接收,回送认可信息ack及本站站址。主站收到ack后链路联结完成,即可进入传输阶段将数据逐帧送出。若次站未准备好,可回送nak。主站收到nak或不正确响应,可以坚持(或不坚持)再送ENQ。若成功,则可进入传输阶段,否则发出EOT以结束链路联结,转向下一个选择过程。当有差错时,可能出现异常情况,进入相应的恢复过程。3关于异常情况及其恢复过程 由于线路噪声、线路瞬断、操作失误或设备失灵等原因,可能导致系统的控制操作违背了预先建立的操作规程。这种情况下就称系统出现了异常情况。 系统设计者应当事先预计到各种异常情况的发生,并且应采取相应的措施以使系统重新建立正常的操作过程。使系统操作由异常转为正常的过程称为恢复过程。 在53节介绍实用的传输控制规程时,我们将会看到,通信实体中的“定时器”和“计数器”在异常情况的检测及恢复过程中起着极其重要的作用。关于恢复过程的具体内容,必须结合实用的链路传输控制规程来讨论。 以上讨论的只是最基本的、原理性的操作规程。不管采用哪一种实用的链路传输控制规程,原理上大体如此。具体还有更完善的、更全面的细节规定,因不同的规程而异。522 链路级流量控制 流量控制(Flow Contr01)简称为“流控”。这里所说的流控,是协调链路两端的发送接收站之间的数据流量,以保证双方的数据吞吐量达到平衡的一种技术。 “流控”又称为速度匹配。通常的情况是:发送端的吐量往往大于接收端的吞量,因为接收者往往要对接收作息做更多的处理或解释,花费较多时间。同时,接收缓冲器的容量通常也是受限制的。 目前用得较多的链路流控技术有两类:停等式流控和滑窗式流控。下面分别予以介绍。1停等式流控技术 停等式(Stop-And-Wait) 流控是一类最简单也是最常用的流控方式。它又分为XONXOFF开关式流控和协议式流控两种。 (1)XONXOFF开关式流控 这里,XON是ASCII码表中的DCl字符,转义为“请继续发送”:XOFF是ASC码表中的DC3字符,转义为“请停止发送”。发送XON/XOFF控制字符的权利放在接收端,它对发送端的发送“闸门”施行开关式的控制,故称开关式流控。如图5-4所示,假设链路上传输的数据以字符为基本单元,接收端通过设置一个界面指针PTR对接收缓冲区中存放的数据字符量进行实时的监测。当缓冲区占据量逐渐上升时,PTR往上移动。达到预定的上限时立即向发送站发出XOFF字符。当缓冲区占据量逐渐下降时,PTR往下移动。达到预定的下限时,立即向发送站发出XON字符。 在发送站,发送数据的同时,应随时接收对方发来的控制信息。在收到XOFF字符后,立即停止发送数据,等待接收XON字符。一旦收到XON,即可继续发送数据。 在一条链路上,通过采用这种开关式的流量控制,有效地避免了接收缓冲区的溢出和处理能力的过荷。具体应用时,应根据实际的数据速率、传播距离、接收处理速度、缓冲区大小等因素,确定合适的下限值和上限值,以确保流控的有效性和可靠性。 另外还应注意到,应用这种流控方式要求两点之间有一条反向数据链路,用于传输反馈信息XON和XOFF。当然,反向链路的数据速率可以比正向链路的速率低得多。在多数情况下,采用全双工链路最为方便,以便配合等速率的双向数据传输。开关式流控与差错控制没有任何联系,它是在一帧内或一个报文内任意时刻执行的纯流控技术,所以它一般只用在简单的近距离的低速异步传输中。 (2)协议式流控 数据传输之前,发送端已将欲传输的数据分组装配成一定长度的数据帧,并给予编号。发送时,一次发送一个数据帧后便主动停顿,等待接收端回送的表示认可的确认帧(ACK)。一旦收到确认帧,就可继续发下一个数据帧。如此重复,直到发完全部数据。确认帧可以由ASCII码表中的ACK字符构成,或者由双方约定的其他合适的代码组合构成。 如图5-5所示,发送端先发出0号数据帧,经传播时延tp如秒和传输时间tf秒后,整帧数据到达接收端。接收端经过fs秒对该帧数据处理完毕后立即发出确认帧ACK(0)。发送端收到ack后发出1号数据帧。发完后,等待ACK(1)。如此重复执行。图5-5 协议式流控原理图 由此可见,发送端的发送速度完全受控于接收端的响应信息。如果接收端对一帧数据的处理(包括对差错的处理)时间较长,ACK发出的时间就比较晚,甚至当接收端因某种原因而不能继续接收数据时,可以发出表示拒绝的响应信息,迫使发送端停止发送数据。因此,发送端完全根据接收端对数据流量的要求来调整发送速度,保证了数据传输的可靠。但应当指出,有两个主要因素严重地影响着链路利用率(在有差错控制时叫“链路传输效率”),即:数据帧长度L(相应的时间参数是tf)和链路长度(相应的时间参数为tp)。链路的传播时延tp也直接地影响着链路利用率。若忽略接收处理时间ts及响应帧的传输时间,那么,不考虑差错时的链路利用率U由下式近似地给出:定义a=tp/tf为归一化传播时延因数,则上式成为:2滑窗式流控技术在前面讨论的停等式流控中,发送站一次只允许发送一个数据帧,然后就得等待对方站的认可,方可继续发送。这种方式下,当链路比较长时(例如a01时),链路利用率显著下降。在应用条件不变(主要是。值不变)的情况下,为了提高链路利用率,惟一的解决办法是要允许发送站一次能连续发送多个数据帧,使一次连续发送数据的时间远远大于等待认可的时间,即满足不等式:式中n为一次允许连续发送的数据帧数目。这时, (5-3)式变成: 由(5-4)式看出,在相同a值下,链路利用率随n值成正比提高。当n2a时,利用率可接近极限值100。从这一设想出发,提出了滑窗式(Sliding Window)流控技术。 滑窗式流控原理是这样的。在发送站,随时保持一个发送帧序号表和发送帧号变量NS。序号表中存放的帧序号是本站允许连续发送的数据帧序号集,发送变量NS的值表示即将发送的帧序号。类似地,在接收站也随时保持有一个接收帧序号表和接收帧号变量NR。序号表中存放的帧序号是本站允许连续接收的数据帧序号集,接收变量NR的值表示当前期望接收的帧序号。上述两个序号表分别称为发送窗口和接收窗口。窗口的大小以上限值和下限值为界,两种窗口的上下限值不一定是相同的。滑窗式流控是通过即时地调整接收窗口的上下限值来实现的。 通常用等分圆内可旋转以改变大小的扇形面积来表示滑动窗口,如图5-6所示的阴影覆盖的扇形。落入发送窗口内的序号表示允许连续发送的所有帧序号。NS值等于该窗口下限,每新发出一帧,窗口下限推进一个号,NS增加1;每收到对一个帧的认可,则将窗口上限推进一个号。如果窗口上限和下限推进的速度保持同步,则可保持发送窗口大小Wd值不变。 落入接收窗口(用阴影覆盖)内的序号表示本站可以连续接收的帧序号集。落到窗口外边的帧,一律被删除。NR值等于窗口下限值,每新接收一个帧,下限值推进一个号,NR增加1;每发出对一个帧的认可,窗口上限推进一个号。这样,接收窗口始终以其下限保持跟踪着期望接收的帧号,使窗口的大小始终保持预先确定的Wr值。通过限制接收窗口上限推进的速度,可以控制窗口的大小Wr,以达到控制链路上的数据流量的目的。下面,通过一个例子加以解释。 图5-6 滑动窗口的图形表示要应用滑窗流控技术于实际,必须解决两个参数的选择: (1)最大窗口值Wm应是多少? (2)在Wm确定的情况下,帧序号的计数周期M应是多少? 下面,从估算滑窗式流控方案的链路利用率入手来解决这两个问题。 令W为窗口值,存在两种情况: (1)当W2a+1时,意味着如果接收站没有流控限制的话,发送站的窗口缩小到0之前一定可以收到确认帧,使发送窗口能及时张开以保持连续发送。这时,链路被100利用,如图5-7(a)所示。 (2)当W2a+1时,意味着发送站收到确认帧之前,必然会使窗口缩小到0,从而迫使暂停发送,造成暂时的链路空闲。待收到对前一批的第一帧的确认后,才能使发送窗口张开而恢复发送。如图5-7(b)所示,链路上出现以W帧为一批的成批发送过程,在相邻两批之间出现了空闲期,因此,链路利用率必然小于100。图5-7 窗口大小W值对传输的影响综合上述两种情况,可得链路利用率公式为:式中Wm是无流量限制下的最大窗口值。当Wm=1时,就相当于协议式流控。对于使用地面传输介质的链路,一般可取Wm=7。使用卫星线路的链路,则一般要取Wm=127。所谓最大窗口值Wm,是指在已知具体应用的。值和无流量限制的情况下,能保证链路利用率达到100的W值。为此,令(5-5)式为:可解得wm=1+2a。这是确保链路利用率可达100的最小W值。因此实用中最大窗口值Wm应满足下面不等式:这里,x表示取大于或等于x值的最小整数,例如x=2.5,则x=3。现在假设帧序号的计算周期(模数)为M=2n,n2是用于计数的二进制码的位数。为了在一批最长的连发数据帧中不致出现相同的序号,就应有下面的不等式成立:也即帧序号的最小计数周期M应满足下式: 最后应指出,上述两个参数的确定是在没有流量限制、没有线路差错情况下进行讨论的。在考虑差错控制过程之后,Wm和M的下限值还要增加。523链路级差错控制 链路上的数据传输不仅伴随着流量控制,同时也伴随着差错控制,因为任何实际的传输线路都具有一定的误码率。在实用的传输控制规程中,流量控制与差错控制可以分开来考虑,分别采取措施,但最好能综合在一起考虑。这样有利于减轻通信控制机构的处理负担和减少通信资源在控制方面的开销。 在323节中讲过,数据通信中的差错控制基于两个方面的理论和技术。 (1)差错检测:主要涉及差错控制编码的理论和技术。 (2)差错纠正:分为前向纠错和反馈重发纠错。在数据通信中,主要采用自动重发请求(ARQ)纠错技术。在计算机通信中一般只规定采用反馈重发纠错,因其最终差错率可达到任意小的程度,能满足数据业务的质量要求而获得广泛应用。 ARQ技术主要分为两类,即停等式ARQ和连续ARQ。后者又细分为“返回N组连续ARQ”和“选择重发连续ARQ”两种。停等式ARQ对应于协议停等式流量控制,连续ARQ对应于滑窗式流量控制。流控与差控二者有机地结合在一起,构成一个可靠的数据传输过程。1停等式ARQ纠错技术 下面在522节中的图5-5的基础上来讨论SW-ARQ纠错技术。将该图稍做修改后成为图5-8。这里忽略掉差错编译码的过程。发送站每发完一帧数据后主动停止下来等待接收站的响应帧。接收站收到数据帧后立即进行译码检错及其他处理,若确认该帧正确无误,即发送ACK响应帧,否则发NAK响应帧。发送站收到ACK帧后,开始发送下一个数据帧:若收到NAK帧,则从存储器中取出原来帧的副本再发送一次,又开始等待响应帧。如此反复进行。这个工作原理很简单,但要在实际中使用,还需解决如下两个问题。 (1)丢帧之后的系统恢复。在某种偶然性的严重干扰下,可能会破坏数据帧的完整性,譬如将帧定界符损坏,使接收站无法确认是否收到一个数据帧(不管数据正确与否),因而也就不会发送响应帧。另一种情况是接收站已正确收到数据帧,也发送了响应帧(不管是ACK还是NAK),但在传输中因破坏而丢失了。以上两种不测情况均会引起发送站无休止地等待下去,系统陷入死锁状态。摆脱这种状态的有效办法是在发送站设置一个计时器,每发完一个帧即启动计时。若在规定的时限内收到了响应帧,将计时器复位;若计时器超过时限仍未收到响应帧,则认为已发数据帧丢失,主动将副本重发一次。如此即可恢复到正常传输过程。在图58(b)中标出了计时器超时的情况。图5-8 停等式ARQ纠错过程 (2)防止重帧与帧序号周期。如前所述,如果接收站发送的NAK响应帧丢失了,那么发送站在超时后将原来帧重发一次,这是正确的做法。但若接收站发送的ACK帧丢失了,发送站仍重发原来帧,接收站就会收到两个相同的数据帧,此称“重帧现象”。解决这个问题的办法是对数据帧进行编号。这样,接收站正确收到每一帧后,回送的响应帧也携带刚收到帧的序号。如发现有重帧,将它删除即可。在发送站一边,当发生超时,应先发送一个询问帧ENQ探查对方虚实。作为接收站,应回送带正确帧号的响应帧。这样,发送站即可据此确定该发送哪一帧数据。图5-8(b)所示为上述工作过程。在这种每次只发一帧的停等式传输方式下,数据帧的编号只用“0”和“1两个数即可,即序号周期M=2。因为它基于“一问一答”的机理工作,发送站对每发出的一帧不管什么原因引起重传或中断恢复,不获得对该帧的认可就决不会发送下一帧数据,所以只要能区分前后两帧即可。 停等式ARQ技术的优点是实现比较简单,操作可靠。它的缺点仍然是链路效率受到传播迟延因数。的显著影响,这与停等式流控的情况是一致的。2返回N组连续ARQ纠错技术 返回N组(go-back-N)连续ARQ(以及后面要讲的选择重发ARQ)纠错过程是在滑窗式流控的基础上进行的,两者有机地结合在一起共同完成数据的连续传输过程。为了体现“连续传输”效果和分析问题的方便,暂做如下假设: (1)通信双方的发送接收窗口Wm值均大于(1+2a),保证链路上传输连续数据流; (2)链路是双向的,能保证反向响应帧可靠传输。 返回N组连续ARQ(简写为GBN-ARQ)的基本工作原理是:发送站按照它的窗口大小尽可能地连续发送数据帧,接收站也按它的窗口大小接收数据帧,并及时地回送响应帧。一旦发现某一帧出错,即回送一个NAK响应帧,并从该帧开始连续删除后续的N个帧,然后又继续接收。在发送站,连续发送的过程中,不断地判断响应信息,一旦发现NAK,在发完现行帧后立即将发送窗口下限(NS值)倒回N个序号,从存储器中取出副本重发前面N个帧,然后接发新的帧。双方只要坚持“发送站始终保存当前发送序号以前的N个帧,出错时返回N帧重发:接收站发现错误后删除此后的N帧然后衔接新到帧”的原则,就一定能保证接收数据的正确性和有序性。 如图5-9(a)所示,接收站发现2号帧出错后,回送NAK响应帧:发送站收到NAK时,正在发送4号帧。发完该帧后,返回3帧(从图中看出,N值为3),从2号帧开始重发。在接收站,从2号帧开始连续删除后面的3帧(2、3、4号帧)然后再接收,即可将重发的2号帧衔接上。 对于全双工链路的同时双向数据传输,要求链路两端的站具有相同的发送接收控制机构,执行相同的ARQ控制原则。这时,反向确认信息不必使用专门的响应帧,可由反向数据帧携带传送。如果有一方暂时无数据可发,可改为发送专门的响应帧,或使用填充帧携带确认信息。图5-9(b)所示为全双工传输的纠错过程。图5-9 返回N组连续ARQ纠错过程下面讨论N值如何决定。其实从图5-9不难看出,返回的帧数应等于出错的那一帧再加上由于链路往返一次迟延所造成的漏发帧数,即: 实际上,在计算机通信网中,由于: (1)链路长度不可能固定不变,即。值不确定,这就无法采用固定的N值; (2)数据业务本身具有明显的间歇特性,而且链路上双向数据流量不一定对称。因此,在网络的链路数据传输中,既无法采用同步连续传输,也不能使用固定N值的GBN-ARQ纠错,而常常采用可变N值的GBN-ARQ技术。 在可变N值的GBN-ARQ中,N值是根据接收站返回的确认信息来确定的。而且,发送站不一定要求接收站对每一个收到的帧逐个给予确认,但响应帧必须携带“期望接收帧的序号”。根据所谓的累计确认(Accumulative Acknowledgment)原则,由ACK所携带的帧序号表明对该序号之前的所有数据帧给予确认,那么,发送站不一定要求接收站对每一帧数据给于响应。这样做有两个好处:不担心有些响应帧被破坏或丢失;可减少控制信息开消。例如,若发送站已发出0、1、2、3、4、5号帧,此时收到ACK(3),这表明接收站已收妥0、1、2号3帧数据,作一次性确认,并期望接收3号帧。但要注意这种响应间歇不可太大,以免造成发送窗口闭合而迫使中断发送,降低了传输效率。当然,如果因为传输差错引起丢帧或者是接收站为了限制流量而故意这样做,那应另当别论。 为了说明采用“累计确认”机制的GBN-ARQ过程,将图5-9(a)修改成图510所示那样。假如2号帧被破坏或丢失,接收站只有当收到3号帧之后才能知道,这时它发出一个带帧号的否认响应帧NAK(2),表示期望接收2号帧。发送站收到响应后,已经发完了5号帧,距离2号帧必须返回N=4,从2号帧开始全部重发。又如,连续丢失6、7、0等3帧,只有收到1号帧之后才能知道6号帧未收到,所以发出响应帧NAK(6),请求对方从6号帧开始重发。通过重发,可一次性纠正连续的3帧差错。在标准的链路控制协议(例如在后面第53节中所述的)中,都采用这种“累计确认”机制。图5-10 使用“累积认可”机制的ARQ差错控制过程3选择重发连续ARQ纠错技术 返回N组ARQ技术的明显缺点就是比较严重地降低了传输效率,尤其在长迟延链路上应用时更为明显。它不管偶然发生单个错还是多个错,均一视同仁地返回N帧重发。选择重发ARQ是在它基础上的改进,要求接收站的响应帧中携带出错帧的序号,发送站据此序号从存储器中选出它的副本,插入到发送帧队列前面给予重发。由于这种有选择的重发,避免了对后续正确帧的多余重传,所以它的传输效率明显地提高了。 如图511所示,接收站检出2号帧出错,发出NAK(2)响应帧。发送站收到NAK(2)响应时正在发送4号帧。发完该帧后,即从存储器中取出2号帧副本插入到发送队列的最前面进行重发,随后接发5号帧,而不像GBN-ARQ那样还要将3、4号帧也重发出去。在接收站,发出NAK(2)响应帧后,应将后续到达的正确帧存入缓冲器中。待收到正确的2号帧后,才迅速将缓冲的数据帧跟随在它之后顺序释放出来,然后将新到的5号帧衔接上去。如果按GBN-ARQ方式来计算返回值为N,则接收缓冲器容量至少应能暂存N-1个帧。因此,选择重发ARQ在效率上取得的优点,是以复杂的接收控制机构和缓冲容量为代价换来的。在线路质量较差以致频繁地出现多帧错或单帧连续错的情况下,接收帧的暂存释放及排序问题是比较复杂的操作,需花费较多的处理时间。因此,选择重发ARQ技术在应用方面远不如返回N组ARQ那么广泛。图511 选择重发连续ARQ纠错过程53 数据链路层协议实例 数据链路实体通过执行数据链路层协议来体现该层的功能和服务。目前广泛采用的数据链路层协议基本上可分为两类:1面向字符型链路规程 面向字符型规程早在1960年就开始发展,例如:ISO的基本型控制规程(1S01745),美国国家标准协会(ANSl)的通信控制规程(X3-28),IBM的二进制同步通信规程(BSC),DEC公司的数字数据通信报文规程(DDCMP),还有中国国家标准基本型通信控制规程(GB-3453-82)等,都是属于此类规程。其特点是:以字符作为传输信息的协议数据单元长度的基本计数单位,并规定若干专用的控制字符(直接从ASCII码表中选用或自定义)用作传输控制码(协议语法元素)。2面向比特型链路规程面向比特型规程的概念是1969年在IBM的同步数据链路控制规程(SDLC)的基础上发展起来的,它的特点是:采用特定的二元比特组合来定义协议的控制标识符(协议语法元素),以二元比特作为协议数据单元长度的基本计数单位。两个标准化组织ANSI和ISO以SDLC为基础,分别发展成ANSI高级数据通信控制规程(ADCCP)和ISO的高级数据链路控制规程(HDLC)。53.1 高级数据链路控制规程HDLCISO制定的高级数据链路控制规程(HDLC)的描述,主要由3部分内容组成,即帧结构、规程要素和规程类别。前两部分是对构成规程的各个要素进行说明,第三部分是规程总体结构,规定如何在具体的应用场合下有选择地使用该规程。1HDLC帧结构帧(Frame)是数据链路上传输的一个基本信息单元,也是OSIRM数据链路层的协议数据单元PDU。帧内所携带的正文数据字段有两种:上一层递交来的数据分组;本功能层内部产生的控制类数据。它的基本格式如下:HDLC规程中规定了长格式和短格式两种:长格式包含数据(1字段)和链路控制信息 (C字段);短格式仅包含链路控制信息,只作链路管理和传输控制用的监控帧。各字段意义如表51所示。表51 HDLC帧的各字段(1)帧标志序列(F)帧标志序列F是一个8比特固定组合序列“01111110”,它限定每个帧的开始和结束。因为帧的发送长度是可变的,而且不能预先决定何时开始帧的发送,所以用标志来指明了每个帧的开始和结束。当连续地发送一系列的帧时,一个帧标志可同时用作一个帧的结束标志和下一个帧的开始标志。例如: F,A,C,I,FCS,F,A,C,FCS,F, 在帧与帧之间的空闲期间,可连续地发送F以作为时间填充。例如:F, A, C, I, FCS, F, F, F, F, A, C, I, FCS, F,为了保证标志F的惟一性,发送站必须对标志之间发送的帧比特流进行“0”比特插入的透明性处理(又称“比特夹塞”)如果发现有连续5个“1”比特时,则发送站必须在帧比特流中插入一个“0”比特。于是在帧里(不包括标志F本身)将不会有多于5个连续“1”的比特序列,也就不会出现与标志F相同的比特序列。接收站硬件对收到的帧的内容进行检查,查看有无在连续的5个“1”后面跟随1个“0”的比特组合模式。如果有的话,则接收站便删除紧接在连续5个“1”后面的那个“0”。(2)地址字段A跟在帧开始标志F后面的8个比特是地址段,可有256种组合。当采用扩充寻址方式时,地址长度以8比特为单位进行扩充。扩充的方法是把地址字段的前8比特的第1个比特置为“0”,表示下一个8比特是基本地址的扩充,这样就能扩展地址范围。(3)控制字段C控制段用于标识帧的类型和功能,使对方站执行特定的控制操作。控制段区分3种不同类型的帧,即数据帧(1帧)、监控帧(S帧)和无编号帧(U帧)。后面将专门对控制段的情况做较详细的说明。(4)数据段I数据段(又称“信息段”)跟随在控制段后面,直到帧校验序列之前。这部分包括所要传输的用户数据(上层实体递交的服务数据)。规程对数据段的长度没有限制,但是在具体实现时,要根据通信站的缓冲容量和信道差错特性的实际情况,选择最佳的帧长度。数据段可以有任何形式的比特系列,应是完全透明的。在S帧中不包含数据段,只有I帧和U帧才包含数据段。在U帧中的数据段可用作为:不带顺序编号的简短数据传送;识别信息的交换;伴随拒绝命令的状态信息。(5)帧校验序列FCS每帧都包含有一个循环冗余校验序列FCS,校验范围是这个帧除帧标志以外的内容,即地址A、控制C、数据I等字段。HDLC规程采纳了ITU-T建议的校验生成多项式,即,G(x)=X16+X12+x5+1,故FCS占有16比特。后来又提出用32比特FCS的规定,以增强检错能力,其生成多项式是: G(x)=X32+X26+X23+X22+X16+x12+x11+X10+x8+x7+x5+x4+x2+x+12规程要素规程要素是整个HDLC规程的核心,其全部特性都体现在这里。它包括如下5个部分的内容。(1)数据链路信道状态数据链路信道状态是对数据链路信道是否工作的一种描述,具体划分成“工作”和“空闲”两种状态。当任一个通信站正在发送一个帧、单个放弃序列或帧间时间填充时,数据链路信道便处于工作状态。在工作状态下,该站保留继续传输的权利。当某一通信站在链路上检测出至少有连续的15个“1”比特时,这表明对方通信站已经停止传输。这时便称数据链路信道处于空闲状态。(2)数据链路操作方式HDLC规程定义了3种“操作方式”和3种“非操作方式”。操作方式是:正常响应方式(NRM)、异步响应方式(ARM)、异步平衡方式(ABM);非操作方式是:正常断开方式(NDM)、异步断开方式(ADM)、初始化方式(M)。在NRM方式中,只有得到主站允许传输的明确指示时,次站才开始传输。一次响应可传输一帧或多帧。若是多帧传输,则次站需要明确指示出这次响应传输的最后一帧。NRM方式适用于点对点,尤其是点对多点非平衡式数据链路,并按查询选择方式工作。在ARM方式中,与NRM的区别仅在于:即使没有得到主站允许传输的明确指示,次站也可以开始传输(单帧或多帧)。显然,ARM是按竞争方式工作的,所以它特别适合于点对多点配置的非平衡式数据链路,但只有当多个次站同时发送的可能性很小的情况下,它才是安全的操作方式。 ABM方式只适用于点对点配置的平衡式数据链路,链路两端的组合站具有同等的传输操作权利。在这个操作方式中,任一个组合站既是主站也是次站。当它启动建链时,是处于主站的地位,对方站则处于次站的地位。但在建链完毕后,双方站都有主动发送命令帧 (包括I、S、U帧)的权利。但当一个组合站接收到一个带P位的命令帧后,则要临时以次站的身份回答一个带F位的响应帧。ABM一般是按全双工通信方式传输操作,所以组合站也可以以I帧来作为响应帧。(3)控制字段和参数帧内的控制字段对应于3种帧类型有3种编码格式,如表5-2所示。表5-2 HDLC规程的控制字段编码格式其中:口 N(S)和N(R)分别是发送帧序号和接收帧序号,按某个模数M进行顺序计数。 HDLC规程采用滑窗式流量控制技术,与上一节所述的滑窗式流控原理基本一致。口 PF(Polling/Final)比特,即“探询终结”比特。主站发送命令帧中带“PF=1”时含有“查询”信息,次站必须以带“PF=1”的帧响应;次站发送带“PF=1”的响应帧时含有“响应”信息:数据帧中带有“PF=1”时表示“最后一帧”终结信息。口 2比特长的S编码用于区分不同的S帧(包括接收准备好RR帧、接收未准备好RNR帧、拒绝接收REJ帧和选择性拒绝接收SREJ帧等4种监控帧)。口 5比特长的M编码用于区分不同的U帧(包括置正常响应方式SNRM帧、置异步响应方式SARM帧、置异步平衡方式SABM帧、拆除链路DISC帧、无编号确认UA帧和命令拒绝CMDR帧等6种无编号帧)。(4)命令和响应的功能及其编码HDLC规程定义了S格式和U格式两类命令和响应,分别说明如下:S格式命令和响应主站和次站利用S格式命令和响应,执行编号监控功能,例如确认、询问、暂停数据传输和差错恢复等。S格式的帧没有数据字段,因此发送它或接收它都不会增加帧的顺序编号。表5-3列出S格式帧的控制字段编码。N(R)仍然表示期望接收的帧序号。表5-3 S格式帧的控制字段编码口 接收准备好(RR)帧。任一站发送这个帧,表示本站已准备好接收I帧,并确认先前已经收到的、序号小于N(R)的全部I帧。口 接收未准备好(RNR)帧。RNR帧由主站和次站用来表示本站处于“忙”状态,原因往往是接收缓冲区容量不够而暂时不能接收I帧,但是对编号N(R)以前的已接收帧都给予确认。当本站有能力接收I帧时,可以发送RR、REJ、U格式帧等,或者带PF=1的I帧,以表明本站已消除“忙”状态。口 拒绝接收(REJ)帧。REJ帧相当于GBN-ARQ中的NAK,请求对方站重发从序号为N(R)开始的已发送I帧,但是对编号N(R)以前的已接收帧都给予确认。当收到对方站重发来的I帧时,就清除REJ异常状态。要注意,任一个站在给定时间内,只能建立一个REJ异常状态,必须在前一个异常状态消除以后,才能再发送REJ或SREJ帧。口 选择性拒绝接收(SREJ)帧。SREJ帧相当于SRP-ARQ中的NAK,请求对方站只重发序号为N(R)的那一个已发送I帧,但是对编号N(R)以前的已接收帧都给予确认。关于对SREJ异常状态的清除,与REJ的情况相似。U格式命令和响应U格式命令和响应由主站和次站用来扩充链路控制功能。带U格式传送的帧,不使帧序号有所变化。由5个比特组成的修正码(M),允许扩充多种附加功能。表5-4中列出了几种常用的U格式命名和响应及其控制字段编码。表5-4 U格式帧的控制字段编码口 置方式命令。置方式命令(SARM,SNRM,SABM)各命令帧的功能是请求建立 某一操作方式的数据链路。主站利用SARM和SNRM命令帧,分别向次站请求建立异步响应和正常响应操作方式工作的数据链路。点对点链路的任一个组合站使用SABM命令帧,向另一个组合站请求建立按ABM方式工作的数据链路。这些命令帧中的P=1。收到这些命令的对方站,把本站的状态变量V(S)和V(R)都置“0”,并发出带F=1的UA响应帧。命令帧的源发站收到UA帧之后,也将本站的V(S)和V(R)置“0”,这样就完成了数据链路的建立。置方式命令帧中不包含数据字段。口 拆链(DISC)帧。带P=1的DISC命令帧用来请求拆除前面已建立的任何操作方 式的数据链路,对方站以带F=1的UA响应帧来确认这个拆链请求。“DISCUA”命令和响应的握手作用,使两个站的通信连结关系在逻辑上断开。数据链路的拆链过程将会启动物理层的拆线动作。DISC命令帧内也不包含数据字段。口 命令拒绝(CMDR)帧。大多数有差错的帧都能通过FCS检出,但涉及到链路控 制过程中的异常情况,需要设法报告给主站,CMDR响应帧就是被次站用来向主站报告在帧传输过程中发生异常情况的工具。当次站从主站收到一个无FCS差错的帧但却出现下列情况,就可利用CMDR响应帧向主站报告:收到的命令无效或无法执行;收到的I帧的数据段长度超过现有缓冲器的容量;主站送来的N(R

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论