前言
- 在複雜的網絡通訊中,網絡交互在線路上產生巨大流量,因爲設備性能的差別和缺陷,網絡中發生像高速公路的擁塞也是很正常的,爲了減小網絡中數據擁塞和丟失所形成的損失,所以網絡協議中採用了流量控制和擁塞控制技術.
- 如下將用最簡單的語言和圖片解釋流量控制和擁塞控制原理.
1. 辨析
- 流量控制:流量控制主要由通訊雙方設備決定,具體爲發送方發送窗口和接收方接收窗口決定.通常地,發送窗口會有必定的數據緩存,因此發送方並不能發送最大窗口值數據,而接收方的接受窗口也可能存在數據緩存,因而這兩個窗口共同決定了發送方所發送的數據量,所以稱之爲流量控制.
- 擁塞控制:擁塞控制沒有那麼明確,總的來說,除開發送端和接收端,其中間網絡設備的通訊能力,就像一個黑盒子,咱們知道接收方返回的確認信息愈來愈慢,因而咱們就猜想其中擁塞程度變大了.這就是網絡出現了擁塞.
2. 流量控制
2.1 流量控制過程
1.首先,流量控制涉及四個窗口,即發送方和接收方各有兩個(發送窗口,接收窗口),因此流量通訊是四個窗口,並非咱們想象中的兩個窗口哦,如圖:算法
2.流量控制具體流程緩存
- 假設窗口大小爲300字節,此時已發送出序號101開始的300字節數據,窗口在框1處.
- 假設此時接收到了接收方的確認ack=301,且窗口大小爲200B(流量控制起做用了,即但願下次只發送200B數據),在此,數據並未被徹底接收,所以窗口只能滑動到確認號爲301的位置.如圖中框2,因此窗口中的101,201緩存即被刪除.此時待發數據爲401和501.
- 此時收到接收方的確認ack=601,窗口300,即窗口滑動向601,如圖窗口3準備發送接下來的601,701,801.
- 當發送方一直沒收到確認或確認包窗口值爲0時,會發送一個探測性數據段,返回窗口值爲0時,啓動超時計時器,到時後繼續發送探測,若接收端發送來了窗口值不爲0的數據段,則發送端開始正常發送數據.
2.2 流量控制的兩種算法
Nagle算法
發送端並不一有數據就發送,而是本身先把數據緩存起來,達到接收方窗口值一半或發送窗口最大值,就即刻發送.網絡
Clark算法
1.接收端讓發送方等待,當本身由足夠的接收窗口空間時,再發送確認信息.
2.在流量控制中,這兩種算法十分重要,而且是結合使用的.性能
3. TCP擁塞控制
TCP擁塞控制主要依靠TCP鏈接雙方協定的協議來減小數據的發送兒實現的.進入網絡的數據大於出口時,就會發生網絡擁塞.
實際吞吐量和輸入負荷之間的關係:spa
3.1 1988年解決方案
術語
1.CWND : 擁塞窗口大小
2.SSTHRESH : 慢啓動閾值圖片
過程
- 有一初始值SSTHRESH,並維護一擁塞窗口.
- 慢啓動:2倍速增加.
- 擁塞避免:每次加1.
- 阻塞後,SSTHRESH變爲原來的一半.從新開始步驟2
發送數據段大小:爲MAX(發送窗口大小,擁塞窗口)開發
1990年後新增方案:快速重傳/快速恢復
快速重傳
發送端發送一個數據段丟失後,發送端並不會中止發送數據,可是接收端會多發三次丟失數據的前一數據的確認,此時發送端即刻發送丟失的數據,儘管可能在超時重傳時間內,如圖
rem
快速恢復
在快速重傳數據段後,快速恢復技術即刻發揮做用,即把擁塞窗口值CWND設置爲當前SSTHRESH值的一半,以減輕網絡負荷,而後執行擁塞避免算法,使CWND緩慢增大,以免再次出現網絡擁塞.it