为什么回退N步(GBN)协议的发送窗口大小最大为 2N-1
为什么选择重传(SR)协议的发送窗口大小最大为 2N-1
导致限制产生源于以下三点:
- 分组序号有限
- 接收方 ACK 有丢失可能
- 超时重传机制
GBN 协议
以分组序号位数 2 为例,此时分组序号的范围是:0-3,也就是说,对于发送的第 5 个分组来说,它的序号和第 1 个分组一致,均为 0。
设其窗口大小为 22 = 4(> 22-1),若前 4 个分组均被接收方顺序接收,而其返回的ACK0,1,2,3全部丢失,就会出现错误,具体见下图:
可以看到,在极端的条件ACK全部丢失的情况下
,发送方因超时重传机制
重新发送旧的分组0
,但接收方并不知道该分组是旧的,接到旧的分组 0 依然会进行接收,因为接收方仅靠序号区别“新旧”,为了避免这种情况的发生,应设置 GBN 协议的发送窗口最大为 2^N^-1
。
SR 协议
SR协议也是同理,这里引用《计算机网络:自顶向下》原书的图:
需要注意的是,GBN 的接收窗口大小 =1 ,而 SR 的接收窗口大小 > 1。
版权声明:本文为weixin_42426841原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。