本文主要說明TCP擁塞控制的四種主要算法。
組成TCP擁塞控制的四種算法包括:慢開始鳖宾,擁塞避免逆航,快重傳,快恢復拇惋, 發(fā)送方維持一個擁塞窗口(cwnd)抹剩,發(fā)送方控制擁塞窗口的原則是:只要網(wǎng)絡(luò)沒有出現(xiàn)擁塞,擁塞窗口就增大一些胡嘿,以便把更多的分組發(fā)送出去钳踊。但只要出現(xiàn)擁塞勿侯,擁塞窗口就要減小一些缴罗,以減少注入到網(wǎng)絡(luò)中的分組數(shù)瞒爬。
I、慢開始
當主機開始發(fā)送數(shù)據(jù)時侧但,如果立即把大量的數(shù)據(jù)字節(jié)注入到網(wǎng)絡(luò)中禀横,那么就有可能直接引入擁塞,因為現(xiàn)在不清楚網(wǎng)絡(luò)中的負載情況酿箭,所以要由小到大增大發(fā)送窗口趾娃。
慢開始實例:發(fā)送方先設(shè)置cwnd=1,發(fā)送第一個報文段M1妇蛀,接收方確認收到M1笤成,發(fā)送方收到確認后,將cwnd設(shè)為2纵诞,于是發(fā)送M2和M3培遵,接收方收到后發(fā)送對M2和M3的確認;這時發(fā)送方將cwnd設(shè)為4茁裙。
為了防止cwnd增大引起網(wǎng)絡(luò)擁塞节仿,還需要設(shè)置一個慢開始門限。當超過這個門限時執(zhí)行擁塞避免算法矾瘾。
慢開始總結(jié): 每經(jīng)過一個有效的傳輸輪次,擁塞窗口cwnd就加倍蛉迹,直到超過慢開始門限(ssthresh)放妈。這部分稱之為指數(shù)規(guī)律增長。
II珍策、擁塞避免
當cwnd超過慢開始門限時宅倒,執(zhí)行擁塞避免算法,其思路是讓擁塞窗口緩慢的增大蹭劈。每經(jīng)過一個有效的往返時間就增大1线召。
此外灶搜,無論是在慢開始階段還是在擁塞避免階段工窍,只要發(fā)送方判斷網(wǎng)絡(luò)出現(xiàn)擁塞(其根據(jù)是沒有按時收到確認ACK),就要把慢開始門限設(shè)置為出現(xiàn)擁塞時發(fā)送窗口的一半鹏溯,然后將擁塞窗口重新設(shè)置為1,執(zhí)行慢開始算法淹仑。
III丙挽、快重傳
要求接收方?jīng)]收到一個失序的報文段后就立即發(fā)出重復確認,目的是讓發(fā)送方及早知道有報文段沒有到達對方匀借。
快重傳實例: 如下圖颜阐,接收方收到M1和M2后都分別發(fā)出了確認信號。假定接收方?jīng)]有收到M3而收到了M4吓肋。顯然凳怨,根據(jù)累計確認機制, 接收方不能確認M4。 根據(jù)可靠傳輸原理肤舞,接收方可以什么都不做紫新,也可以在適當時機發(fā)送一次對M2的確認。
按照快重傳算法的要求李剖,接收方應迅速發(fā)送對M2的重復確認,這樣做可以讓發(fā)送方及早知道M3沒有到達接收方篙顺。發(fā)送方接著發(fā)送M5和M6偶芍。接收方收到后還要繼續(xù)發(fā)出對M2的重復確認。發(fā)送方只要收到連續(xù)的三個重復確認就應當立即重傳M3德玫,而不必繼續(xù)等待M3的重傳計時器到期腋寨。
IV、快恢復
為了配合快重傳化焕,還有快恢復算法:當發(fā)送方連續(xù)收到三個重復確認時萄窜,執(zhí)行乘法減小算法,將慢開始門限減半撒桨。這是為了預防網(wǎng)絡(luò)發(fā)生擁塞查刻。快恢復算法規(guī)定凤类,在這種情況下穗泵,不應該執(zhí)行慢開始算法(因為是由丟失產(chǎn)生,而不是擁塞)谜疤。
由于發(fā)送方現(xiàn)在認為網(wǎng)絡(luò)中很可能沒有擁塞佃延,而只是正常的丟失(因為如果發(fā)生嚴重的擁塞,就不會受到連續(xù)的重復確認)夷磕, 因此與慢開始不同在于履肃,不是將cwnd設(shè)置為1,而是把cwnd值設(shè)置為慢開始門限減半后的數(shù)值坐桩,然后開始執(zhí)行擁塞避免算法(加法增大)尺棋,使擁塞窗口緩慢的線性增大。
V绵跷、擁塞控制與流量控制的關(guān)系:
擁塞控制是防止過多的數(shù)據(jù)注入到網(wǎng)絡(luò)中膘螟,這樣可以使網(wǎng)絡(luò)中的路由器或鏈路不至于過載∧刖郑考慮的是全局性過程荆残;
而流量控制則是端到端通信量的控制。
【參考】
[1] 《計算機網(wǎng)絡(luò)》
歡迎轉(zhuǎn)載净当,轉(zhuǎn)載請注明出處wenmingxing TCP擁塞控制