[問答] 滑動視窗一問
這是我在看相關的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]的封包
而且很剛好的“照順序”收到
這樣不會有問題嗎?
還是有什麼沒考慮到的狀況, 所以根本不會發生呢?
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 218.161.45.91
※ 文章網址: https://www.ptt.cc/bbs/Network/M.1488685010.A.CCB.html
→
03/06 13:18, , 1F
03/06 13:18, 1F
→
03/06 13:18, , 2F
03/06 13:18, 2F
→
03/06 13:18, , 3F
03/06 13:18, 3F
→
03/06 13:18, , 4F
03/06 13:18, 4F
→
03/06 13:35, , 5F
03/06 13:35, 5F
→
03/06 13:35, , 6F
03/06 13:35, 6F
→
03/06 13:35, , 7F
03/06 13:35, 7F
→
03/06 13:35, , 8F
03/06 13:35, 8F
我換個方式來表達我的問題看看
假設有下面這幾個流程
1. A送了序號0封包
2. A等了一段時間, 沒收到序號0的ack, 決定重送序號0的封包
3. B收到流程1的封包, 並回序號0的ack, 開始等序號1的封包
4. A收到流程3的ack, 發送序號1的封包
5. B收到流程4的封包, 並回序號1的ack, 開始等序號0的封包
6. 如果流程2的封包沒壞掉只是傳了比較久, B這時是不是有機會收到流程2的封包而錯誤?
因為我看很多教材都是說重複的封包(上述流程2的封包)會被接收端(上面的B)丟掉
但好像都假設這些重複的封包在另一個狀態時候收到 (也就是在等序號1的時候收到)
所以在想萬一這些重複的封包是在同一個狀態被收到 (也就是在等序號0的時候收到)
會有這樣的錯誤發生嗎?
※ 編輯: zelkova (218.161.45.91), 03/06/2017 18:08:37
→
03/06 18:31, , 9F
03/06 18:31, 9F
→
03/06 18:31, , 10F
03/06 18:31, 10F
→
03/06 18:31, , 11F
03/06 18:31, 11F
→
03/06 18:31, , 12F
03/06 18:31, 12F
→
03/06 18:31, , 13F
03/06 18:31, 13F
→
03/07 00:55, , 14F
03/07 00:55, 14F
→
03/07 00:57, , 15F
03/07 00:57, 15F
推
03/07 08:16, , 16F
03/07 08:16, 16F
推
03/07 08:19, , 17F
03/07 08:19, 17F
Network 近期熱門文章
PTT數位生活區 即時熱門文章