擁塞控制就是防止過多的資料注入到網路中,這樣可以使網路中的路由器或鏈路不致過載,擁塞控制要做的都有個前提,就是網路能夠承受現有的網路負荷。擁塞控制是個全域性性的過程。
幾種擁塞控制方法
慢開始 擁塞避免 快重傳 快恢復
1.慢開始和擁塞避免
傳送方維持乙個叫做擁塞視窗的狀態變數,擁塞視窗取決於網路的擁塞程度,並且動態地在變化。傳送方讓自己的傳送視窗等於擁塞視窗。慢開始的思路:當主機開始傳送資料時,如果立即把大量資料位元組注入到網路,那麼就有可能引起網路擁塞,因為現在並不清楚網路的負荷情況。較好的方法是,先探測一下,即遊俠到大元件增大傳送視窗,也就是說,由小到大逐漸增大擁塞視窗數值。通常是先把擁塞視窗cwnd設定為乙個最大報文段mss的數值。在沒收到乙個對新的報文段的確認後,把擁塞視窗增加至多乙個mss的數值。 這樣每經過乙個傳輸輪次,擁塞視窗cwnd就加倍。
為了防止擁塞視窗cwnd增長過大引起網路擁塞,還需要設定乙個慢開始門限 ssthresh 狀態變數。
當cwnd 小於ssthresh 使用上述的慢開始演算法。
當cwnd> ssthresh時,停止使用慢開始演算法而改用擁塞避免演算法
當cwnd = ssthresh時,即可以用慢開始演算法,也可使用擁塞避免演算法。
無論在慢開始階段還是在擁塞避免階段,只要傳送方判斷網路出現擁塞(其根據就是沒有按時收到確認),就要把曼可似乎門限ssthresh設定為出現擁塞時的傳送方視窗值的一半。然後把擁塞視窗的cwnd重新設定為1,執行慢開始演算法。這樣做的目的就是要迅速減少主機傳送到網路中的分組數,使得發生擁塞的路由器有足夠的時間把佇列中的積壓分組處理完畢
2快重傳和快恢復
快重傳演算法首先要求接收方每收到乙個失序的報文段後就立即發出重複確認(為了使傳送方急躁知道有報文段沒有到達對方)而不要等待自己傳送資料時才進行捎帶確認,根據快重傳演算法的規定,當傳送方一連收到三個重複確認就應當立即重傳對方尚未收到的報文段,而不必繼續等待為這個尚未收到的報文段設定的重傳計時器到期。由於傳送方盡早的重傳未被確認的報文段,因此採用了快重傳後可整個網路的吞吐兩提高約20%.
快恢復演算法:
① 當傳送方連續收到三個重複確認時,就執行」乘法減小」演算法,把慢開始門限sstrlen減半。這是為了預防網路發生擁塞,接下來並不是去執行慢開始演算法。
②由於傳送方現在任務網路很可能沒有阻塞,因此cwnd值設定為慢開始門限ssthresh減半後的數值,然後開始執行擁塞避免演算法,使擁塞視窗緩慢地線性增大。
在採用快恢復演算法時,慢開始演算法只是在tcp連線建立時和網路出現超時才使用
傳送視窗的的上限值=min[rwnd,cwnd] rwnd :接收視窗 cwnd:擁塞視窗
TCP擁塞控制
計算機網路中的頻寬 交換結點中的快取和處理機等,都是網路的資源。在某段時間,若對網路中某一資源的需求超過了該資源所能提供的可用部分,網路的效能就會變壞。這種情況就叫做擁塞。擁塞控制就是防止過多的資料注入網路中,這樣可以使網路中的路由器或鏈路不致過載。擁塞控制是乙個全域性性的過程,和流量控制不同,流量...
TCP 擁塞控制
我們都知道 tcp 是傳輸層的協議,網路請求經過傳輸層到達網路層之後是通過 ip 包進行傳輸的。如果我們傳送方大量的 ip 包的時候,有可能我們的鏈路資源有限,那麼我們的 ip 包就有可能丟失或者被丟棄,這樣我們的請求就不是絕對安全的,那接下來我們就說一下,tcp是如何處理前面的情況的。一 什麼是網...
TCP擁塞控制
tcp擁塞控制 擁塞檢測 congestion detection 擁塞控制 congestion prevention tcp擁塞原因 網際網路解決方案應該是認識到兩個潛在的問題的 網路容量 接收者容量,然後單獨地處理這兩個問題 為此,每個傳送者維護兩個視窗 慢啟動演算法 slow start 獲...