1. 后退 N 帧协议 (GBN) 的发送窗口
这个文章的最后说明了后退 N 帧协议 (GBN) 的发送窗口为什么 ≤ 2^n-1
https://blog.csdn.net/OOFFrankDura/article/details/79858712
他明确了 ACKn 的意义是:已经收到了序号为 n 的帧,请求发送序号为 n+1 的帧
(与 TCP 中不同)
并且指出最坏的情况是:发送窗口发送了窗口内所有的帧,接收端收到了发送端发送的所有的帧,但接收端发送的 ACKn 全部丢失,发送端从窗口第一个帧超时重传
对于窗口长度为 2^n-1 时,最坏情况的正确的描述为
由于超时,发送方会不断重传,但a0-a6和接收方所需要的a7始终无法匹配,接收方会不断重复返回ack要求发送a7,直到发送方正确收到此ack,能够确认a0-a6已经成功发送,移动窗口,并发送a7为止。
单单这么说虽然好,但是有一个对比的描述会更好
首先,序号为 n
位时,待发送的所有帧的编号为 0 1 2 .... 2^n-1 0 1 2 ...
① 发送窗口长度为 2^n
时
初始时,
发送窗口为 | 0 1 2 .... 2^n-1 | 0 1 2 ...
根据最坏情况的定义
最后一个可能丢失的确认帧为 ACK2^n-1
,即接收端接下来要接受序号