后退 N 幀協議


后退 N 幀協議基於滑動窗口流量控制技術。如果采用 n 個比特對幀進行編號,其發送窗口尺寸 WTWT 必須滿足 1<WT≤2n−11<WT≤2n−1 ,接受窗口尺寸為 1.如果發送床闊尺寸大於 2n−12n−1,會造成接收方無法分辨新、舊數據幀的問題。由於接受窗口尺寸為 1,因此接收方只能按序來接受數據幀。
基本原理:發送方發送完一個數據幀之后,不是停下來等待確認幀,而是可以連續再發送若干個數據幀。如果這時候收到了接收方的數據幀,那么還可以接着發送數據幀。如果某一個幀出錯了,接收方只能簡單地丟棄該幀及其所有的后續真。發送方超時后需要重新發出該出錯幀及其后續的所有幀。由於檢查了等待時間,后退 N 幀協議使得整個通信的吞吐量得到了提高。但接收方一發現錯誤幀,就不再接收后續的幀,造成一定量的浪費,據此改進,得到了選擇重傳協議。
補充:為什么后退 N 幀協議的發送窗口尺寸 WTWT 必須滿足 1<WT≤2n−11<WT≤2n−1 ?
答:假設發送的窗口的大小為 2n2n,發送方發送了 0 號幀,接收窗口發送 ACK1(0 號幀已經收到,希望接受 1 號幀,但是 ACK1丟失),接着發送方發送了 1 號幀,接收窗口發送 ACK2( 1 號幀已經收到,希望接受 2 號幀,但是 ACK2 丟失),依次推類,知道發送方發送了第 2n−12n−1 號幀,,接收方發送 ACK 2n2n(丟失),此時不能再發送數據了,因為已經發送了 2n2n 個幀,但是一個確認都沒有收到,所以過一段時間 0 號幀的計時器會到達預定的時間進行重發,此時發過去接受方認為是新一輪 0 號幀還是舊一輪重傳的呢?接收方並不知道,所以很有可能接收方就把新一輪的 0 號幀當作舊一輪的幀接受了,但實際上這個 0號幀是重傳的,所以出現了錯誤,即發送窗口的大小不能是 2n2n .
現在假設發送窗口的大小為 2n−12n−1,情況和上面一樣,發送方發送 0 ~ 2n−22n−2 號幀,接收方發送的確認幀都丟失了,如果沒有丟失就應該繼續傳送 2n−12n−1號幀,但是丟失了,發送方應該發送 0 號幀,由於這種情況接收方可以判斷出來(下一這幀只要不是第 2n−12n−1 號幀就重傳),因此不會發送錯誤。如果接收方窗口尺寸小於 2n−12n−1,那么就更不會發生錯誤了。
綜上所述,后退 N 幀協議的最大發送窗口是 2n−12n−1.


免責聲明!

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



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