要點
停止等待協定用於通信系統中,兩個相連的設備相互傳送信息時使用,以確保信息不因丟包或包亂序而丟失,是最簡單的自動重傳請求方法。
只有收到序號正確的確認幀 ACKn 後,才更新傳送狀態變數 V(S)一次,並傳送新的數據幀。
接收端接收到數據幀時,就要將傳送序號 N(S) 與本地的接收狀態變數 V(R) 相比較。
若二者相等就表明是新的數據幀,就收下,並傳送確認。否則為重複幀,就必須丟棄。但這時仍須向傳送端傳送確認幀 ACKn,而接收狀態變數 V(R) 和確認序號 n 都不變。
連續出現相同傳送序號的數據幀,表明傳送端進行了逾時重傳。連續出現相同序號的確認幀,表明接收端收到了重複幀。
傳送端在傳送完數據幀時,必須在其傳送快取中暫時保留這個數據幀的副本。這樣才能在出差錯時進行重傳。只有確認對方已經收到這個數據幀時,才可以清除這個副本。
實用的CRC 檢驗器都是用硬體完成的。
CRC 檢驗器能夠自動丟棄檢測到的出錯幀。因此所謂的“丟棄出錯幀”,對上層軟體或用戶來說都是感覺不到的。
傳送端對出錯的數據幀進行重傳是自動進行的,因而這種差錯控制體制常簡稱為ARQ(Automatic Repeat reQuest),直譯是自動重傳請求,但意思是自動請求重傳。
定量分析
設 tf 是一個數據幀的傳送時間,且數據幀的長度是固定不變的。顯然,數據幀的傳送時間 tf 是數據幀的長度 lf (bit)與數據的傳送速率 C (bit/s)之比,即
tf = lf /C = lf /C (s)
傳送時間 tf 也就是數據幀的傳送時延。
數據幀沿鏈路傳到結點B還要經歷一個傳播時延 tp。
結點 B 收到數據幀要花費時間進行處理,此時間稱為處理時間 tpr,傳送確認幀 ACK 的傳送時間為 ta。
停止等待協定的算法
這裡不使用否認幀(實用的數據鏈路層協定大都是這樣的),而且確認幀帶有序號 n。
按照習慣的表示法,ACKn 表示“第 n – 1 號幀已經收到,現在期望接收第 n 號幀”。
ACK1 表示“0 號幀已收到,現在期望接收的下一幀是 1 號幀”;
ACK0 表示“1 號幀已收到,現在期望接收的下一幀是 0 號幀”。
ARQ 的優缺點
優點:比較簡單 。
缺點:通信信道的利用率不高,也就是說,信道還遠遠沒有被數據比特填滿。
為了克服這一缺點,就產生了另外兩種協定,即連續 ARQ 和選擇重傳 ARQ。
具有最簡單流量控制的數據鏈路層協定
假定 1: 鏈路是理想的傳輸信道,所傳送的任何數據既不會出差錯也不會丟失。
假定 2: 不管發方以多快的速率傳送數據,收方總是來得及收下,並及時上交主機。
這個假定就相當於認為:接收端向主機交付數據的速率永遠不會低於傳送端傳送數據的速率。
現在去掉上述的第二個假定。但是,仍然保留第一個假定,即主機A 向主機 B傳輸數據的信道仍然是無差錯的理想信道。然而現在不能保證接收端向主機交付數據的速率永遠不低於傳送端傳送數據的速率。
由收方控制發方的數據流
乃是計算機網路中流量控制的一個基本方法。
簡單解釋:收方每接受到發方一幀後,回復確認幀,讓發方繼續傳送下一幀,並且收方將數據幀交給上層軟體識別,出現錯誤就將幀丟掉。
在接收結點:
1)等待。
2)若收到由傳送結點發過來的數據幀,則將其放入數據鏈路層的接收快取。
3)將接收快取中的數據幀上交主機。
4) 向傳送結點發一信息,表示數據幀已經上交給主機。
5) 轉到1)
在傳送結點:
1))從主機取一個數據幀。
2))將數據幀送到數據鏈路層的傳送快取。
3))將傳送快取中的數據幀傳送出去。
4))等待。
5))若收到由接收結點發過來的信息(此信息的格式與內容可由雙方事先商定好),則從主機取一個新的數據幀,然後轉到2)。