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

2021-10-03 08:21:35 字數 1846 閱讀 9010

二、tcp的擁塞控制

(二)快速重傳與快速恢復演算法

三、流量控制與擁塞控制的區別

是什麼 後果

是什麼

方法

可以得出tcp的擁塞控制屬於無需擁塞狀態反饋

是什麼端到端的角度,檢測網路是否阻塞,如果是,立即將資料傳送速率降下來

方法aimd(加性增長,乘性減少)

當網路不擁塞時,加性增長視窗大小,當網路擁塞時,乘性減少視窗大小,下面具體介紹

(一)慢啟動與擁塞避免演算法

如圖所示:

理解圖的基礎概念

rtt:定義從傳送端發出乙個報文段到收到對這個報文段的確認時間時間間隔的往返時間

congwin變數: 傳送端的擁塞視窗congwin變數,單位位元組,表示未收到接收端確認情況下,可以連續傳送的位元組數,大小隨網路擁塞程度動態變化

thershold:擁塞視窗閾值thershold,慢啟動與擁塞避免的轉折點

解釋演算法圖過程

慢啟動階段

採用試探的方法,初始將congwin設定為mss(最大報文段長度),在rtt時間內,每收到乙個ack,congwin加乙個mss,當增加到擁塞視窗閾值thershold時,進入

擁塞避免階段

此階段視窗大小緩慢增長,當前視窗所有報文段得到確認時,視窗大小增長乙個mss(不論收到幾個ack),此時congwin呈線性增長(加性增長),當出現計時器超時時(網路擁塞)

如何解決網路擁塞

擁塞視窗congwin值變為1(乘性減少),進入慢啟動階段,此時擁塞視窗閾值thershold變為網路擁塞時視窗大小的一半(如圖thershold的更新值為12)

難以理解的點

rtt一般時間比較長,可以將擁塞視窗所有報文段全部傳送出去

所以在慢啟動階段,在rtt時間間隔內收到幾個ack則視窗大小增長幾個,一般說rtt時間間隔中是成倍增長,如圖

而在擁塞避免階段,乙個rtt時間間隔內不管收到幾個ack,只視窗大小增加1

(二)快速重傳與快速恢復演算法

為什麼有這個演算法?

區分計時器超時和三次重複確認情況

在上篇部落格提過,計時器超時及三次重複確認ack都被視為丟失,而在這裡同樣被視為網路擁塞,而傳送端可以收到接收端的確認,事實上和真正的網路擁塞不一樣,於是就有了這個演算法

提一下三次重複確認

雖然seq=200的報文段沒有超時,但經過三次重複確認依舊會重傳

快速重傳與快速恢復演算法圖

與上乙個演算法不同的是:

當收到3次重複ack時,會將擁塞視窗congwin直接調為擁塞視窗閾值thershold,然後進入擁塞避免階段,這也就是快速恢復,恢復的是congwin值

流量控制控制端到端的資料,擁塞控制控制全域性網路的速率

假如網路擁塞的話,接收方有再大的快取,資料也接收不到

兩種控制的實現都通過動態改變傳送視窗大小,傳送視窗大小取兩種控制的最小值

TCP傳輸協議詳解

最近重讀的 stevens 老先生的tcp ip詳解,梳理了一下,打算把自己理解的寫出來。tcp ip是一種面向連線的 可靠的 基於位元組流的傳輸層通訊協議,它會保證資料不丟包 不亂序。tcp全名是transmission control protocol,它是位於網路osi模型中的第四層 tran...

TCP協議中的擁塞控制

tcp擁塞控制作用就是提高網路利用率 降低丟包率 並保證網路資源對每條資料流的公平性。擁塞控制有四部分組成,慢啟動 擁塞避免 快速重傳 快速恢復。擁塞控制的最終受控變數是傳送端向網路一次連續寫入 收到第乙個資料的確認之前 的資料量 我們稱之為 swnd 傳送視窗 傳送端最終以tcp報文段來傳送資料,...

TCP傳輸協議如何進行擁塞控制?

擁塞控制 擁塞現象是指到達通訊子網中某一部分的分組數量過多,使得該部分網路來不及處理,以致引起這部分乃至整個網路效能下降的現象,嚴重時甚至會導致網路通訊業務陷入停頓,即出現死鎖現象。這種現象跟公路網中經常所見的交通擁擠一樣,當節假日公路網中車輛大量增加時,各種走向的車流相互干擾,使每輛車到達目的地的...