1. 程式人生 > >計算機網絡之TCP擁塞控制

計算機網絡之TCP擁塞控制

spa 計算 圖片 sans 快速 rtt 思路 如果 image

1.  首先,擁塞控制和流量控制是不一樣的。

   擁塞控制是防止過多的數據註入到網絡中,可以使網絡中的路由器或鏈路不致過載,是一個全局性的過程。
   流量控制是點對點通信量的控制,是一個端到端的問題,主要就是抑制發送端發送數據的速率,以便接收端來得及接收。

2.  擁塞的標誌:1.重傳計時器超時 2.接收到三個重復確認

3.  發送方維持一個叫做擁塞窗口的狀態變量。擁塞窗口的大小取決於網絡的擁塞程度,且動態地在變化。

   慢開始和擁塞避免:

   1.慢開始算法的思路就是,不要一開始就發送大量的數據,先探測一下網絡的擁塞程度,也就是說由小到大(指數的增長)逐漸增加擁塞窗口的大小。擁塞避免則是讓擁塞窗口緩慢地增大,即每經過一個往返時間RTT就把發送方的擁塞控制窗口加一

   技術分享圖片

   為了防止擁塞窗口增長過大引起網絡擁塞,設置一個慢開始門限(ssthresh狀態變量)
   當擁塞窗口<ssthresh,使用慢開始算法(指數增長)
   當擁塞窗口=ssthresh,既可使用慢開始算法,也可以使用擁塞避免算法(線性增長)
   當擁塞窗口>ssthresh,使用擁塞避免算法

   但是無論是在慢開始階段還是在擁塞避免階段,只要發送方判斷網絡出現擁塞(其根據就是沒有收到確認,雖然沒有收到確認可能是其他原因的分組丟失,但是因為無法判定,所以都當做擁塞來處理),就把慢開始門限設置為出現擁塞時的發送窗口大小的一半。然後把擁塞窗口設置為1,執行慢開始算法。

4.  快速恢復(與快速重傳配合使用)

   1.采用快速恢復算法時,慢開始只在TCP連接建立時和網絡出現超時時才使用。
   2.當發送方連續收到三個重復確認時,就執行“乘法減小”算法,把ssthresh門限減半。但是接下去並不執行慢開始算法。
   3.考慮到如果網絡出現擁塞的話就不會收到好幾個重復的確認,所以發送方現在認為網絡可能沒有出現擁塞。所以此時不執行慢開始算法,而是將cwnd設置為ssthresh的大小,然後執行擁塞避免算法。

計算機網絡之TCP擁塞控制