停止等待協議


停止等待協議

理想傳輸條件有以下兩個特點:

  1. 傳輸信道不產生差錯
  2. 不管發送發以多快的速度發送數據,接收方總是來得及處理收到的數據。

然而實際的網絡都不具備以上兩個理想條件,所以需要一個協議

“停止等待協議”就是每發送完一個分組就停止發送,等待對方的確認。在收到確認后再發送以一個分組

全雙工通信的雙方既是發送發也是接收方

為了討論問題的方便,我們僅考慮A發送數據而B接受數據並發送確認。因此A叫做發送方,而B叫做接收方

無差錯情況

A發送分組M1,發完就暫停發送,等待B的確認(ACK)。B收到了M1向A發送ACK。A在收到了對M1的確認后,就再發送下一個分組M2

出現差錯

  • B 接收 M1 時檢測出了差錯,就丟棄 M1,其他什么也不做(不通知 A 收到有差錯的分組)。
  • M1在傳輸過程中丟失了,這時B當然什么都不知道,也什么不做

如何確保B正確收到M1呢?

解決方法:超時重傳

  • A為每一個已發送的分組都設置一個超時計時器

  • A只要在超時計時器到期之前收到了相應的確認,就撤銷該超時計時器,繼續發送下一個分組

確認丟失

若 B 所發送的對 M1 的確認丟失了,那么 A 在設定的超時重傳時間內不能收到確認,但 A 並無法知道:是自己發送的分組出錯、丟失了,或者 是B 發送的確認丟失了。因此 A 在超時計時器到期后就要重傳 M1。

假定B又收到了重傳的分組M1。這是B應該采取兩步行動

  1. 丟棄這個重復的分組M1, 不向上層交付
  2. 向A發送確認。不能認為已經發送過確認就不再發送,因為A之所以重傳M1就表示A沒有對M1的確認

確認遲到

傳輸過程中沒有出現差錯,但B對分組M1的確認遲到了。

  1. A會收到重復的確認。對重復的確認的處理很簡單:收下后就丟棄

  2. B任然會收到重復的M1,並且同樣要丟棄重復的M1,並重傳確認分組

注意

  • 在發送完一個分組后,必須暫時保留已發送的分組副本,以備重發
  • 分組和確認分則都必須編號
  • 超時計時器的重傳時間應當比數據在分組傳輸的平均往返時間更長一些

流水線傳輸

停止等待協議的優點是簡單,缺點是信道利用率太低。為了提高傳輸效率,可以采用流水線傳輸

累積確認

接收方一般采用累積確認的方式。即不必對收到的分組逐個發送確認,而是對按序到達的最后一個分組發送確認,這樣就表示:到這個分組為止的所有分組都已正確收到了。

  • 優點:容易實現,即使確認丟失也不必重傳。
  • 缺點:不能向發送方反映出接收方已經正確收到的所有分組的信息。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM