TCP慢啟動 擁塞避免 快速重傳 快速恢復

2021-06-29 01:52:38 字數 2664 閱讀 9022

慢啟動,是傳輸控制協議使用的一種阻塞控制機制。慢啟動也叫做指數增長期。慢啟動是指每次tcp接收視窗收到確認時都會增長。增加的大小就是已確認段的數目。這種情況一直保持到要麼沒有收到一些段,要麼視窗大小到達預先定義的閾值。如果發生丟失事件,tcp就認為這是網路阻塞,就會採取措施減輕網路擁擠。一旦發生丟失事件或者到達閾值,tcp就會進入線性增長階段。這時,每經過乙個rtt視窗增長乙個段。

傳送方一開始便向網路傳送多個報文段,直至達到接收方通告的視窗大小為止。當傳送方和接收方處於同乙個區域網時,這種方式是可以的。但是如果在傳送方和接收方之間存在多個路由器和速率較慢的鏈路時,就有可能出現一些問題。

一些中間路由器必須快取分組,並有可能耗盡儲存器的空間。

現在,tcp需要支援一種被稱為「慢啟動(slow start)」的演算法。該演算法通過觀察到新分組進入網路的速率應該與另一端返回確認的速率相同而進行工作。

慢啟動為傳送方的tcp增加了另乙個視窗:擁塞視窗(congestion window),記為cwnd。當與另乙個網路的主機建立t c p連線時,擁塞視窗被初始化為 1個報文段(即另一端通告的報文

段大小)。每收到乙個ack,擁塞視窗就增加乙個報文段( c w n d以位元組為單位,但是慢啟動以報文段大小為單位進行增加)。傳送方取擁塞視窗與通告視窗中的最小值作為傳送上限。擁

塞視窗是傳送方使用的流量控制,而通告視窗則是接收方使用的流量控制。傳送方開始時傳送乙個報文段,然後等待 a c k。當收到該a c k時,擁塞視窗從1增加為2,即可以傳送兩個報文段。當收到這兩個報文段的 a c k時,擁塞視窗就增加為4。這是一種指數增加的關係。

在某些點上可能達到了網際網路的容量,於是中間路由器開始丟棄分組。這就通知傳送方它的擁塞視窗開得過大。當我們在下一章討論 t c p的超時和重傳機制時,將會看到它們是怎樣對擁塞視窗起作用的。現在,我們來觀察乙個實際中的慢啟動。

下圖表示的是將從主機sun傳送到主機vangogh.cs.berkeley.edu的資料。這些資料將通過乙個慢的slip鏈路,該鏈路是tcp連線上的瓶頸(我們已經在時間系列上去掉了連線建立的過程)。

我們觀察到傳送方傳送乙個長度為5 1 2位元組的報文段,然後等待ack。該ack在716 ms後收到。這個時間是乙個往返時間的指示。於是擁塞視窗增加了 2個報文段,且又傳送了兩個報

文段。當收到報文段5的ack後,擁塞視窗增加為3。此時儘管可傳送多達3個報文段,可是在下乙個ack收到之前,只傳送了2個報文段。

在乙個正常的網路,服務端在公網,客戶端是一台虛擬機器,通過客戶端223.226.200.34,每次傳送大小為102400大小資料到服務端223.226.200.200,迴圈次數是1000次。雙方的網路良好,最開始的時候可以達到客戶端每傳送乙個資料,服務端就傳送一次ack,如下:

17:11:42.437707 ip 223.226.200.34.42567 > 223.226.200.200.6888: flags [p.], seq 1:1025, ack 1, win 64240, options [nop,nop,ts val 2003558 ecr 972961746], length 1024

17:11:42.437721 ip 223.226.200.200.6888 > 223.226.200.34.42567: flags [.], ack 1025, win 33, options [nop,nop,ts val 972961748 ecr 2003558], length 0

17:11:42.437805 ip 223.226.200.34.42567 > 223.226.200.200.6888: flags [p.], seq 1025:2485, ack 1, win 64240, options [nop,nop,ts val 2003558 ecr 972961746], length 1460

17:11:42.437816 ip 223.226.200.200.6888 > 223.226.200.34.42567: flags [.], ack 2485, win 38, options [nop,nop,ts val 972961748 ecr 2003558], length 0....17:11:42.468767 ip 223.226.200.34.42567 > 223.226.200.200.6888: flags [p.], seq 24025:25461, ack 1, win 64240, options [nop,nop,ts val 2003558 ecr 972961753], length 1436

17:11:42.468780 ip 223.226.200.200.6888 > 223.226.200.34.42567: flags [.], ack 25461, win 83, options [nop,nop,ts val 972961756 ecr 2003558], length 0

大家可以看到兩個報文之間的時間差不超過50ms左右,一般是20ms。

但是後來,可能是由於一些中間路由器必須快取分組,並有可能耗盡儲存器的空間。導致服務端不能及時響應,確認資料,如下:

可以看到這裡客戶端連續傳送資料到服務端的這些報文裡,每兩個報文之間的時間差比較大,基本都達到100ms以上的差距,所以可以確定是由於伺服器傳送ack報文過遲,傳送方才會根據擁塞視窗大小,連續傳送多個報文段。

另外,這裡的服務端**中是自己的程式,並沒有read資料,所以會見到win越來越小。直到最後win為0,無法接收任何資料。

TCP擁塞控制 慢啟動 擁塞避免 快重傳 快啟動

一般原理 發生擁塞控制的原因 資源 頻寬 交換節點的快取 處理機 的需求 可用資源。作用 擁塞控制就是為了防止過多的資料注入到網路中,這樣可以使網路中的路由器或者鏈路不至於過載。擁塞控制要做的都有乙個前提 就是網路能夠承受現有的網路負荷。對比流量控制 擁塞控制是乙個全域性的過程,涉及到所有的主機 路...

TCP擁塞控制 慢啟動 擁塞避免 快重傳 快啟動

擁塞控制作用 為了防止過多的資料注入到網路中,這樣可以使網路中的路由器或者鏈路不至於過載.擁塞視窗 傳送方為乙個動態變化的視窗叫做擁塞視窗,大小取決於網路的擁塞程度。傳送方讓自己的傳送視窗 擁塞視窗,但是傳送視窗不是一直等於擁塞視窗的,在網路狀況好的時候,擁塞視窗不斷的增加,傳送方的視窗自然也隨著增...

TCP擁塞控制 慢啟動 擁塞避免 快重傳 快啟動

一般原理 發生擁塞控制的原因 資源 頻寬 交換節點的快取 處理機 的需求 可用資源。作用 擁塞控制就是為了防止過多的資料注入到網路中,這樣可以使網路中的路由器或者鏈路不至於過載。擁塞控制要做的都有乙個前提 就是網路能夠承受現有的網路負荷。傳送方為乙個動態變化的視窗叫做擁塞視窗,擁塞視窗的大小取決於網...