1.在停止等待協議中,如果收到重復的報文段時不予理睬(即悄悄地丟棄它,而其他什么也不做)是否可以?試着舉出具體例子說一下你的理解與看法?
哈哈,絕對不可行的呀 ~。
我們來看一看下面這個圖:
A 發送報文段 M1,B 收到后發送確認,但這個確認丟失了。
A 發送報文段 M1,B 收到后不予理解。這就導致 A 再次超時重傳報文段 M1。
B 收到重復的報文段都不予理睬,A 就一直超時重傳報文段 M1,將會導致 A 的資源浪費呀 ~ 。
可見,如果收到重復的報文段時不予理睬是不行的。
2.在停止等待協議中,如果不使用編號是否可行?請說下你的理由?
不使用編號是不可以的。我們可以看看下面這個圖:
如果在 A 發送報文段 M1,B 收到后發送確認(無編號),這個確認很晚才送到 A。
這樣 A 就沒法在規定時間等待確認,認為發送的報文段在 B 沒收到,啟動超時重傳機制,重新發送報文段 M1。
在一段時間后,B 發送的第一個確認到達了 A,於是 A 發送下一個報文段 M2,但 M2 丟失了。
B 收到 A發送的重傳 M1.但 B 並不知道是重傳中,因為報文段沒有編號。 B 是無法判斷報文段屬於重傳的報文段,還是
最新的報文段。 B 這樣只能收下重新傳過來的報文段,並發送確認給 A。這樣會讓 A 誤以為是對 M2 報文段的確認,認為發送的兩個報文段都已經到達B。
哈哈,我們是不是可以看出來問題了呀~,如果不使用編號的話,接收方是不清楚收到的報文段有沒有重復類別。
3.假定在傳輸層使用停止等待協議。發送方在發送報文段M0后設定的時間內未收到確認,於是重傳M0,但M0又遲遲不能到達接收方。不久,發送方收到了遲到的對M0的確認,於是發送下一個報文段M1,不久就收到了對M1的確認。接着發送方發送新的報文段M0,但這個新的M0在傳送的過程中丟失了。正巧,一開始就滯留在網絡中的M0現在到達接收方。接收方無法分辨出M0是舊的。於是就收下M0,並發送確認。顯然,接收方后來收到的M0是重復的,協議失敗了。
你可以畫下雙方交換報文段的過程嗎?
從上面的圖我們可以看到,接收方在第二次的時候把超時的 M0 當成了新的 M0,。(無法判斷 M0 是否為發送方發送的最新報文段)
參考:謝希仁老師的《計算機網絡第七版》~