TCP擁塞機制

1234roro發表於2024-07-16

慢啟動

原理

預設,TCP連線,都是慢啟動,也可以關閉。因為還不瞭解網路的頻寬,不瞭解伺服器能接受的最大視窗。所以,第一個資料包,一般是1個或者2個MSS那麼大,這也就是CWND,擁塞視窗的大小。如果發過去,收到了一個ACK的確認包,傳送方就以指數來增長CWND,如果上一次是1次,那下一次就是2的1次方。又收到了ACK,那下一次就是2的2次方,這樣來增長CWND。

1)正常的停止:如果直到達到預設的慢啟動閾值(ssthresh)了,那就不再增長CWND。傳送方不再使用指數增長,而是進行線性增長,每個RTT週期,我就增加一個MSS,這樣又可以繼續緩慢試探對方能承受的資料大小,也不至於一下子擁塞了網路;

2)非正常的停止:如果在慢啟動過程中,檢測到網路擁塞了(比如檢測到超時或者連續3次沒有收到ACK了),CWND將重置為初始值(一般為1個MSS),並且ssthresh也會設定為當前CWND的一半。然後繼續進入慢啟動。

優點

1)避免網路一開始就會擁塞;

2)動態適應網路的變化,逐步增加 、減慢傳送速度。

缺點

1)一開始增長比較慢,可能會導致傳輸延遲;

2)在高頻寬、低延遲網路中,慢啟動可能會使得訪問變慢。

相關文章