爲什麼在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. PowerBuilder窗口大小
- 3. 大小主窗口
- 4. WPF窗口大小
- 5. 調整窗口大小後交換類
- 6. 當窗口大小小於
- 7. 設置窗口大小後,SDL未呈現到完整窗口
- 8. 如何在最小化窗口後最大化窗口
- 9. 調整窗口大小窗口控件
- 10. 在調整窗口大小後調整flexlslider的大小
- 11. 窗口大小調整後重新調整大小的組件
- 12. 窗口大小後的背景圖像大小調整
- 13. 可調整大小的窗口之後,固定大小
- 14. 初始窗口大小/調整大小
- 15. 查看窗口大小調整大小
- 16. 調整大小窗口的大小
- 17. gtk2hs:刪除窗口小部件後請求重新計算窗口大小
- 18. 調整窗口大小Jquery
- 19. whiptail - 窗口大小調整
- 20. jQuery窗口調整大小
- 21. PostgreSQL參數窗口大小
- 22. 調整窗口大小
- 23. 父窗口調整大小?
- 24. 獲取窗口大小
- 25. 而調整窗口大小
- 26. 調整窗口大小
- 27. 窗口大小jQuery的bug
- 28. 窗口大小CSS HTML
- 29. 當調整窗口大小
- 30. 強制窗口大小Kivy
我建議從描述Go-Back-N算法的相關規範中添加一個引用。我只是看着RFC,無法快速找到該部分。 – user3386109 2015-02-10 23:54:05