首页 理论教育数据链路层基本设计内容简介

数据链路层基本设计内容简介

【摘要】:物理层以比特为单位进行数据传输,数据链路层以帧为单位进行数据传输,并为每个帧计算校检和,这是为了检测和纠正物理层所传输的原始“比特流”的差错。停止等待协议是数据链路层中最基本最简单助协议。

网络层调用数据链路层的服务,数据链路层为网络层提供服务,通过网络层与数据链路层之间的接口,以服务原语的形式完成服务的调用与被调用。因而设计数据链路层时必须完成下面几个特定的功能,实现在不太可靠的物理链路上实现可靠的数据传输,为网络层提供高质量的服务。

1.数据链路的服务

数据链路层提供的基本服务是在两个网络实体之间,建立一个或多个数据链路(逻辑)连接,并在确立的连接上交换数据。当数据交换结束后,结束这两个网络实体之间的连接,简单地说就是将源机器中来自网络层的数据传输给目的机器的网络层。

数据链路层可以设计成各种不同的服务,一般有3种基本服务:有确认的面向连接的服务,它为网络层提供了可靠的信息;有确认的无连接服务,它适用于无线系统的不可靠信道;无确认的元连接服务,这适用于数据传输误码率很低的情况。

2.数据帧

物理层传送比特流不能保证它是无差错的,要到链路层才能进行检测,如果需要就要进行纠正。物理层以比特为单位进行数据传输,数据链路层以帧为单位进行数据传输,并为每个帧计算校检和,这是为了检测和纠正物理层所传输的原始“比特流”的差错。

帧是具有一定长度和格式的信息块,一般由一些字段和标志组成。不同网络其帧格式或长度可以不同,但将为“流”分成帧的方法基本相同。一般有下面四种常用的方法。

(1)字符计数法:这种方法是在帧头部使用一个字段来标明帧内字符效。它的缺点是记数值可能由于传输差错而篡改。

(2)带填充字符的首尾界符法:每一帧以ASCH字符序列DLE STX开头,以DLEETX结束。它的缺点是当传送程序或浮点数时,DLE STX和DLE ETX可能出现在数据中,干扰帧界的确定。

(3)带填充位的首尾标志法:每个帧以01111110作为开始和结束标志字节,当发送方遇到5个连续的1时自动插入一个0。它允许帧包含任意个数的比特,且允许每个字符的编码为任意比特长,两帧的边界也可以通过位模式唯一识别。

(4)物理编码违例法:仅仅适用于在物理介质的编码策略中采用冗余技术的网络。

一般说来,任何成帧的方法对网络层都是完全透明的,很多数据链路层协议使用字符技术与其他方法相结合来提高可靠性。当一个帧到达时,由字符技术字段来确定帧尾,同时只有当帧界符出现在帧尾且校检和正确时,这个帧才会被接收为有效帧;否则,输入流将被继续扫描直到遇到下一个定界符。

3.差错检测和校正

由于信息以电信号的形式在网络中传输,所以错误是不可避免的。这些错误有的是由于传输线路上的噪声,有的是由于信号的衰减。系统必须检测和处理两种类型的错误:数据破坏和数据丢失。也就是说,如果数据在传输过程中被修改,差错控制将会检测到破坏的数据。同样,差错控制也能检测到通信通道损坏引起传输过程中数据的丢失。一般是使用校验和以及循环冗余校验(CRC)来检测错误。虽然在数字传输中,差错很少发生,但现在无线通信越来越普遍,差错率要比光纤干线大很多。因此,传输差错将是未来要面临的很重要的问题。

现在网络研究者已经设计了两种基本的策略来处理差错:一种方法是只加入足够的冗余位,使接受方知道有差错发生,但是什么样的差错却不知道,然后请求发送方重发;另一种方法是每一个要发送的数据块上附加足够的冗余信息,这样接收方就能推导出已发送的字符是什么。(www.chuimin.cn)

4.差错控制

差错控制服务保证数据正确无误到达目的地。与许多的网络概念一样,差错控制服务保证并不是百分之百的可靠,被破坏的数据依然会到达目的主机。但是,差错控制会检测到错误的发生.并要求发送方重发此数据,从而保证目的主机收到的是正确的数据。

一般常用的方法是向数据发送方提供有关接收方接收情况的反馈信息。具体做法是当发送方发出一帧数据时,同时启动定时器,该定时器到设定值时就清零。在设定的时间内,如果接到接收方的确认帧ACK,则认为帧校正确接收,定时器清为零;如果收到否认帧NAK,则表示帧的传送发生差错,发送方需要重新发送那个帧;如果到了设定的时间仍然收不到接收方的任何应答帧,则认为帧已经丢失,要重传前面刚发的那个帧。这里很可能会出现已经传出的帧和确认帧被丢失了,因此发送方会重传此帧,于是接收方可能会两次或多次收到同一帧,这样就会把同一帧多次交给网络层。为了避免这样的情况,如果对发出的帧进行编号,接收方就可以辨别是否是同一个帧还是新的帧。

5.流量控制

当发送方在一台负载较轻的机器上运行,而接收方在一台负载较重的机器上运行时,就会出现发送方的传送能力比接收方的接收能力大的现象,如果不加以控制,则发送方不断高速送出的数据帧会“淹没”接收方。为了确保发送方发送数据包的速度不会快于接收方处理接收信息的速度,必须提供一种有效的数据流控制方法。流量控制保证发送方和接收方处理数据的速度一致。

一般的解决问题的办法是使用流量控制来限制发送方所发出的数据流量,使发送速率不会超过接收方接收处理数据能力的速率。其基本原理是发送方发完帧后,在没有获得接收方直接或间接的允许确认之前,禁止发出帧;如果收到对方的允许确认,就继续发送帧。基于这种原理的流量控制协议有很多,如停止等待协议(也叫ARQ协议)、连续ARQ协议、窗口滑动协议,还有选择重传的ARQ协议等。

(1)停止等待协议。停止等待协议是数据链路层中最基本最简单助协议。停止等待协议的处理如下:数据链路层从网络层接收一个分组后,加上数据链路层帧头和帧层,再把它经物理层发送出去,同时启动定时计数器,等待接收方发出的确认帧的到来。接收方链路层收到数据帧后,它必须首先发出一个确认帧ACK(认为所接收的数据正确无误)或否定性确认帧NAK(认为接收的数据有误)给发送方的链路层,再对接收的帧做出处理。正确接收的帧提交给网络层,错误接收的帧丢弃。发方如果在计时时间范围内得到的是ACK,则发下一帧。如果收到的是NAK或者计时时间已到而没有收到ACK,则将重发刚才送出去的帧。还要给帧编上一个序号来解决帧的被重传问题。

(2)连续ARQ协议。通过对ARQ协议进行定量分析,可以看出它的缺点是通信信道的利用率不高,因此产生另外两种协议来克服这一缺点,即连续ARQ协议和选择重传ARQ协议。连续ARQ协议的工作原理是:在发送完一个数据帧后,没有停下来等待应答帧,可以连续再发若干个数据帧。如果再发送过程中又接收到了接收端发来的应答帧,那么还可以接着发送数据帧。可见由于减少了等待时间,信道的通信量增加了,利用率提高了,但容易使传送效率降低。因为当发生差错时,发送方要重传差错以后的所有数据帧,即使原来已经正确传送过的数据帧也要重新传送。因此当信道的传输质量很差并且误码率较大时,连续ARQ协议不一定适用。

(3)选择重传ARQ协议。如果设法只重传出现差错的数据帧或者是定时器超时的数据帧,那么必须加大接收窗口,以便先收下发送序号不连续但仍处在接收窗口中的数据帧,等到所缺序号的数据帧收到之后再一并交给上层,这就是选择重传ARQ协议。

(4)窗口滑动协议。停止等待协议实现方法简单,但其信道传送效率很低。现在实际上多采用以HDLC为代表的连续发送协议。这种协议允许发送方连续发送多帧,接收方发回一独立确认帧对前面接收到的情况做出回答。如果接收方有数据帧要发送给对方,也可采用捎带技术对前面的接收情况做出应答。

连续发送提高了传输效率,捎带确认可充分利用信道带宽,但却带来了复杂性。究竟允许传输多少个数据帧,多长时间才能发回确认,就变得很重要。在数据链路层中,常用的是滑动窗口技术。滑动窗口协议要求任意时刻发送方都必须保持一连续序号表,对应于允许发送的帧的序号(称作发送窗口);同样,接收方也保持一个窗口,对应于允许接收的帧(称之为接收窗口)。

在发送方,可以按顺序号发送网络层交来的数据,不必等待确认帧,同时保留一个没有获得确认的帧的序号表,即发送窗口。一个确认帧表示对此帧以前序号的各帧都已经确认,因此,发送一个数据帧,窗口的上限编号加1;接收到一个下限确认,窗口下限编号加1。在接收方,当一帧数据到来时,先检查是否在接收窗口内,不在则简单地丢弃,向对方发ACK或NAK。发出确认后,如果刚收到的帧是窗口下限帧,则把窗口向前移动,即把窗口上限加1。图3—17所示是发送窗口和接收窗口都是2的情况下的窗口滑动情况。

图3—17 发送、接收窗口都是2时的窗口滑动情况