TCP的擁塞控制

2021-07-22 12:00:49 字數 1718 閱讀 7456

整理自《計算機網路》(第6版)謝希仁

在計算機網路中的鏈路容量(即頻寬)、交換機結點中的快取和處理機等,都是網路的資源。在某段時間,若對網路中某一資源的需求超過了該資源所能提供的可用部分,網路的效能就要變壞。這種情況就叫做擁塞

擁塞控制就是防止過多的資料注入到網路中,這樣可以使網路中的路由器或鏈路不會過載。擁塞控制所要做的都有乙個前提,就是網路能夠承受現有的網路負荷。

流量控制往往指點對點通訊量的控制,是個端到端的問題(接收端控制傳送端)。流量控制所要做的就是抑制傳送端傳送資料的速率,以便使接收端來得及接收。

擁塞控制的演算法有:慢開始、擁塞避免、快重傳、快恢復四種。

1、慢啟動

傳送方維持乙個擁塞視窗cwnd的狀態變數。擁塞視窗的大小取決於網路的擁塞程度,並且動態地在變化。傳送方的傳送視窗小於等於擁塞視窗,因為還需要考慮接收方的接受能力。

那麼傳送方又是如何知道網路發生了擁塞呢?當網路發生擁塞時,路由器就要丟棄分組。因此只要傳送方沒有按時收到應當到達的確認報文,就可以猜想網路可能出現了擁塞。

慢開始演算法的核心是從小到大逐漸增大傳送視窗,也就是說,從小到大逐漸增大擁塞視窗的數值。通常在剛開始傳送報文段時,先把擁塞視窗設定為乙個最大報文段mss的數值,而在每收到對上一輪報文段(,每次加倍後的報文段的個數,可能不止乙個報文段)的確認後,就把擁塞視窗的數值加倍。

為了防止擁塞視窗增長過大引起網路擁塞,還需要維護乙個慢開始門限ssthresh的狀態變數,當擁塞視窗的值小於慢開始門限時,使用慢開始演算法,一旦擁塞視窗的值大於慢開始門限的值,就改用擁塞避免演算法。

2、擁塞避免

擁塞避免演算法的思路是讓擁塞視窗緩慢地增大,收到每一輪的確認後(乙個往返時間rtt),將擁塞視窗的值加1,而不是加倍,這樣擁塞視窗的值按照線性規律緩慢增長。

無論是在慢開始階段還是在擁塞避免階段,只要傳送方判斷網路出現擁塞(沒有按時收到確認),就把慢開始門限設定為出現擁塞時傳送視窗值的一半,但最小不能小於2個mss值,而後把擁塞視窗的值重新設定為1個mss,執行慢開始演算法。這樣做的目的是要迅速減少主機傳送到網路中的分組數,使得發生擁塞的路由器有足夠的時間把佇列中積壓的分組處理完畢。

3、快速重傳和快速恢復:

快重傳演算法首先要求接收方每收到乙個失序的報文段後就立即發出重複確認(重**送對前面有序部分的確認),而不是等待自己傳送資料時才進行稍待確認,也不是累積收到的報文傳送累積確認,如果傳送方連續收到三個重複確認,就應該立即重傳對方未收到的報文段(有收到重複確認,說明後面的報文段都送達了,只有中間丟失的報文段沒送達)。

由於傳送方能盡早重傳未被確認的報文段,因此採用快重傳後可以使整個網路的吞吐量提高約20%。

快恢復演算法與快重傳演算法配合使用,其過程有如下兩個要點:

1、當傳送方連續收到三個重複確認時,就把慢開始門限減半,這是為了預防網路發生擁塞。注意,接下來不執行慢開始演算法。

2、由於傳送方現在認為網路很很可能沒有發生特別嚴重的阻塞(如果發生了嚴重阻塞的話,就不會一連有好幾個報文段到達接收方,就不會導致接收方連續傳送重複確認),因此與慢開始不同之處是現在不執行慢開始演算法(即擁塞視窗的值不設為1個mss),而是把擁塞視窗的值設為慢開始門限減半後的值,而後開始執行擁塞避免演算法,線性地增大擁塞視窗。

TCP擁塞控制

擁塞控制就是防止過多的資料注入到網路中,這樣可以使網路中的路由器或鏈路不致過載,擁塞控制要做的都有個前提,就是網路能夠承受現有的網路負荷。擁塞控制是個全域性性的過程。幾種擁塞控制方法 慢開始 擁塞避免 快重傳 快恢復 1.慢開始和擁塞避免 傳送方維持乙個叫做擁塞視窗的狀態變數,擁塞視窗取決於網路的擁...

TCP擁塞控制

計算機網路中的頻寬 交換結點中的快取和處理機等,都是網路的資源。在某段時間,若對網路中某一資源的需求超過了該資源所能提供的可用部分,網路的效能就會變壞。這種情況就叫做擁塞。擁塞控制就是防止過多的資料注入網路中,這樣可以使網路中的路由器或鏈路不致過載。擁塞控制是乙個全域性性的過程,和流量控制不同,流量...

TCP 擁塞控制

我們都知道 tcp 是傳輸層的協議,網路請求經過傳輸層到達網路層之後是通過 ip 包進行傳輸的。如果我們傳送方大量的 ip 包的時候,有可能我們的鏈路資源有限,那麼我們的 ip 包就有可能丟失或者被丟棄,這樣我們的請求就不是絕對安全的,那接下來我們就說一下,tcp是如何處理前面的情況的。一 什麼是網...