TCP之滑動窗口,流量控制和擁塞控制

滑動窗口

是在可靠性的前提下,讓我們進一步提高傳輸效率。
在這裏插入圖片描述
所謂窗口:就是不等待ack的情況下,批量發送的最大數據量,就叫:窗口大小。上面的窗口大小就是4000。
滑動:窗口範圍表示哪些數據在等待ack,隨着一個ack的到達,就立刻發送下一個數據,等待範圍就逐漸向後滑動。
在這裏插入圖片描述
窗口越大,傳輸效率越高,但也不能無限大。

在這過程中,假如出現丟包怎麼辦?
在這裏插入圖片描述

在這過程中,假如數據報丟了怎麼辦?
在這裏插入圖片描述

流量控制

窗口大小不能無限大,傳輸速率太快,接收方可能處理不過來。

所以此處會根據接收方的處理能力來方向制衡發送方的發送速率(窗口大小)。

接收方的處理能力即通過接受緩衝區的“剩餘空間大小”來決定發送方的速率。

在這裏插入圖片描述
這裏就是在應答ack中加入了一個窗口大小,就是緩衝區的剩餘空間大小,但發送發不一定會按這個發小發送數據,數據只會比這個數據小或者等於,但不會大於。當窗口爲0,發送方就會定時發送一個探測報文,因爲緩衝區的數據很肯能被取走一部分,就可以接受新的數據了。
在這裏插入圖片描述
有人會問:而發第一個數據時沒有ack返回窗口大小吧,這裏由擁塞控制決定,後面後提到。

還有就是當數據包出現部分丟失的時候,還是按照沒有缺失的情況下來返回窗口剩餘大小。
在這裏插入圖片描述

擁塞控制

擁塞控制和流量控制共同決定發送方的窗口大小。
考慮了網絡傳輸路徑上的擁堵程度,由於不好衡量傳輸路徑的擁堵情況,只能不斷反覆試探,逐漸試探出應該用多大的窗口。
在這裏插入圖片描述
爲啥要動態變化呢?

網絡擁堵也是瞬息萬變的,要隨時根據網絡實際狀態進行動態調整。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章