1. 程式人生 > >3.4.3 多幀滑動視窗和後退N幀協議(GBN)

3.4.3 多幀滑動視窗和後退N幀協議(GBN)

在後退N幀式ARQ中,傳送方不需要在收到上一幀的ACK後才能開始傳送下一幀,而是可以連續傳送幀。當接受方檢測出失序的資訊幀後,要求傳送方重發最後一個正確接受的資訊幀之後的所有未確認的幀;或者當傳送方傳送了N個幀後,若發現該N個幀的前一個幀在計時器超時後仍未返回其確認資訊,則該幀被判為出錯或丟失,此時傳送方就不得不又重傳該出錯幀及隨後的N個幀。換句話說,接受幀只允許按順序接受幀。

源站向目的站傳送資料幀。當源站發完0號幀後,可以繼續傳送後續的1號幀、2號幀等。源站每傳送一幀就要為該幀設定超時計時器。由於連續傳送了許多幀,所以確認幀必須要指明是對哪一幀進行確認。為了減少開銷,GBN協議還規定接受端不一定每收到一個正確幀就必須發回一個確認幀,而是可以在連續收到好幾個正確的確認幀後,才對最後一個數據幀發確認資訊

,或者可以在自己有資料要傳送時才將對以前正確收到的幀加以捎帶確認。這就是說,對某一資料幀的確認就表明該資料幀和這以前所有的資料幀均已正確無誤地收到了。

ACK(n+1)表示對第n號幀的確認,表明接受方已正確收到第n幀及以前的所有幀,下一次期望收到第n+1號幀(也可能是第0號幀)。接受端只按序接受資料幀。雖然在有差錯的2號幀之後接著又收到了正確的6個數據幀,但接收端必須將這些幀丟棄。接收端雖然丟棄了這些不按序的無出錯幀,但應重複傳送已經發送過的最後一個確認幀ACK1(這是為了防止已經發送過的確認幀ACK1丟失)。

後退N幀協議的接受視窗為1,可以保證按序接受資料幀。若採用n個位元對幀編號,則其傳送視窗的尺寸Wt應滿足:1<=Wt<=2^n-1。

若傳送視窗的尺寸大小2^n-1,則會造成接受方無法分辨新幀和舊幀。

後退N幀協議一方面因連續傳送資料幀而提高了通道的利用率,但另一方面,在重傳時又必須把原來已傳送正確的資料幀進行重傳(僅因這些資料幀的前面有一個數據幀出了錯),這種做法又使傳送速率降低。由此可見,若通道的傳輸質量很差導致誤位元速率較大時,後退N幀協議不一定優於停止等待協議。