互聯網早起階段,線路質量不好,所以數據鏈路層就要擔負起可靠傳輸的職責,因此早期階段鏈路層就會使用這三種流量控制的協議;
現代計算機由於線路取得很大進步,因此數據鏈路層就可以不進行流量控制的功能,鏈路層可以進行差錯控制等其他功能,把流量控制的功能交給傳輸層。這樣的好處就是數據鏈路層不用進行流量控制功能,速度變快了,延遲變小了
我們一般認為流量控制既可以在鏈路層,又可以在傳輸層上進行。兩者取其一。
數據包:在數據鏈路層就是幀,網絡層就是IP數據報,不同的層,數據報有不同的名字
進行滑動窗口(這三種滑動窗口協議:停止等待協議,GBN,SR)的目的:
- 可以解決流量控制
- 可以解決可靠傳輸,數據包的丟失問題
停止等待協議做題(研究)的前提:
- 雖然現在絕大多數都是全雙工通信方式,但是研究問題時還是抽象成單工(即一方發送,一方接收)
- 不需要考慮協議是在哪一個層次上(數據鏈路層or傳輸層)
停止等待協議應用情況:
-
有差錯情況(丟包情況)
一、數據幀丟失OR幀出錯
超時計時器是每次發送幀都會啟動,只不過正常可以到達的幀,它的計時器一般不會有用,即計時器設置的時間一般要大於一個RTT;但是當發送丟包(差錯)的話,這等待的時間就會遠遠大於一個RTT,當計時器到達設置的時間還沒收到確認信號時,就會重發剛才發送失敗的幀。這就叫自動重傳機制
!!1 每次發送幀的時候,要拷貝一份剛才發送的幀,這樣在發送失敗的時候才會重新發送拷貝的副本
2 數據幀和確認幀必須編號。當編號連續的時候就指知道發生了數據包丟失
3 對於幀出錯,當接收方收到發送過來的幀,但是發現幀出錯,不能用,也不會返回給發送方一個確認幀,超時之后仍然會重傳。
二、確認幀丟失
三、ACK遲到
對於來晚的確認幀不做處理,丟棄掉。
本來是准備接收1#幀,但是收到的是0#幀,知道ACK遲到,丟棄掉這個)#確認幀
- 無差錯情況
停止等待協議優點:簡單
缺點:信道利用率太低 (信道利用率:有效發送(傳輸)時間占整個發送周期的比率)
發送周期:發送時延+RTT+確認幀接收時延
有效發送時間:發送時延
停止等待協議的信道利用率整體比較低,信道大多時間處於空閑時間
后面兩種窗口機制信道利用率比較高