計算機網路讀書筆記-----資料鏈路層的可靠性
此篇是為了引出TCP的可靠機制。
- 停止等待協議:
在計算機網路發展的初期,通訊網的傳輸質量普遍不是很好,所以資料傳輸的差錯率較大。所以資料鏈路層就必須解決可靠傳輸的問題。
停止等待是最簡單也是最基本的資料鏈路層協議
工作原理如下:
傳送端每傳送完一幀後就停止傳送,等待接收端的確認,如果收到了接收端發來的確認幀,就繼續傳送下一幀。
在接收端,每收到一個無差錯的幀,就將其交付給上層,並給傳送端返回一個確認幀。
接收端如果收到有差錯的幀,就悄悄的丟棄這個幀,其餘什麼也不做。傳送端長時間沒有收到接收端發來的確認,認為剛才傳輸的分組丟失了,就會重傳這個分組。這叫做超時重傳。
要實現超時重傳,要在每傳送完一個分組後設置一個超時計時器,如果在超時計時器之前收到了確認,就撤銷已設定的超時計時器。
注意三個問題:
1、A在傳送完一個分組的時候,必須要保留一份副本,為發生超時重傳時做準備,當收到B傳送過來的確認時,才會刪除剛保留的副本。
2、超時重傳時間要比資料在分組傳輸的平均往返時間更長一些。
3、分組和確認分組都必須進行編號,這樣才能明確哪一個傳送出去的分組收到了確認,而哪一個分組沒有收到確認。
確認丟失和確認遲到:
圖a中說明的是B所傳送的對M1的確認丟失了。所以A在設定的超時重傳時間內沒有收到確認,但無法知道到底是自己所傳送的分組出錯,丟失還是B傳送的分組丟失,所以在超時定時器到期後重傳M1。B收到A重傳的M1:
1、首先丟棄這個重複的分組,不向上層交付 2、向A傳送確認(因為上次傳送的確認是丟失了)
圖b說明的是類似的另一種情況,B對M1的確認沒有丟失,而是滯後。但是
B則會收到想重複的M1,同樣是丟棄重複的M1,重傳確認分組,A則會收到重複的確認分組,A則直接丟棄。
這種方法優點是簡單,但缺點是通道利用率太低。
Td為A傳送分組所需要的時間,RTT為往返時間,Ta為B傳送確認分組的時間。
所以通道利用率為
當往返時間RTT遠遠大於分組傳送時間Td,通道率就會大大的降低。
為了提高傳輸效率,採用流水線傳輸,如圖所示
傳送方可以連續傳送多個分組,而不必每發完一個分組就停下來等待對方的確認,二圖對比,後者明顯提高了通道利用率。
- 連續ARQ協議:
圖a表示位於傳送視窗中的5個分組都可以傳送出去,而不必等待對方的確認
圖b表示,傳送方每收到一個確認分組,視窗就前移一個。
接收方一般採用累積確認的方式:
也就是說:接收方不用對傳送方傳送的每一個分組都發送確認,而是可以在收到幾個分組後,對按序到達的最後一個分組傳送確認。這樣就表示這個分組之前的所有分組都正確收到了。
累積確認的好處是:容易實現,即使確認丟失也不必重傳。
但是很明顯這樣做缺點就是:不能像傳送方反映已正確收到的所有分組的資訊。
也就是說:如果傳送方傳送了前5個分組,中間三個丟失了,傳送方無法知道後面三個分組的下落,所以在將後面三個分組重傳一次,這種方法也叫GO-back-N
,表示需要在退回來重傳已經發送的N個分組。
摘自:計算機網路.第五版.謝希仁