打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
数据链路层的流量控制与可靠传输机制

这是非常重要考点,务必把握!

什么是流量控制?简单说就是要控制发送方的发送数据的速率,使得接收方来得及接收,一个基本的方法就是让接收方来控制发送方的数据流,告诉它可以发多少。

在这里有一个非常重要的概念:窗口,或者叫滑动窗口。

其工作原理就是发送方维持一个发送窗口,接收方维持一个接收窗口。当然,我这里是将问题简化了,因为信息是可以双向传送的而目前只讨论一侧的情况。只有在接收窗口向前滑动,与此同时也发送了确认,发送窗口才有可能向前滑动。

在这里,最起码的原则是:

1,发送窗口不能大于接收窗口

2.发送窗口有最大值限制,也就是说要能区分接收端发出的响应是属于当前这一轮传输还是上一轮传输。(命题点!

数据链路层协议几种形式本质上都是基于窗口的控制,

(1)停止等待协议

(2)GBN协议

(3)选择重传协议

在分析之前,还需要清楚如何才能保证可靠传输呢?一般可以通过确认帧 和超时重传机制来完成。 确认帧是一个没有数据部分的控制帧。

停止等待协议比较简单,发一个收一个,没什么问题。

GBN协议:发送方发送完一个数据帧后,并不是在等待确认,而是接着发数据,而接收方由于窗口为1,所以只能按序接收数据。这样一个快,一个慢,麻烦就来了。

如果此时到达接收方的帧不是接收方所需要的,那么只能把简单的丢弃该帧和后续的所有帧。

其次,GBN协议还支持累计确认。

这里要区分捎带确认和累计确认

说GBN支持累计确认是对的。由于我们忽略了一个方向的传输,实际上是两个方向的传输,所以在接收方发送确认帧时,它也可能需要发送数据,这个时候将确认帧同时发送,这就是捎带确认。

而累计确认是说,假设我现在发送了5个帧,接收方是一个个确认没错,但如果现在发送方接收到一个确认帧序号为4.则表明4之前的1 2 3号帧都已经收到了。

SR协议的基本思想:双方都维持一个大于0的窗口,若一帧出错,其后续帧先存入接收方的缓冲区中,同时要求发送方重传出错帧,一旦收到重传帧之后,就和原先存在缓冲区中的其余帧一起按正确的顺序送至主机。选择重传协议避免了重传已经正确传输的帧,所以相比较GBN而言效率是提高了的,而代价就是缓冲区的增大。

这里有一个小点,就是接收缓存和接收窗口,对于正确接收按序的帧如果还没有上交主机,应该是放在接收缓存里的,而对于那些未按序接收的,则一定是在接收窗口里,等待缺少的帧到之后,在一起放到接收缓存中。

同时我们提到了对比特帧进行编号,编号是一种防止帧重复的策略,而超时重传是一种防止帧丢失的策略。

现假设用n个比特对帧进行编号,那么可编号的个数为2^n.需要仔细思考的就是新旧窗口如何判别?

现以3为例,那么编号为0 1 2 3 4 5 6 7

讨论GBN协议:结论为2^n-1.当也就是发送窗口最大为7.观察发送窗口为6 7 8的情况。

当发送窗口为6时,现发送0 1 2 3 4 5共6个帧,此时如果全部超时,发送方只能返回确认帧为0,接收方从0开始重新发送。

当发送窗口为7时,先发送0 1 2 3 4 5 6共7个帧,分析同上,不会出现问题。

问题出在当发送窗口为8的时候,此时发送了0 1 2 3 4 5 6 7共8个帧,并且也全部超时,这个时候发送方告诉接收方重传0号帧。但是序号被用完了,需要开始新一轮的循环,如果8个帧被正确接收了序号也是要重新回到0,这就出现了问题,发送方无法区分,到底对方数据是一个没收到呢?还是全部都收到了!

讨论SR协议:结论为2^(n-1)依然以3进行分析,也就是说最大窗口为4.讨论发送窗口为4 5 的情况。

当发送窗口为4时,发送方发送帧0  1 2 3,假设全部正确接收,则接收方下一轮发送序号为4 5 6 7,如果全部超时,则重新发送0号帧,没毛病

当发送窗口为5时,发送方发送0 1  2 3 4假设全部正确接收,则下一轮发送序号应该 5 6 7 0 1,问题出现了,0号序号被再次使用,所以就区分不出来了。

总结:写的比较乱,所以自己的思想还需要升华。。。。

附上几道题作为知识的应用:

例1:source:2017年真题(一道非常优秀的考题)

分析:从时刻T0到时刻T1,由于乙方发的确认的R 3,3说明期待3号,说明已经收到三个了,序号为S00,S10 S20

对于第二问,这题有一个陷阱就是说虽然乙方不发送新数据了,但已经发送的数据你甲方得接收吧,明白了这点,接下来就好写了。

GBN的发送窗口为7,现在收到0 1 2 发送窗口移动至 3 4 5 6 7 0 1,由于3 4号帧也已经发送了,所以还可以再发送5个帧,现在甲方对乙方的确认已经到S41,之后乙方发送了1号帧,甲方接收。其中第一个帧为S52 最后一个帧为S12。这里让我困惑的一个点就是乙方明明已经发送到3号帧了,为什么甲方的确认不是4呢

审题发现,本题使用的是捎带确认,非常重要的点,不是累计确认OK!!!且GBN是按序接收de ,所以甲方的确认号为2.

第三问:甲方不出现新的超时且未收到乙方新的数据,S20超时,说明之后发的 2 3 4号帧都得重发,故重发3个帧

重发的第一个帧为S23.

本题精华:再次理清累计确认和捎带确认!!!

订正:理解错误。并不是累计确认和捎带确认导致确认号为2,而是GBN是按序接收的,导致了我现在期待2,但是你没给我2,反而给了3,但我仍然还是想要2.

例2:source:天勤书本

对于窗口大小为n的滑动窗口,最多可以有(n-1)帧已发送但没有确认。

分析:依然是上面分析的思路,别想当然,如果发送n个帧的话,又没法子区分新帧和旧帧了。

总结:再次加深对GBN按序接收的理解!

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
王道考研 计算机网络笔记 第三章:数据链路层
计算机网络知识梳理(4)——TCP/UDP、TCP三次握手与四次挥手
OSI1至7层简答
计算机网络知识点全面总结(有这一篇就够了!!!)
「计算机网络」计算机网络知识,图解分析,清晰易懂
移动通信协议
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服