滑動視窗協議(選擇重發)


滑動視窗協議是一種流量控制協議,允許鏈路節點 A 和 B 同時傳送和接收資料和確認。

  • 在這裡,傳送方可以傳送多個幀,而無需等待確認。
  • 如果在指定時間內沒有新的資料幀準備好傳輸,則會生成一個單獨的確認幀以避免超時。
  • 每個出站幀包含一個序列號,範圍從 0 到 2𝑛−1(𝑛 位欄位)。對於停止等待滑動視窗協議,𝑛 = 1。

傳送視窗

傳送視窗是由傳送方維護的一組序列號,對應於已傳送但尚未確認的幀的幀序列號。

  • 傳送方可以在接收任何確認之前傳輸最大數量的幀而不會阻塞(流水線)。
  • 傳送視窗中的所有幀都可能丟失或損壞,因此必須儲存在記憶體或緩衝區中,直到它們被確認。

接收視窗

接收視窗是由接收方維護的一組序列號。它允許接收和確認多個幀。

  • 接收視窗的大小固定為指定的初始大小。
  • 任何接收到的序列號位於接收視窗之外的幀都會被丟棄。
  • 傳送視窗和接收視窗的大小可能不同,或者沒有上限或下限。

選擇重發協議

選擇重發協議是滑動視窗協議的一種實現。在選擇重發協議中,傳送方和接收方都維護一個未完成和可接受序列號的視窗。

  • 在 SRP 中,傳送方的視窗大小從 0 開始,並增長到某個預定義的最大值。
  • 接收方的視窗大小始終固定,等於預定的最大值。
  • 接收方為其固定視窗內的每個序列號保留緩衝區。
  • 傳送方和接收方維護其視窗大小的緩衝區。
  • 如果發生錯誤,接收方會檢查丟失幀序列號之前的最後一個序列號的下邊緣。
  • 接收方繼續接收和確認傳入的幀。
  • 傳送方為未確認的幀號維護一個超時時鐘,並在超時後重新傳輸該幀。
  • 確認將 piggybacked 到傳送方。但是當反向方向沒有流量時,piggyback 是不可能的,一個特殊的計時器將為 ACK 超時,以便 ACK 作為獨立的資料包傳送回來。如果接收方懷疑傳輸有錯誤,它會立即向傳送方傳送否定確認 (NAK)。

注意 − 當鏈路非常不可靠時,SRP 效果更好。因為在這種情況下,重傳往往更頻繁,選擇性地重傳幀比重傳所有幀更有效。在選擇重發協議中,傳送方和接收方視窗的大小最多必須為 2𝑛 的一半。

更新於:2021年11月23日

4K+ 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.