滑動視窗詳解

來源:互聯網
上載者:User

滑動視窗協議
單工 ——> 全雙工系統
裝置改造成全雙工系統工作模式;
線路合并,兩條線路->一條線路;
資料幀和應答幀在一個通道上傳輸;
捎帶/載答(piggybacking):暫時延遲待發確認,以便附加在下一個待發資料幀的技術。
優點:充分利用通道頻寬,減少幀的數目意味著減少“幀到達”中斷;
缺點:帶來的問題:複雜。
如何把單工的裝置改造成雙工的裝置?

3.4.1 一位元滑動視窗協議(A One Bit Sliding Window Protocol)
協議特點
可進行資料雙向傳輸,資訊幀中可含有確認資訊(piggybacking技術);
資訊幀中包括兩個序號域:發送序號和接收序號(已經正確收到的幀的序號)
工作過程





協議4:問題仍舊相同
能保證無差錯傳輸,但是基於停等方式;
若雙方同時開始發送,則會有一半重複幀;
效率低,傳輸時間長。
1.滑動視窗的概念
發送端和接收端分別設定發送視窗和接收視窗 。
發送視窗用來對發送端進行流量控制。
發送視窗的大小 WT 代表在還沒有收到對方確認資訊的情況下發送端最多可以發送多少個資料幀。

接收端設定接收視窗
在接收端只有當收到的資料幀的發送序號落入接收視窗內才允許將該資料幀收下。
若接收到的資料幀落在接收視窗之外,則一律將其丟棄。
在連續 ARQ 協議中,接收視窗的大小 WR = 1。
只有當收到的幀的序號與接收視窗一致時才能接收該幀。否則,就丟棄它。
每收到一個序號正確的幀,接收視窗就向前(即向右方)滑動一個幀的位置。同時發送對該幀的確認。

滑動視窗的重要特性
只有在接收視窗向前滑動時(與此同時也發送了確認),發送視窗才有可能向前滑動。
收發兩端的視窗按照以上規律不斷地向前滑動,因此這種協議又稱為滑動視窗協議。
當發送視窗和接收視窗的大小都等於 1時,就是雙工的停止等待協議。
3.4.2 退後n幀協議(A Protocol Using Go Back n)
為提高傳輸效率而設計,例如:
衛星通道傳輸速率50kbps,往返傳輸延遲500ms,若傳1000bit的幀。
使用協議4,則傳輸一個幀所需時間為: 發送時間 + 資訊通道延遲 + 確認通道延遲(確認幀很短,忽略發送時間)= 1000bit / 50kbps + 250ms + 250ms = 520ms
通道利用率 = 20 / 520 =4%
IMAGINATION!!!
發送端一次連續發送26個資料幀;
經曆的時間是520ms;
此時剛好第一幀的應答幀回來了!
發送端又可以發送以幀了!
……
流水線誕生了!!!
退後n幀協議(A Protocol Using Go Back n)
一般情況,通道頻寬b位元/秒,幀長度L位元,往返傳輸延遲R秒,則通道利用率為 (L/b) / (L/b + R) = L / (L + Rb)
結論
傳輸延遲大,通道頻寬高,幀短時,通道利用率低。
解決辦法
連續發送多幀後再等待確認,稱為流水線技術(pipelining)。
帶來的問題
通道誤碼率高時,對損壞幀和非損壞幀的重傳非常多


GO BACK N協議實現分析
事件驅動
Network_layer_ready(內部事件)
發送幀(幀序號,確認序號,資料)
Frame_arrival (外來事件)
檢查幀序號,落在接收視窗內則接收,否則丟棄;
檢查確認序號,落在發送視窗內則移動發送視窗,否則不做處理。
Cksum_err (外來事件)
丟棄
timeout (內部事件)
退後n幀重傳
計時器處理
啟動,發送幀時啟動
停止,收到正確確認時停止
逾時則產生timeout事件






3.4.3 選擇重傳協議(A Protocol Using Selective Repeat)

實現
緩衝區設定
發送方和接收方的緩衝區大小應等於各自視窗大小;
增加確認計時器,解決兩個方向負載不平衡帶來的阻塞問題;
可隨時發送否定性確認幀NAK。
視窗參數
發送視窗下界:Ack_Expected
發送視窗上界:Next_Frame_To_Send
接收視窗下界:Frame_Expected
接收視窗上界:TooFar




P6協議實現分析
事件驅動
Network_layer_ready(內部事件)
發送幀(框架類型,幀序號,確認序號,資料)
Frame_arrival (外來事件)
若是資料幀,則檢查幀序號,落在接收視窗內則接收,否則丟棄;不等於接收視窗下界還要發NAK
若是NAK,則選擇重傳;
檢查確認序號,落在發送視窗內則移動發送視窗,否則不做處理。
Cksum_err (外來事件)
發送NAK
timeout (內部事件)
選擇重傳
Ack_timeout (內部事件)
發送確認幀ACK
計時器處理
啟動,發送資料幀時啟動
停止,收到正確確認時停止
逾時則產生timeout事件
Ack計時器處理
啟動,收到幀的序號等於接收視窗下界或已經發過NAK時啟動
停止,發送幀時停止
逾時則產生ack_timeout事件
選擇重傳的最大視窗


停止等待協議中資料幀和確認幀的發送時間關係

小結
可靠傳輸
通過確認和重傳機制
傳輸層協議,如TCP,也提供可靠傳輸服務
鏈路層的可靠傳輸服務通常用於高誤碼率的連路上,如無線鏈路。
http://www.eefocus.com/article/08-07/47274s.html

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.