链接:https://www.zhihu.com/question/23951069/answer/124468064
问题:
为什么发送win<=接收win
为什么发送win+接收win<=2^N
解释:
为了说清楚这个问题,先给出以下两点结论:
1. 帧序号重复使用,但是相同序号内容不同。
2. 发送窗口小于等于接收窗口。
因为发送窗口大于接收窗口部分的帧不能被接收,所以发送窗口大于接收窗口没有意义,故取发送窗口等于接收窗口。
—————————————————————————分割线————————————————————————
现在以3比特编码帧序号为例进行解释,则相应的帧序号为0、1、2、3、4、5、6、7。假设发送窗口为6接收窗口也为6,则发送方可发送序号为0到5的帧,若接收方全部正确接收了这6个帧,并发送了相应的确认帧,则接收方的接收窗口理应更新为6、7、0、1、2、3。
如果确认帧被接收方正确地接收,则可以正确进行下一次传输。
如果确认帧全部丢失,发送方收不到确认帧,则发送方就会在超时后重传序号为0到5的帧,而此时接收方的接收窗口已经更新,对于新接收到的序号为0、1、2、3的数据帧接收方无法区分是新的数据帧还是旧的数据帧,此时出现二义性。
所以为了避免这种情况,应该令发送窗口为4,即使确认帧全部丢失,接收窗口和发送窗口也不会重叠。
—————————————————————————分割线————————————————————————
所以当采用n比特编码帧序号时,发送窗口的大小最大为2的n-1次方,这样既保障了传输效率又不会产生二义性。