談談TCP IP 擁塞控制

2021-08-07 04:33:10 字數 953 閱讀 1459

最近在看《tcp/ip詳解》,記錄一下我對擁塞控制的理解吧。

當傳送方向網路中注入大量的報文段時,容易發生擁塞,從而造成網路的效能和吞吐量的下降,這時就需要擁塞控制。在擁塞控制最主要由傳送方的擁塞視窗(cwnd)來控制(當然也得考慮對端接收視窗(rwnd)的大小),這個視窗值的大小就代表能夠傳送出去的但還沒有收到ack的最大資料報文段,所以tcp的擁塞控制的核心就是要選取最合適的cwnd值,從而使得網路吞吐量最大化且不產生擁塞。

於是首先提出了"慢啟動"演算法:具體來說,當新建連線時,cwnd初始化為1個最大報文段(mss)大小,傳送端開始按照擁塞視窗大小傳送資料,每當有乙個報文段被確認,cwnd就增加1個mss大小。這實際是一種指數增長的方式,起點低,增長速度卻不慢,很快會佔滿整個頻寬。

在此基礎上,提出了"擁塞避免"演算法,它定義了乙個叫慢啟動門限(ssthresh)的變數,當cwnd超過該值後,慢啟動過程結束,進入擁塞避免階段。這時每收到乙個報文段的確認,cwnd增加1/cwnd報文段,這也意味著在乙個rtt時間內,cwnd最多增加1個報文段單元,從而使cwnd改為線性增長方式。

那麼當擁塞發生時,擁塞避免演算法具體如何作出改變的呢。

首先,如何探測發生了擁塞?

1.定時器超時溢位,

這時擁塞避免執行如下操作:

.把ssthresh降低為cwnd值的一半

.把cwnd重新設定為1

.重新進入慢啟動過程

2.收到連續三個相同的ack,

這時擁塞避免不用等待定時器超時,執行快速重傳和恢復,如下:

.把ssthresh設定為cwnd的一半

.把cwnd再設定為ssthresh的值(具體實現有些為ssthresh+3)

.重新進入擁塞避免階段

最後引用書上的話總結一下:

擁塞避免是傳送方使用的流量控制,而通告視窗則是接收方進行的流量控制。前者是傳送方感受到的網路擁塞的估

計,而後者則與接收方在該連線上的可用快取大小有關。

TCP IP擁塞控制複習

我們都知道計算機網路中的資源是有限的。某段時間內網路中對資源的需求超過了網路中的可用部分,而導致網路效能下降的情況就是擁塞。通俗點說就是傳送的資料報太多網路中的裝置處理不過來,而導致網路效能下降的情況。網路中的路由器會有乙個資料報處理佇列,當路由器接收到的資料報太多而一下子處理不過來時,就會導致資料...

TCP IP基礎04 擁塞控制

2 擁塞處理 q ss閾值怎麼設定?擁塞是一種持續過載的網路狀態,此時使用者對網路資源 包括鏈路頻寬 儲存空間和處理器處理能力等 的需求超過了固有的容量。一句話說就是,接收方一口氣收到了太多的資料,處理不了了。限制傳送方的傳送視窗。而傳送方的傳送視窗是由兩方面決定的。1 接收方的接受視窗。2 網路影...

TCP IP 流量控制和擁塞控制

如果傳送方把資料傳送得過快,接收方可能會來不及接收,這就會造成資料的丟失。所謂流量控制就是讓傳送方的傳送速率不要太快,要讓接收方來得及接收。所以可以說,流量控制是傳送方被動地調整流量。利用滑動視窗機制可以很方便地在tcp連線上實現對傳送方的流量控制。設a向b傳送資料。在連線建立時,b告訴了a 我的接...