tcp的擁塞控制是為了防止過多的資料注入網路,使得網路中的路由器或者鏈路過載。tcp擁塞控制的四種演算法分別為慢開始,擁塞避免,快重傳,快恢復。
tcp連線雙方都維護了乙個擁塞視窗和乙個慢開始門限值,當tcp雙方建立連線時,將擁塞視窗大小設定為1個資料段(1mss)(maximum segment size),隨後包的每一次往返(每次收到確認應答),視窗大小加倍,這會使視窗按指數方式增長。慢開始是指一開始向網路中注入的資料段少,而不是指擁塞視窗的增長速度。當擁塞視窗達到慢啟動門限時,啟動擁塞避免演算法。
慢啟動門限值,初始值一般為65535,擁塞避免是指當擁塞視窗達到慢啟動閾值,擁塞視窗的值不再以指數上公升,而是以加法線性增加,每個rtt(一次往返經歷的時間,不是乙個恆定值)擁塞視窗大小+1,以此來避免擁塞。當出現超時重傳或者快速重傳時,擁塞避免分別做以下處理:
傳送方在收到3次重複確認應答時(如圖所示,m3丟失,接下來接收方每次接到資料段時都會對m2進行重複確認應答),代表收到了3個報文段,但是之前的1個段丟失了,傳送方就立即對丟失的報文段進行重傳,而不是等待該報文的超時重傳計時器超時再重傳,因此稱為快重傳。擁塞避免演算法對超時重傳和快重傳分別做不同的處理(見擁塞避免演算法)。
當傳送方收到3個重複的應答時(隨機進行快重傳),說明有3個資料段已經傳送出去,只是丟失了個別資料段,因此不啟動慢開始演算法,而是執行快恢復演算法:傳送方將慢開始門限設定和擁塞視窗都設為當前擁塞視窗大小的一半(也有的是將擁塞視窗大小設定為當前擁塞視窗大小的一半+3),然後開始擁塞避免演算法(即乙個rtt視窗大小+1)
參考文獻1
tcp擁塞控制 TCP 面試系列之擁塞控制
tcp 面試系列第六彈,tcp 擁塞控制的一般性原理。擁塞的定義。在某段時間,若對網路中某一資源的需求超過了該資源所能提供的可用部分,網路的效能就要變壞。這種情況就叫做擁塞。擁塞常常趨於惡化。舉個例子,如果乙個路由器沒有足夠的快取空間,它就會丟棄一些新到的分組。但當分組被丟棄時,傳送這一分組的源點就...
學習筆記之TCP擁塞控制
tcp的擁塞控制 1 擁塞控制 防止過多的資料注入到網路中,這樣可以使網路中的路由器或鏈路不至於過載。擁塞控制所要做的都有乙個前提,網路能夠承受現有的網路負荷。擁塞控制是乙個全域性性的過程,涉及到所有的主機 所有的路由器,以及與降低網路傳輸效能有關的所有因素。2 流量控制 往往指點對點通訊量的控制,...
TCP擁塞控制之擁塞避免
tcp傳送方通過慢啟動確定傳送資料的視窗閾值,一旦達到這個閾值,就意味著雖然網路中可能有更多可用的資源,但是如果占用全部的資源,將會使共享路由器佇列的其他tcp連線出現嚴重的丟包和重傳情況,從而導致整個網路效能不穩定。為了傳輸更多的資源而不至於影響其他tcp連線的傳輸,tcp實現了擁塞避免演算法。一...