這是我在看相關的ARQ(StopAndWait, GoBackN, SelectiveRepeat)產生的疑問
為了簡單描述我的問題, 我用StopAndWait來舉例
假設有個Stop-And-Wait的傳輸情形像這樣
有端點A跟B在傳輸, 視窗大小只有2, 橫軸是時間軸, 斜線代表網路傳輸
下面這個是A跟B之間在通訊的示意圖
┌──┬──────────────────┐
│端點│ 封包編號 │
│ A │ [0] [1] [0] [1] [0] ..... │
│ │ \ \ \ \ \ │
│ B │ [0] [1] [0] [1] [0] ... │
└──┴──────────────────┘
我想請問有沒有可能發生這樣的狀況
┌──┬──────────────────┐
│端點│ 封包編號 │
│ A │ [0] [1] [0] [1] [0] ..... │
│ │ │\ │
│ │ │ \ │
│ │ │ \ 第2次(timeout重送) │
│ │ │ \ │
│ │ │第1次 \ │
│ │ \ \ │
│ B │ [0] [1] [0] [1] [0] ... │
└──┴──────────────────┘
也就是因為第1個[0]傳輸了比較久
不過B還是順利接收到第1個[0]
然後也順利收到之後的[1] (為了圖面乾淨, 我把[1]的傳輸線省略)
但因為之前的第1個[0]太久沒收到回應
所以造成A當時timeout重送
而B在收到[1]之後, 也順利收到這個重送的封包
也就是B總共收到兩次第1個[0]的封包
而且很剛好的“照順序”收到
這樣不會有問題嗎?
還是有什麼沒考慮到的狀況, 所以根本不會發生呢?
謝謝