TCP協議中的擁塞控制

2021-09-25 11:07:08 字數 1220 閱讀 6556

tcp擁塞控制作用就是提高網路利用率、降低丟包率、並保證網路資源對每條資料流的公平性。

擁塞控制有四部分組成,慢啟動、擁塞避免、快速重傳 快速恢復。

擁塞控制的最終受控變數是傳送端向網路一次連續寫入(收到第乙個資料的確認之前)的資料量 我們稱之為 swnd(傳送視窗),傳送端最終以tcp報文段來傳送資料,所以swnd限制了連續傳送報文段的數量,這些報文段的最大長度稱之為smss,其值一般小於mss。

接收方可以通過接收通告視窗(rwnd)來控制swnd,但顯然不夠,引入cwnd(擁塞控制視窗)這個狀態變數。 而swnd,往往是rwnd和cwnd中的較小值。

慢啟動與擁塞避免

tcp建立連線好了以後,cwnd 就被設定成初始值為iw,其大小為2~4個smss.

以後傳送端每接收到接收端的乙個確認,那麼cwnd就以如下增長方式增長

cwnd+=min(n,smss)

n為此次確認中包含的之前未被確認的位元組數。這樣一來,cwnd將按照指數形式擴大。這就是所謂的慢啟動,慢啟動演算法的理由是tcp模組剛開始傳送資料的時候根本不知道網路的實際狀況,需要一種試探的方式平滑的增加cwnd的大小。

但如果不施加其他方法,慢啟動必須使得cwnd很快膨脹(可見慢啟動其實並不慢)

為此cwnd超過慢啟動閥門值時,tcp擁塞控制將進入擁塞避免狀態。

擁塞避免演算法使得cwnd以線性增長,從而減緩其擴大,擁塞避免有兩種實現方式

每個rtt時間內按照cwnd+=min(n,smss)計算新的cwnd,而不論該rtt時間內傳送端收到多少個確認。

每收到乙個對新資料的確認報文段,就按照cwnd+=smss*smss/cwnd來更新cwnd。

判斷傳送端擁塞發生的依據有如下兩個:

傳輸超時或者tcp重傳定時器溢位

接收到重複報文段

在很多情況下,傳送端可能接收到重複的確認報文段,比如tcp報文丟失,或者是接收端接收到亂序tcp報文段,並重新排之。

擁塞控制演算法就需要判斷當收到重複的確認報文段時,網路是否發生了真正發生了擁塞,或者tcp報文段發生了丟失。

具體做法就是傳送端如果連續收到3個重複的確認報文段,就認為是擁塞發生了。就啟用快速重傳和快速恢復。

快速重傳和快速恢復完成之後,擁塞控制將恢復到擁塞避免狀態

TCP協議 擁塞控制演算法

網路擁塞控制演算法 tcp的擁塞控制主要原理依賴於乙個擁塞視窗來控制,在之前我們還討論過tcp還有乙個對端通告的接收視窗用於流量控制。視窗值得大小就代表能夠傳送出去的但還沒有接收到ack的最大資料報文段,顯然視窗越大那麼資料傳送的速度也就越快,但是也有越可能使得網路出現擁塞,如果視窗值為1,那麼就簡...

TCP中擁塞控制

tcp擁塞控制,是防止網路中過多資料注入網路,導致路由器或鏈路過載。tcp擁塞控制十乙個全域性性過程。幾個視窗值 傳送方視窗值 傳送方緩衝區大小 接收方視窗值 接收方緩衝區大小 擁塞視窗值 cwnd,表示網路擁塞情況 通告視窗值 接收方通過這個值去通知 傳送方 調整其傳送緩衝區大小 慢啟動視窗值 當...

詳解TCP協議 五 傳輸中的擁塞控制

二 tcp的擁塞控制 二 快速重傳與快速恢復演算法 三 流量控制與擁塞控制的區別 是什麼 後果 是什麼 方法 可以得出tcp的擁塞控制屬於無需擁塞狀態反饋 是什麼端到端的角度,檢測網路是否阻塞,如果是,立即將資料傳送速率降下來 方法aimd 加性增長,乘性減少 當網路不擁塞時,加性增長視窗大小,當網...