首页 理论教育 在数据链路层需要解决的另一个问题——数据的丢失

在数据链路层需要解决的另一个问题——数据的丢失

时间:2022-08-19 理论教育 版权反馈
【摘要】:在数据链路层需要解决的另一个问题是:如果发送方发送帧的速度超过了接收方的接收速度,则会导致接收方因来不及接收而造成数据的丢失,例如:当发送方运行在一台快速的计算机上,而接收方运行在一台慢速的计算机上时,上述这种情况将很可能发生。若发送窗口达到最大尺寸,则发送方的链路层需要强制关闭其网络层,直到有一个缓存区空闲出来为止。

在数据链路层需要解决的另一个问题是:如果发送方发送帧的速度超过了接收方的接收速度,则会导致接收方因来不及接收而造成数据的丢失,例如:当发送方运行在一台快速(或负载较轻)的计算机上,而接收方运行在一台慢速(或负载重)的计算机上时,上述这种情况将很可能发生。显然,此时发送方若持续地以很高的速度发送帧,则接收方将很快无法再处理这些持续到来的帧,从而不得不丢弃一些帧。因此,必须要采取某种措施来阻止上述这种情况的发生。

通常,数据链路层采用基于反馈的流控制(Feed-back based Flow Control)机制来进行流量控制。在该方法中,一般是通过定义一些良好的规则,这些规则规定了发送方什么时候可以发送下一帧。通常,由接收方给发送方回送信息,告诉发送方被允许发送多少数据,而在没有得到接收方许可之前,禁止发送方向接收方发送数据帧。目前,常见的基于反馈的流控制机制包括基于回退N帧(Go Back N)技术的机制与基于选择性重传(Selective Repeat)技术的机制,这两种机制统称为滑动窗口机制(Sliding Window Mechanism)。此外,除了利用滑动窗口机制来进行流量控制之外,为了进一步提高数据传输效率,数据链路层通常还采用捎带确认、发送窗口与接收窗口等设计思想与技术,其中:

◆ 捎带确认(Piggybacking):在收发双方在进行通信时,为了提高信道的利用率,将利用捎带确认的方法进行数据帧的确认。其原理如下:当一方收到一帧A,如果其网络层有一个新的分组很快到来,则通过在其数据帧的头部设置的ACK域中捎带对A的确认,然后再将该数据帧发送给对方(而不单独发送确认帧给对方,从而节约了网络带宽)。否则,若在一定的时间周期内其网络层都没有新的分组到来,则发送一个单独的确认帧给对方。

◆ 发送窗口:是指发送方维持的一组序列号,分别对应于发送方允许它发送的帧,或它已发送但仍未被确认的帧。由于当前发送窗口内的帧最终可能在传输过程中丢失或被破坏,因此,发送方需要用缓存区保存好这些帧以备重传。若发送窗口的大小为n,则发送方需要n个缓存区来存放未被确认的帧。若发送窗口达到最大尺寸,则发送方的链路层需要强制关闭其网络层,直到有一个缓存区空闲出来为止。

◆ 接收窗口:是指接收方维持的一组序列号,分别对应于一组接收方允许接收的帧。任何落在接收窗口外面的帧都将被接收方无条件丢弃。当一个新到的帧的序列号等于接收窗口的下界时,则接收方会把该新到帧以及接收窗口(即接收方缓存区)中原来保存的其后续各帧依次传递给网络层,并生成一个确认帧给发送方,然后将接收窗口前移。

发送窗口和接收窗口统称为滑动窗口,其原理如图3.4所示。在该图中,对应的滑动窗口大小为8,假定该滑动窗口为将发送窗口,则在图3.4(a)所示的初始时刻,由于第1帧到第8帧均处于滑动窗口之中,因此这8个帧均可被数据链路层发送出去,而第9帧以及其后的所有帧则均是不允许被发送出去的。假定第1帧被对方正确收到且发送方收到了对方回送过来的对第1帧的确认帧,则发送方即可将发送窗口往前滑动1位,如图3.4(b)所示,此时,第9帧将进入到发送窗口之内,从而第9帧也可被数据链路层发送出去了。基于滑动窗口的流量控制原理如图3.5所示。

图3.4 滑动窗口示意

图3.5 基于滑动窗口的流量控制原理示意

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈