1
我正試圖在兩個單獨的客戶端和服務器應用程序上實現Go back N協議。假設我的序列號必須適合3位,所以2^3 = 8個最大數字,2^3 - 1 = 7個窗口大小。返回N協議
我最初發送我的整個窗口。前兩個數據包(0和1)正確接收。數據包2被丟棄。當接收機通過6得到的數據包3中,期待2,所以它必須NACK它得到了說分組就是了2.
Sender Receiver
0 0
1 1
2 (packet dropped)
3 nack2
4 nack2
5 nack2
6 nack2
當發送方接收第一NACK2,它知道0和1已經(通過捎帶)接收並向前移動它的窗口,但它也必須從序號2開始重新發送它的窗口(所以2-3-4-5-6-和可能的7-0)。發件人收到第二個nack2時,它已經發送了這些數據包。由於該協議,發送方將再次重發他的整個窗口,包括2.現在接收方可能會收到2個(和其他),但在第二個nack2批次中,它將重新接收2,這是無序的,將不得不停止其預期的數據包,等等。我在所有這些假設中是否正確?
如果我是這樣,在我看來,返回N發送的數據包比停止和等待更多,特別是增加窗口大小越多。我沒有得到什麼?