为什么在TCP的后退N算法窗口大小(N)必须小于序列号空间(S):S> N?我试图想出它自己,但不安静得到它后退N窗口大小
Q
后退N窗口大小
4
A
回答
4
为什么S>N
有一个简单的原因。考虑下图中描述的可能的情况,其中窗口大小与序号空格相同,即S=N
。 2^m
,其中m
是以比特报头的序列号字段的大小:
在此,在上述的图像,序列号空间被表示。
现在,考虑当Sf
为0并且Sn
为1时的第一种情况。定时器在第一帧发送后立即开始。当第一帧收到时,Receiver发送ACK。但假设由于某些原因而丢失。
但是,由于窗口大小为4,发送方将继续发送下一帧,直到达到最大窗口大小。 (在这种情况下为4
)。
由于帧中没有丢失,帧将成功到达接收器,每当帧到达时,Rn
将增加1
。
假设所有的ACK。丢失了。并在一段时间后超时。所以发送者会假设帧丢失或ACK丢失。所以它会从头开始憎恨数据。但在接收端,帧成功到达,它将等待下一帧(本例中为0
)。
并且发送方也将发送帧0
。这是前一帧。但它会被接收器错误地接受。
所以最好有窗口大小(N)必须小于序列号空间(S)。
考虑以下图:
在上述图中的S=N+1
或窗口大小是2^m-1
。在这种情况下,假设与前面案例中假设的相同。但区别在于,最后接收方将等待帧3
,发送方将发送帧0
。所以它会被丢弃。因此发送者将再次发送整组帧。
因此在第二种情况下成功沟通的可能性更大。
希望这可以帮助你。
相关问题
- 1. 如何在隐藏窗口小部件后调整窗口大小,同时仍允许调整窗口大小?
- 2. 调整窗口大小后交换类
- 3. WPF窗口大小
- 4. PowerBuilder窗口大小
- 5. 新窗口大小
- 6. 当窗口大小小于
- 7. 如何在最小化窗口后最大化窗口
- 8. 设置窗口大小后,SDL未呈现到完整窗口
- 9. 可调整大小的窗口之后,固定大小
- 10. 调整大小窗口的大小
- 11. 初始窗口大小/调整大小
- 12. Android后退堆栈大小
- 13. 获取窗口大小
- 14. 而调整窗口大小
- 15. 强制窗口大小Kivy
- 16. 窗口大小问题
- 17. GUI窗口大小C#WPF
- 18. jQuery窗口调整大小
- 19. jquery窗口调整大小
- 20. Python窗口调整大小
- 21. PostgreSQL参数窗口大小
- 22. 当调整窗口大小
- 23. 调整窗口大小C#
- 24. NSOpenGLView调整窗口大小
- 25. NSAlert调整窗口大小
- 26. 获取Tkinter窗口大小
- 27. tkinter画布窗口大小
- 28. whiptail - 窗口大小调整
- 29. SDL调整窗口大小
- 30. 调整窗口大小Jquery
我建议从描述Go-Back-N算法的相关规范中添加一个引用。我只是看着RFC,无法快速找到该部分。 – user3386109 2015-02-10 23:54:05