1. 程式人生 > >流量控制、可靠傳輸與滑動視窗機制

流量控制、可靠傳輸與滑動視窗機制

流量控制涉及對鏈路上幀的傳送速率的控制,以使接收方有足夠的緩衝空間來接受每一個幀。例如,在面向幀的自動重傳請求系統中,當待確認幀的數量增加時,有可能超出緩衝儲存空間而造成過載。流量控制的基本方法是由接收方控制傳送方傳送資料的速率,常見的方式有兩種:停止-等待協議和滑動視窗協議。

1.停止-等待流量控制基本原理

傳送方每傳送一幀,都要等待接收方的應答訊號,之後才能傳送下一幀;接收方每接受一幀,都要反饋一個應答訊號,表示可接受下一幀,如果接收方不反饋應答訊號,則傳送方必須一直等待。每次只允許傳送一幀,然後就陷入等待接收方確認資訊的過程中,因而傳輸效率很低。

2.滑動視窗流量控制基本原理

在任意時刻,傳送方都維持一組連續的允許傳送的幀的序號,稱為傳送視窗;同時接收方也維持一組連續的允許接收幀的序號,稱為接收視窗。傳送視窗用來對傳送方進行流量控制,而傳送視窗的大小Wt代表在還沒有收到對方確認資訊的情況下發送方最多還可以傳送多少個數據幀。同理,在接收端設定接收視窗是為了控制可以接收哪些資料幀而不可以接收哪些資料幀。在接受資料方只有當收到的資料幀的序號落入接受視窗內才允許將該資料幀收下。若接受到的資料幀落在接受視窗之外,則一律將其丟棄。

在傳送端,每收到一個確認幀,傳送視窗就向前滑動一個幀的位置,當傳送視窗內沒有可以傳送的幀(即視窗內的幀全部是已傳送但未收到確認的幀),傳送方就會停止傳送,直到收到接受方傳送的確認幀使視窗移動,視窗內有可以傳送的幀,之後才開始繼續傳送。

在接受端,當收到資料幀後,將視窗向前移一個位置,併發回確認幀,若收到的資料幀落在接受視窗之外則一律丟棄。

滑動視窗有以下重要特性:

1)只有接受視窗向前滑動時(同時接受方傳送確認幀),傳送窗口才有可能(只有傳送方收到確認幀才是一定)向前滑動。

2)從滑動視窗的概念看,停止-等待協議、後退N幀協議和選擇重傳協議只有在傳送視窗大小和接受視窗大小有所差別。

停止-等待協議:傳送視窗大小=1,接受視窗大小=1;

後退N幀協議:傳送視窗大小>1,接受視窗大小=1;

後退N幀協議:傳送視窗大小>1,接受視窗大小>1;

3)當接受視窗的大小為1時,可保證幀的有序接受。

4)資料鏈路層的滑動視窗協議中,視窗的大小在傳輸過程中是固定的。

3.可靠傳輸機制

資料鏈路層的可靠傳輸通常使用確認和超時重傳兩種機制來完成。

確認是一種無資料的控制幀,這種控制幀使得接收方可以讓傳送方知道哪些內容被正確接收。有些情況下為了提高傳輸效率,將確認捎帶在一個回覆幀中,稱為捎帶確認。

超時重傳是指傳送方在傳送某一個數據幀以後就開始一個計時器,在一定時間內如果沒有得到傳送的資料幀的確認幀,那麼就重新發送該資料幀,直到傳送成功為止。

自動重傳請求(Auto Repeat reQuest,ARQ),通過接收方請求傳送方重傳出錯的資料幀來恢復出錯的幀,是通訊中用於處理通道所帶來差錯的方法之一。傳統自動重傳請求分為三種,即停等式(Stop-and-Wait)ARQ、後退N幀(Go-Back-N)ARQ以及選擇性重傳(Selective Repeat)ARQ。後兩種協議是滑動視窗技術與請求重發技術的結合,由於視窗尺寸開到足夠大,幀線上路上可以連續地流動,因此又稱為連續ARQ協議。