码迷,mamicode.com
首页 > 其他好文 > 详细

计算机网络读书笔记-----数据链路层的可靠性

时间:2015-08-01 01:10:52      阅读:142      评论:0      收藏:0      [点我收藏+]

标签:网络   数据链路   停止等待协议   arq协议   

此篇是为了引出TCP的可靠机制。

  • 停止等待协议:

在计算机网络发展的初期,通信网的传输质量普遍不是很好,所以数据传输的差错率较大。所以数据链路层就必须解决可靠传输的问题。

停止等待是最简单也是最基本的数据链路层协议
工作原理如下:
发送端每发送完一帧后就停止发送,等待接收端的确认,如果收到了接收端发来的确认帧,就继续发送下一帧。
在接收端,每收到一个无差错的帧,就将其交付给上层,并给发送端返回一个确认帧。

接收端如果收到有差错的帧,就悄悄的丢弃这个帧,其余什么也不做。发送端长时间没有收到接收端发来的确认,认为刚才传输的分组丢失了,就会重传这个分组。这叫做超时重传。

要实现超时重传,要在每发送完一个分组后设置一个超时计时器,如果在超时计时器之前收到了确认,就撤销已设置的超时计时器。
技术分享

注意三个问题:
1、A在发送完一个分组的时候,必须要保留一份副本,为发生超时重传时做准备,当收到B发送过来的确认时,才会删除刚保留的副本。
2、超时重传时间要比数据在分组传输的平均往返时间更长一些。
3、分组和确认分组都必须进行编号,这样才能明确哪一个发送出去的分组收到了确认,而哪一个分组没有收到确认。

确认丢失和确认迟到:
技术分享

图a中说明的是B所发送的对M1的确认丢失了。所以A在设定的超时重传时间内没有收到确认,但无法知道到底是自己所发送的分组出错,丢失还是B发送的分组丢失,所以在超时定时器到期后重传M1。B收到A重传的M1:

1、首先丢弃这个重复的分组,不向上层交付
2、向A发送确认(因为上次发送的确认是丢失了)

图b说明的是类似的另一种情况,B对M1的确认没有丢失,而是滞后。但是
B则会收到想重复的M1,同样是丢弃重复的M1,重传确认分组,A则会收到重复的确认分组,A则直接丢弃。

这种方法优点是简单,但缺点是信道利用率太低。

技术分享
Td为A发送分组所需要的时间,RTT为往返时间,Ta为B发送确认分组的时间。
所以信道利用率为
技术分享

当往返时间RTT远远大于分组发送时间Td,信道率就会大大的降低。
为了提高传输效率,采用流水线传输,如图所示
技术分享

发送方可以连续发送多个分组,而不必每发完一个分组就停下来等待对方的确认,二图对比,后者明显提高了信道利用率。

  • 连续ARQ协议:

技术分享

图a表示位于发送窗口中的5个分组都可以发送出去,而不必等待对方的确认
图b表示,发送方每收到一个确认分组,窗口就前移一个。

接收方一般采用累积确认的方式:
也就是说:接收方不用对发送方发送的每一个分组都发送确认,而是可以在收到几个分组后,对按序到达的最后一个分组发送确认。这样就表示这个分组之前的所有分组都正确收到了。
累积确认的好处是:容易实现,即使确认丢失也不必重传。

但是很明显这样做缺点就是:不能像发送方反映已正确收到的所有分组的信息。
也就是说:如果发送方发送了前5个分组,中间三个丢失了,发送方无法知道后面三个分组的下落,所以在将后面三个分组重传一次,这种方法也叫GO-back-N
,表示需要在退回来重传已经发送的N个分组。

摘自:计算机网络.第五版.谢希仁

版权声明:本文为博主原创文章,未经博主允许不得转载。

计算机网络读书笔记-----数据链路层的可靠性

标签:网络   数据链路   停止等待协议   arq协议   

原文地址:http://blog.csdn.net/u014307117/article/details/47177739

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!