產生的原因
∑ 對資源的需求》可用資源 ∑對資源的需求》可用資源\sum_{}^{} 對資源的需求 >可用資源
注意單純的增加網路資源無法解決問題
例如:把結點的儲存空間擴大,更換更高速率的鏈路,提高結點處理機的運算速度,不僅不能解決問題,而且可能使網路效能更壞。
原因:網路擁塞是許多因素引起的,單純的解決乙個可能會使上述情況得到一些緩解,但是會把擁塞轉移到其他地方。
擴大結點儲存空間——>由於輸出鏈路的容量和處理機的速度並未提高,增大排隊等待時間,超時重傳,浪費資源。
更換更高速率的鏈路——>可能會緩解,,有可能造成各部分不匹配。
擁塞控制的作用
注意擁塞控制與流量控制的區別
擁塞控制是防止過多的資料注入到網路中,可以使網路中的路由器或鏈路不致過載,是乙個全域性性的過程。
流量控制是點對點通訊量的控制,是乙個端到端的問題,主要就是抑制傳送端傳送資料的速率,以便接收端來得及接收。
擁塞的標誌
1.重傳計時器超時
2.接收到三個重複確認
擁塞控制的機制
慢開始與擁塞避免
慢開始1.慢開始不是指cwnd的增長速度慢(指數增長),而是指tcp開始傳送設定cwnd=1。
2.思路:不要一開始就傳送大量的資料,先探測一下網路的擁塞程度,也就是說由小到大逐漸增加擁塞視窗的大小。這裡用報文段的個數的擁塞視窗大小舉例說明慢開始演算法,實時擁塞視窗大小是以位元組為單位的。如下圖:
3.為了防止cwnd增長過大引起網路擁塞,設定乙個慢開始門限(ssthresh狀態變數)
當cnwd<ssthresh,使用慢開始演算法
當cnwd=ssthresh,既可使用慢開始演算法,也可以使用擁塞避免演算法
當cnwd>ssthresh,使用擁塞避免演算法
擁塞避免(按線性規律增長)
1.擁塞避免並非完全能夠避免擁塞,是說在擁塞避免階段將擁塞視窗控制為按線性規律增長,使網路比較不容易出現擁塞。
2.思路:讓擁塞視窗cwnd緩慢地增大,即每經過乙個往返時間rtt就把傳送方的擁塞控制視窗加一。
無論是在慢開始階段還是在擁塞避免階段,只要傳送方判斷網路出現擁塞(其根據就是沒有收到確認,雖然沒有收到確認可能是其他原因的分組丟失,但是因為無法判定,所以都當做擁塞來處理),就把慢開始門限設定為出現擁塞時的傳送視窗大小的一半。然後把擁塞視窗設定為1,執行慢開始演算法。
加法增大與乘法減小
乘法減小:無論是慢開始階段還是擁塞避免,只要出現了網路擁塞(超時),就把慢開始門限值ssthresh減半
加法增大:執行擁塞避免演算法後,擁塞視窗線性緩慢增大,防止網路過早出現擁塞
快重傳與快恢復
快重傳
1.快重傳要求接收方在收到乙個失序的報文段後就立即發出重複確認(為的是使傳送方及早知道有報文段沒有到達對方)而不要等到自己傳送資料時捎帶確認。快重傳演算法規定,傳送方只要一連收到三個重複確認就應當立即重傳對方尚未收到的報文段,而不必繼續等待設定的重傳計時器時間到期。
2.由於不需要等待設定的重傳計時器到期,能盡早重傳未被確認的報文段,能提高整個網路的吞吐量。
快恢復(與快重傳配合使用)
1.採用快恢復演算法時,慢開始只在tcp連線建立時和網路出現超時時才使用。
2.當傳送方連續收到三個重複確認時,就執行「乘法減小」演算法,把ssthresh門限減半。但是接下去並不執行慢開始演算法。
3.考慮到如果網路出現擁塞的話就不會收到好幾個重複的確認,所以傳送方現在認為網路可能沒有出現擁塞。所以此時不執行慢開始演算法,而是將cwnd設定為ssthresh的大小,然後執行擁塞避免演算法。
注意傳送方視窗的上限值=min(接受視窗rwnd,擁塞視窗cwnd)
rwnd>cwnd 接收方的接收能力限制傳送方視窗的最大值
rwnd<cwnd 網路的擁塞限制傳送方視窗的最大值
面試題
TCp擁塞控制機制
tcp本身的可靠性是利用確認機制,超時重發來保證的,這些不說了,網上資料很多。不過以前一直沒有仔細學習過tcp的網路擁塞控制,現在記錄下一些總結吧。什麼是擁塞?一圖勝千言,看上面的圖,上面是負載 吞吐量,下面是負載 延遲,問題很明顯了,受限於網路節點的物理承受能力,負載顯然不可能和吞吐量成線性關係,...
TCP擁塞控制機制
對 資源的需 可用資源 對資源的需求 可用資源 注意單純的增加網路資源無法解決問題 例如 把結點的儲存空間擴大,更換更高速率的鏈路,提高結點處理機的運算速度,不僅不能解決問題,而且可能使網路效能更壞。原因 網路擁塞是許多因素引起的,單純的解決乙個可能會使上述情況得到一些緩解,但是會把擁塞轉移到其他地...
TCP擁塞機制
原文 你還在為 tcp 重傳 滑動視窗 流量控制 擁塞控制發愁嗎?看完 就不愁了 為什麼要有擁塞控制呀,不是有流量控制了嗎?前面的流量控制是避免 傳送方 的資料填滿 接收方 的快取,但是並不知道網路的中發生了什麼。一般來說,計算機網路都處在乙個共享的環境。因此也有可能會因為其他主機之間的通訊使得網路...