計算機網路 tcp的擁塞控制

2021-10-24 12:29:37 字數 1545 閱讀 7002

主機剛剛開始傳送報文段時,可先設定擁塞視窗cwnd=1(即設定為1個最大報文段mss的數值),在每收到乙個對新的報文段的確認後,將擁塞視窗加 1,即增加乙個mss的數值(重傳的不算在內)。使用慢開始演算法後,每經過乙個傳輸輪次,擁塞視窗cwnd就加倍。乙個傳輸輪次所經歷的時間其實就是往返時間rtt。「傳輸輪次」更加強調:把擁塞視窗cwnd所允許傳送的報文段都連續傳送出去,並收到了對已傳送的最後乙個位元組的確認。為防止擁塞視窗增加過大引起網路擁塞,還需要設定乙個「慢開始門限(ssthresh)」

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

慢開始和擁塞避免按照下面的規則進行使用:

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

cwnd > ssthresh時,使用擁塞避免演算法。

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

ps:這時候就有乙個問題了,如果ssthresh(門限)為11。那慢開始到cwnd=8的時候就直接變成了16嗎?其實是不會的,這時候cwnd是為11。cwnd的慢開始增長是不會超過門限值的。

首先要求接收方每收到乙個失序的報文段後就立即發出重複確認。這樣做可以讓傳送方及早知道有報文段沒有到達接收方。傳送方只要一連收到三個重複確認就應當立即重傳對方尚未收到的報文段(大可能是因為丟包)。快重傳並非取消重傳計時器,而是在某些情況下可更早地重傳丟失的報文段。

當傳送端收到連續三個重複的確認時,就執行「乘法減小」演算法,把慢開始門限 ssthresh 減為擁塞時視窗值的一半。但接下去不執行慢開始演算法.由於傳送方現在認為網路很可能沒有發生擁塞,因此現在不執行慢開始演算法,即擁塞視窗 cwnd 現在不設定為 1,而是設定為慢開始門限 ssthresh 減半後的數值,然後開始執行擁塞避免演算法(「加法增大」),使擁塞視窗緩慢地線性增大。

總得來說當傳送端收到連續三個重複的確認(即三個重複的ack),ssthreshcwnd都變為當時cwnd的一半。例如當cwnd=12時候收到了三個重複的確認,那麼cwndssthresh都會變為6。

快恢復和快重傳是差不多。只少我沒有找出他們在做法上有什麼區別。

計算機網路 TCP的擁塞控制

擁塞 在某段時間內,若對網路中某一資源的需求超過了該資源所能提供的可用部分,網路效能變壞。某一資源 頻寬 交換節點等 若出現擁塞而不進行控制,整個網路的吞吐量將隨輸入負荷的增大而下降。慢開始,擁塞避免,快重傳,快恢復 1.傳送方維護乙個擁塞視窗cwnd的狀態變數,其值取決於網路的擁塞程度,並且動態變...

計算機網路 擁塞控制

引言 tcp與udp各有各的優缺點,相比於udp,tcp具有擁塞控制與滑動視窗機制等功能,這裡先給自己整理一哈擁塞 se 控制。為什麼要用擁塞控制 因為由於一些原因 接收過多的報文,超過路由器的處理能力 路由器可能會丟棄一些報文,然而定時器這個時候就會處於超時狀態,傳送端就會重新傳送報文,這樣反而會...

計算機網路 擁塞控制

在流量控制中,傳送方傳送的資料是由接收方決定,而在擁塞控制中,由傳送方自己通過檢測網路狀況而決定。1.慢開始演算法 剛開始傳送tcp報文段時,先令擁塞視窗cwnd 1 1個最大報文段長度mss 逐次加倍 當到達慢開始門限時,改用擁塞避免演算法。2.擁塞避免演算法 cwnd每次加1 當網路出現擁塞時,...