【TCP】TCP擁塞控制小記

相比UDP,TCP有擁塞控制。《計算機網絡》這本書以Tahoe與Reno爲例介紹了TCP的擁塞控制。


1、慢啓動擁塞避免是必須的。這兩點不同之處在於擁塞窗口 cwnd 增速不同。慢啓動以指數增長,擁塞避免則以線性增長。

2、擁塞丟包的判斷主要兩種方式:1)發送發超時;2)發送方收到3次冗餘ACK

3、與Tahoe相比,Reno還具有快速恢復。對與以上兩種丟包,Tahoe都將慢啓動閾值設爲當前 cwnd/2 ,並將擁塞窗口 cwnd 重置爲1,然後進入慢啓動。而Reno則對於這兩種丟包區別對待。對於1)的解決方式是一樣的,不同的是對於2),Reno將慢啓動閾值設爲 cwnd/2,然後將 cwnd 變爲 cwnd / 2 + 3(來自3次冗餘ACK,快速恢復的規則之一),接着進入快速恢復,對於收到的每個冗餘ACK,cwnd都加一,直到收到一個新的ACK,擁塞窗口 cwnd 變爲 慢啓動閾值,進入擁塞避免。在這期間假如出現超時,則進入 1) 的處理方式。

這裏的一個疑問:快速恢復中,爲什麼在收到冗餘ACK後增加cwnd?
答案:在檢測到丟包時,窗口爲cwnd。這時候網絡中最多有cwnd個包(RTT時間內)。每當收到一個重複的ACK,則說明有數據包離開網絡,達到接收端了。那麼,此時網絡中還可以再容納1個包。由於發送端滑動窗口不能移動了,使cwnd++,這樣一來,可以提高吞吐量。而實際上,在fast recovery期間發送的新數據包比起發生丟包的cwnd來說,已經是大大減少了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章