后退 N 帧协议


后退 N 帧协议基于滑动窗口流量控制技术。如果采用 n 个比特对帧进行编号,其发送窗口尺寸 WTWT 必须满足 1<WT≤2n−11<WT≤2n−1 ,接受窗口尺寸为 1.如果发送床阔尺寸大于 2n−12n−1,会造成接收方无法分辨新、旧数据帧的问题。由于接受窗口尺寸为 1,因此接收方只能按序来接受数据帧。
基本原理:发送方发送完一个数据帧之后,不是停下来等待确认帧,而是可以连续再发送若干个数据帧。如果这时候收到了接收方的数据帧,那么还可以接着发送数据帧。如果某一个帧出错了,接收方只能简单地丢弃该帧及其所有的后续真。发送方超时后需要重新发出该出错帧及其后续的所有帧。由于检查了等待时间,后退 N 帧协议使得整个通信的吞吐量得到了提高。但接收方一发现错误帧,就不再接收后续的帧,造成一定量的浪费,据此改进,得到了选择重传协议。
补充:为什么后退 N 帧协议的发送窗口尺寸 WTWT 必须满足 1<WT≤2n−11<WT≤2n−1 ?
答:假设发送的窗口的大小为 2n2n,发送方发送了 0 号帧,接收窗口发送 ACK1(0 号帧已经收到,希望接受 1 号帧,但是 ACK1丢失),接着发送方发送了 1 号帧,接收窗口发送 ACK2( 1 号帧已经收到,希望接受 2 号帧,但是 ACK2 丢失),依次推类,知道发送方发送了第 2n−12n−1 号帧,,接收方发送 ACK 2n2n(丢失),此时不能再发送数据了,因为已经发送了 2n2n 个帧,但是一个确认都没有收到,所以过一段时间 0 号帧的计时器会到达预定的时间进行重发,此时发过去接受方认为是新一轮 0 号帧还是旧一轮重传的呢?接收方并不知道,所以很有可能接收方就把新一轮的 0 号帧当作旧一轮的帧接受了,但实际上这个 0号帧是重传的,所以出现了错误,即发送窗口的大小不能是 2n2n .
现在假设发送窗口的大小为 2n−12n−1,情况和上面一样,发送方发送 0 ~ 2n−22n−2 号帧,接收方发送的确认帧都丢失了,如果没有丢失就应该继续传送 2n−12n−1号帧,但是丢失了,发送方应该发送 0 号帧,由于这种情况接收方可以判断出来(下一这帧只要不是第 2n−12n−1 号帧就重传),因此不会发送错误。如果接收方窗口尺寸小于 2n−12n−1,那么就更不会发生错误了。
综上所述,后退 N 帧协议的最大发送窗口是 2n−12n−1.


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM