了解TCP的擁塞控制

2021-08-08 22:57:26 字數 2843 閱讀 2718

本文基於《計算機網路》(第6版)進行總結

在某段時間,若網路中某一資源的需求超過了該資源所能提供的可用部分,網路效能就要變壞,這種情況就叫做擁塞——∑對資源的需求 > 可用資源

擁塞控制與流量控制的關係密切,但也存在差別。所謂擁塞控制就是防止過多的資料注入到網路中,這樣可以使網路中的路由器或鏈路不致過載。擁塞控制所要做的都有乙個前提,就是網路中能夠承受現有的網路負荷。擁塞控制是乙個全域性性的過程,涉及所有的主機、所有的路由器,以及與降低網路傳輸效能有關的所有因素

擁塞控制從大的方面看,可以分為開環控制閉環控制兩種方法。

開環控制:在設計網路時實現將有關發生擁塞的因素考慮周到,力求網路在工作時不產生擁塞。但一旦整個系統執行起來,就不再中途進行改正了。

閉環控制:基於反饋環路的概念,不同的措施:

監測網路系統以便監測到擁塞在何時、何處發生。

把擁塞發生的資訊傳送到可採取行動的地方

調整網路系統的執行以解決出現的問題

傳送方維持乙個叫做乙個擁塞視窗cwnd(congestion window)的狀態變數。擁塞視窗的大小取決於網路的擁塞程度,並且動態在變化。傳送方讓自己的傳送視窗等於擁塞視窗

慢開始演算法:在開始傳送報文段時,先把擁塞視窗cwnd設定為乙個最大報文段mss的數值。而在每收到乙個對新的報文段的確認後,把擁塞視窗增加至多乙個mss的數值,逐步增大傳送方的擁塞視窗cwnd

為方便說明原理,用報文段的個數作為視窗大小的單位

通過圖例,可以看到每經過乙個傳輸輪次,擁塞視窗cwnd就加倍

傳輸輪次:乙個傳輸輪次時間就是往返時間rtt,強調把擁塞視窗cwnd所允許傳送的報文段都連續傳送出去,並受到了對己傳送的最後乙個位元組的確認

為了防止擁塞視窗cwnd增長過大引起網路擁塞,還需要設定乙個慢開始門限ssthresh狀態變數,用法:

當cwnd < ssthresh時,使用慢開始演算法

當cwnd > ssthresh時,停止使用慢開始演算法而改用擁塞避免演算法

當cwnd = ssthresh時,既可以使用慢開始演算法,也可以使用擁塞避免演算法

擁塞避免演算法: 讓擁塞視窗cwnd緩慢地增大,即每經過乙個往返時間rtt就把傳送方的擁塞視窗cwnd加1,而不是加倍。這樣,擁塞視窗cwnd按線性規律緩慢地增長。

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

乘法減小:指不論在慢開始階段還是擁塞避免階段,只要出現超時,就把慢開始門限值ssthresh減半。即設定為當前的擁塞視窗的一半,與此同時,執行慢開始演算法。

加法增大:指執行擁塞避免演算法後,使用擁塞視窗緩慢增大,以防止網路過早出現擁塞。兩種演算法結合起來稱為aimd演算法

演算法提出基於的情況:如果傳送方設定的超時計時器時限已到但還沒有收到確認,那麼很可能是網路出現擁塞,致使報文段在網路中的某處被丟棄。之前使用擁塞避免演算法。

使用快重傳演算法:要求接受方每收到乙個失序的報文段後就立即發出重複確認而不要等待自己傳送資料時才進行捎帶確認

快重傳演算法規定,傳送方只喲啊一連收到三個重複確認就應當立即重傳對方尚未收到的報文段,而不必等待為報文段設定的重傳計時器到期。由於傳送方能盡早重傳未被確認的報文段,因此採用快重傳後可以使整個網路的吞吐量提高約20%

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

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

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

在採用快恢復演算法時,慢開始演算法只是在tcp連線建立時和網路出現超時時才使用

由於接受方的快取空間是有限的,接受方根據自己接受能力設定了接受視窗rwnd,並把這個視窗值寫入tcp首部中的視窗字段,傳送給傳送方。

接受視窗又稱通知視窗(advertised window)。因此,從接受方對傳送方的流量控制角度考慮,發送方的傳送視窗一定不能超過對方給出的接受視窗值rwnd

傳送方視窗的上限值 = min [rwnd, cwnd]

當rwnd < cwnd時,是接受方的接受能力限制傳送方視窗的最大值

當rwnd > cwnd時,則是網路的擁塞限制傳送視窗的最大值

TCP擁塞控制

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

TCP擁塞控制

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

TCP 擁塞控制

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