天天看點

擁塞視窗

慢開始算法的思路就是,不要一開始就發送大量的資料,先探測一下網絡的擁塞程度,也就是說由小到大逐漸增加擁塞視窗的大小。 [3] 

發送方會維持一個擁塞視窗,剛開始的擁塞視窗和發送視窗相等,一般開始均設定1,然後我們每收到一個确認,就讓擁塞視窗大小變為原來的兩倍,接着發送分組也是原來的兩倍,以此類推,當視窗值等于16(慢開始門限ssthresh初始值),然後我們開始采用“加法增大”的政策,即不在以2倍的方式增加,而是轉變為每次加1的方式.直到網絡擁塞。我們開始采用“擁塞避免”算法:讓新的慢開始門限值變為發生擁塞時候的值的一半,将擁塞視窗置為1,然後讓它再次重複,這時一瞬間會将網絡中的資料量大量降低。 

當cwnd<ssthresh時,使用慢開始算法。

當cwnd>ssthresh時,改用擁塞避免算法。

當接收方cwnd=ssthresh時,慢開始與擁塞避免算法任意。(既可使用慢開始算法,也可使用擁塞避免算法)

擁塞避免算法讓擁塞視窗緩慢增長,即每經過一個往返時間RTT就把發送方的擁塞視窗cwnd加1,而不是加倍。這樣擁塞視窗按線性規律緩慢增長。

無論是在慢開始階段還是在擁塞避免階段,隻要發送方判斷網絡出現擁塞(其根據就是沒有收到确認,雖然沒有收到确認可能是其他原因的分組丢失,但是因為