第三章:数据链路层

来源:互联网 发布:运动文胸 知乎 编辑:程序博客网 时间:2024/06/06 02:16

3.3 数据链路层

  数据链路层是OSI参考模型中的第二层,介乎于物理层和网络层提供的服务的基础上向网络层提供服务。数据链路层的作用是对物理层传输原始比特流的功能的加强,将物理层提供的可能出错的物理连接改造成为逻辑上无差错的数据链路,即使之对网络层表现为一条无差错的链路。数据链路层的基本功能是想网络层提供透明的和可靠的数据传送服务。透明性是指该层上传输的数据的内容、格式及编码没有限制,也没有必要解释信息结构的意义;可靠的传输使用户免去对丢失信息、干扰信息及顺序不正确等的担心。

 3.3.1 数据链路层功能

  数据链路层最基本的服务是将源机网络层来的数据可靠的传输到相邻节点的目标机网络层。为达到这一目的,数据链路层必须具备一系列相应的功能,它们主要有:如何将数据组合成数据块,在数据链路层中将这种数据块称为帧,帧是数据链路层的传送单位;如何控制帧在物理信道上的传输,包括如何处理传输差错,如何调节发送速率以使之与接收方相匹配;在两个网路实体之间提供数据链路通路的建立、维持和释放管理。

 1.帧同步功能
  为了使传输中发生差错后只将出错的有限数据进行重发,数据链路层将比特流组织成以帧为单位传送。帧的组织结构必须设计成使接收方法能够明确的从物理层收到比特流中对其进行识别,也即能从比特流中区分出帧的起始与终止,这就是帧同步要解决的问题。由于网络传输中很难保证计时的正确和一致,所以不能采用依靠时间间隔关系来确定一帧的起始与终止的方法。下面介绍几种常用的帧同步方法。
  (1)字节计数法。这种帧同步方法以一个特殊字符表征一帧的起始,并以一个专门字段来标明帧内的字节数。接受方可以通过对该特殊字符的识别从比特流中区分出帧的起始,并从专门字段中获知该帧中随后跟随的数据字节数,从而可确定出帧的终止位置。
  面向字节计数的同步规程的典型实例是DEC公司的数字数据通信报协议DDCMP(Digital DataCommunications Message Protocol)。DDCMP采用的帧格式如下:

8142888168-131064

16(位)

SOHCountFlagAckSegAddrCRC1DataCRC2

  格式中控制字符SOH标志数据帧的起始。Count字段共有14位,用以指示帧中数据段中数据的字节数,数据段最大长度为8×(214-1)=131064位,长度必须为字节(即8位)的整倍数,DDCMP协议就是靠这个字节计数来确定帧的终止位置的。DDCMP帧格式中的Ask、Seg、Addr及Flag中的第2位。它们的功能分别类似于本节稍后要详细介绍的HDLC中的N(S)、N(S)、Addr字段及P/F位。CRC1CRC2分别对标题部分和数据部分进行双重校验,强调标题部分单独校验的原因是,一旦标题部分中的Count字段出错,即失却了帧边界划分的依据,将造成灾难性的后果。
  由于采用字段计数方法来确定帧的终止边界不会引起数据及其它信息的混淆,因而不必采用任何措施便可实现数据的透明性,即任何数据均可不受限制地传输。
  (2)使用字符填充的首尾定界符法。该法用一些特定的字符来定界一帧的起始与终止,本节稍后要介绍的BSC规程便是典型例子。为了不使数据信息位中出现的与特定字符相同的字符被误判为帧的首尾定界符,可以在这种数据字符前填充一个转义控制字符(DLE)以示区别,从而达到数据的透明性。
  (3)使用比特填充的首尾定界符法。该法以一组特定的比特模式(如01111110)来标志一帧的起始与终止。本节稍后要详细介绍的HDLC规程即采用该法。为了不使信息位中出现的与该特定模式相似的比特串被误判为帧的首尾标志,可以采用比特填充的方法。比如,采用特定模式01111110,则对信息位中的任何连续出现的5个“1”,发送方自动在其后插入一个“0”,而接受方则做该过程的逆操作,即每收到连续5个“1”,则自动删去其后所跟的“0”,以此恢复原始信息,实现数据传输的透明性。比特填充很容易由硬件来实现,性能优于字符填充方法。
  (4)违法编码法。该法在物理层采用特定的比特编码方法时采用。例如,曼彻斯特编码方法,是将数据比特“1”编码成“高-低”电平对,将数据比特“0”编码成“低-高”电平对。而“高-高”电平对和“低-低”电平对在数据比特中是违法的。可以借用这些违法编码序列来定界帧的起始与终止。局域网IEEE 802标准中就采用了这种方法。违法编码法不需要任何填充技术,便能实现数据的透明性,但它只适用采用冗余编码的特殊编码环境。
  由于字节计数法中Count字段脆弱性(其值若有差错将导致灾难性后果)以及字符填充实现上的复杂性和不兼容性目前较普遍使用的帧同步法是比特填充法和违法编码法。

 2.差错控制功能
  通信系统必须具备发现(即检测)差错的能力,并采取措施纠正之,使差错控制在所能允许的尽可能小的范围内,这就是差错控制过程,也是数据链路层的主要功能之一。
  接收方通过对差错编码(奇偶校验码或CRC码)的检查,可以判定一帧在传输过程中是否发生了差错。一旦发现差错,一般可以采用反馈重发的方法来纠正。这就要求接受方收完一帧后,向发送方反柜一个接收是否正确的信息,使发送方据此做出是否需要重新发送的决定。发送方仅当收到接收方以正确接收的反馈信号后才能认为该帧已经正确发送完毕,否则需要重发直至正确为止。
  物理信道的突发噪声可能完全“淹没”一帧,即使得整个数据帧或反馈信息帧丢失,这将导致发送方永远收不到接受方发来的信息,从而使传输过程停滞。为了避免出现这种情况,通常引入计时器(Timer)来限定接收方发回方反柜消息的时间间隔,当发送方发送一帧的同时也启动计时器,若在限定时间间隔内未能收到接收方的反柜信息,即计时器超时(Timeout),则可认为传出的帧以出错或丢失,就要重新发送。
  由于同一帧数据可能被重复发送多次,就可能引起接收方多次收到同一帧并将其递交给网络层的危险。为了防止防止发生这种危险,可以采用对发送的帧编号的方法,即赋予每帧一个序号,从而使接收方能从该序号来区分是新发送来的帧还是已经接受但又重发来的帧,以此来确定要不要将接收到的帧递交给网络层。数据链路层通过使用计数器和序号来保证每帧最终都能被正确地递交给目标网络层一次。
  有关差错控制的详细内容,将在本节稍后再做介绍。

 3.流量控制功能
     首先需要说明一下,流量控制并不是数据链路层特有的功能,许多高层协议中也提供流量控制功能,只不过流量控制的对象不同而已。比如,对于数据链路层来说,控制的是相邻两节点这间数据链路上的流量,而对于运输层来说,控制的则是从源到最终目的之间端对端的流量。
  由于收发双方各自使用的设备工作速率和缓冲存储空间的差异,可能出现发送方发送能力大于接收方接收能力的现象,若此时不对发送方的发送速率(也即链路上的信息流量)做适当的限制,前面来不及接收的帧将被后面不断发送来的帧“淹没”,从而造成帧的丢失而出错。由此可见,流量控制实际上是对发送方数据流量的控制,使其发送速率不致超过接收方的速率。也即需要有一些规则使得发送方知道在什么情况下可以接着发送下一帧,而在什么情况下必须暂停发送,以等待收到某种反馈信息后再继续发送。本节稍后将要介绍的XON/XOFF方案和窗口机制就是两种常用的流量控制方法。

 4.链路管理功能
     链路管理功能主要用于面向连接的服务。在链路两端的节点要进行通信前,必须首先确认对方已处于就绪状态,并交换一些必要的信息以对帧序号初始化,然后才能建立连接。在传输过程中则要维持该连接。如果出现差错,需要重新初始化,重新自动建立连接。传输完毕后则要释放连接。数据链路层连接的建立,维持和释放就称做链路管理
  在多个站点共享同一物理信道的情况下(例如在局域网中),如何在要求通信的站点间分配和管理信道也属于数据层链路管理的范畴。

 3.3.2 差错控制

  用以使发送方确认接收方是否正确收到了由它发送的数据信息的方法称为反馈差错控制。通常采用反馈检测和自动重发请求(ARQ)两种基本方法来实现。

 1.反馈检测法
  反馈检测法也称回送校检法或“回声”法,主要用于面向字符的异步传输中,如终端与远程计算机间的通信。这是一种无须使用任何特殊代码的差错检测法。双方进行数据传输时,接收方将接收到的数据(可以是一个字符,也可以是一帧)重新发回发送方,由发送方检查是否与原始数据完全相符。若不相符,则发送方发送一个控制字符(如 DEL)通知接收方删去出错的数据,并重新发送该数据;若相符,则发送下一个数据。
  反馈检测法原理简单,实现容易,也有较高的可靠性。但每个数据均被传输两次,信道利用率很低。这种差错控制方法一般用于面向字符的异步传输中,因为这种场合下信道效率并不是主要矛盾。

 2.自动重发请求法(ARQ法)
     实用的差错控制方法,既要传达室输可靠性高,又要信道利用率高。为此可使发送方将要发送的数据帧附加一定的冗余检错码一并发送,接收方则根据检错码对数据帧进行差错检测,若发现错误,就返回请求重发的应答,发送方收到请求重发的应答后,便重新传送该数据帧。这种差错控制方法就称为自动重发请求法(Automatic Repeat reQuest),简称ARQ法。
     ARQ法仅需返回少量控制信息,便可有效地确认所发数据帧是否正确被接收。ARQ法有几种实现方案,空闲重发请求(Idle RQ)和连续重发请求(Continuous RQ)是其中最基本的两种方案。
  (1)空闲重发请求(Idle RQ)。空闲重发请求方案也称停等(Stop and Wait)法,该方案规定发送方每发送一帧后就要停下来等待接收方的确认返回,仅当接收方确认正确接收后再继续发送下一帧 。空闲重发请求方案的实现过程如下:
  ①发送方每次仅将当前信息帧作为待确认帧保留在缓冲存储器中;
  ②当发送方开始发送信息帧时,随即启动计时器;
  ③当接收方收到无差错信息帧后,即向发送方返回一个确认帧;
  ④当接收方检测到一个含有差错的信息帧时,便舍弃该帧;
  ⑤若发送方在规定时间内收到确认帧,即将计时器清零,继而开始下一帧的发送;
  ⑥若发送方在规定时间内未收到确认帧,(即计时器超时),则应重发存于缓冲器中的侍确认信息帧。
  从以上过程可以看出,空闲RQ方案的收、发送方仅需设置一个帧的缓冲存储空间,便可有效地实现数据重发并确保接收方接收的数据不会重份。空闲RQ方案最主要的优点就是所需的缓冲存储空间最小,因此在链路端使用简单终端的环境中被广泛采用。
  (2)连续重发请求(Continuous RQ)。连续重发请求方案是指发送方可以连续发送一系列信息帧,即不用等前一帧被确认便可发送下一帧。这就需要在发送方设置一个较大的缓冲存储空间(称作重发表),用以存放若干待确认的信息帧。当发送方到对某信息帧的确认帧后便可从重发表中将该信息帧删除。所以,连续RQ方案的链路传输效率大大提高,但相应地需要更大的缓冲存储空间。连续RQ方案的实现过程如下:
  ①发送方连续发送信息帧而不必等待确认帧的返回;
  ②发送方在重发表中保存所发送的每个帧的备份;
  ③重发表按先进先出(FIFO)队列规则操作;
  ④接收方对每一个正确收到的信息帧返回一个确认帧;
  ⑤每一个确认帧包含一个惟一的序号,随相应的确认帧返回;
  ⑥接收方保存一个接收次序表,它包含最后正确收到的信息帧的序号;
  ⑦当发送方收到相应信息帧的确认后,从重发表中删除该信息帧的备份;
  ⑧当发送方检测出失序的确认帧(即第N号信息帧和第N+2号信息帧的确认帧已返回,而N+1号的确认帧未返回)后,便重发未被确认的信息帧。
  上面连续RQ过程是假定在不发生传输差错的情况下描述的,如果差错出现,如何进一步处理还可以有两种策略,即GO-DACK-N策略和选择重发策略。
  GO-DACK-N策略的基本原理是,当接收方检测出失序的信息帧后,要求发送方重发最后一个正确接收的信息帧之后的所有未被确认的帧;或者当发送方发送了N个帧后,若发现该N帧的前一个帧在计时器超时后仍未返回其确认信息,则该帧被判为出错或丢失,此时发送方就不得不重新发送出错帧及其后的N帧。这就是GO-DACK-N(退回N)法名称的由来。因为,对接收方来说,由于这一帧出错,就不能以正常的序号向它的高层递交数据,对其后发送来的N帧也可能都不能接收而丢弃。GO-DACK-N法操作过程如图3.13所示。图中假定发送完8号帧后,发现2号帧的确认返回在计时器超时后还未收到,则发送方只能退回从2号帧开始重发。



图3.13 Go-back-N 法举例

  GO-DACK-N可能将已正确传送到目的方的帧再重传一遍,这显然是一种浪费。另一种效率更高的策略是当接收方发现某帧出错后,其后继续送来的正确的帧虽然不能立即递交给接收方的高层,但接收方仍可收下来,存放在一个缓冲区中,同时要求发送方重新传送出错的那一帧。一旦收到重新传来的帧后,就可以原已存于缓冲区中的其余帧一并按正确的顺序递交高层。这种方法称为选择重发(SELECTICE REPEAT),其工作过程如图3.14所示。图中2号帧的否认返回信息NAK2要求发送方选择重发2号帧。显然,选择重发减少了浪费,但要求接收方有足够大的缓冲区空间。



图3.14 选择重发举例法

 3.3.3 流量控制

  流量控制涉及链路上字符或帧的发送速率的控制, 以使接收方在接收前的足够的缓冲存储空间来接收每一个字符或帧。例如,在面向字符的终端——计算机链路中,若远程计算机为许多台终端服务,它就有可能因不能在高峰时按预定速率传输全部字符而暂时过载。同样,在面向帧的自动重发请求系统中,当待确认帧数量增加时,有可能超出缓冲器存储空间,也会造成过载。下面介绍两种常用的流量控制方案:XON/XOFF方案和窗口机制。

 1.XON/XOFF方案
  增加缓冲存储空间在某种程度上可以缓解收、发双方在传输速率上的差异,但这是一种被动、消极的方法。因为,一方面系统不允许开设过大的缓冲空间,另一方面对于速率显著失配并且又传送大量数据的场合,仍会出现缓冲空间不够的现象。XON/XOFF方案方案则是一种相比之下更主动、更积极的流量控制方法。
  XON/XOFF方案中使用一对控制字符来实现流量控制,其中XON采用ASCII字符集中的控制字符DC1,XOFF采用ASCII字符集中的控制字符DC3。当通信路上的接收方发生过载时,便向发送方发送一个XOFF字符,发送方接收XOFF字符后便暂停发送数据;等接收方处理完缓冲器中的数据,过载恢复后,再向发送方发送一个XON字符,以通知发送方恢复数据发送。在一次数据传输过程中,XOFF、XON的周期可重复多次,但这些操作对用户来说是透明的。
  许多异步数据通信软件包均支持XON/XOFF协议。这种方案也可用于计算机向打印机或其它终端设备发送字符,在这种情况下,打印机或终端设备中的控制部件用以控制字符流量。

 2.窗口机制
  为了提高信道的有效利用率,如前所述采用了不等待确认帧返回就连续发送若干帧的方案。由于允许连续发送多个未被确认的帧 ,帧号就需采用多位二进制才能加以区分。因为凡被发出去蛤尚未被确认的帧都可能出错或丢失而要求重发,因而这些帧都要保留下来。这就要求发送方有较大的发送缓冲区保留可能要求重发的未被确认的帧。(待续)


原创粉丝点击