1.慢開(kāi)始和擁塞避免
發(fā)送方維持一個(gè)叫做擁塞窗口(cwnd)的狀態(tài)變量苍蔬。隨著網(wǎng)絡(luò)的擁塞程度來(lái)動(dòng)態(tài)變化。發(fā)送方讓自己的發(fā)送窗口等于擁塞窗口其障。
原則:只要網(wǎng)絡(luò)沒(méi)有出現(xiàn)擁塞银室,則增大擁塞窗口,發(fā)送更多的分組励翼,如果出現(xiàn)擁塞就減小這個(gè)擁塞窗口蜈敢,來(lái)減少注入網(wǎng)絡(luò)中的分組。
如何確定出現(xiàn)擁塞汽抚?當(dāng)發(fā)送方?jīng)]有按時(shí)收到應(yīng)當(dāng)?shù)竭_(dá)的確認(rèn)報(bào)文抓狭,就可以猜想可能出現(xiàn)了擁塞。
慢開(kāi)始算法:首先將擁塞窗口設(shè)置為一個(gè)最大報(bào)文段(MSS)的數(shù)值造烁,在接受到最后一個(gè)確認(rèn)后否过,將擁塞窗口設(shè)置為之前的一倍,進(jìn)行成倍增長(zhǎng)惭蟋,但是為了防止擁塞窗口的增長(zhǎng)而引起網(wǎng)絡(luò)擁塞苗桂,還需要設(shè)置一個(gè)慢開(kāi)始門(mén)限(ssthresh)狀態(tài)變量:
if(cwnd<ssthresh) ? ? do 慢開(kāi)始算法
if(cwnd>ssthresh) ? ? do 擁塞避免算法
if(cwnd==ssthresh) ? do 慢開(kāi)始o(jì)r擁塞避免
擁塞避免算法是讓擁塞窗口進(jìn)行+1而不是加倍。
當(dāng)發(fā)送發(fā)判斷網(wǎng)絡(luò)出現(xiàn)擁塞的時(shí)候要將慢開(kāi)始門(mén)限設(shè)置為出現(xiàn)擁塞時(shí)擁塞窗口大小的一半告组,然后將擁塞窗口設(shè)置為1煤伟,重新執(zhí)行慢開(kāi)始算法。
2.快重傳和快恢復(fù)
比如在接收到數(shù)據(jù)M1,M2后接受到了M4中間丟失了M3便锨,所以接收端會(huì)給出M2的確認(rèn)围辙,若不是快重傳的話接受到M4的時(shí)候,接收端是什么事也不做放案,但是快重傳機(jī)制要求接受到M4的時(shí)候也要發(fā)送M2的確認(rèn)姚建,只要發(fā)送方連續(xù)接到3個(gè)M2的確認(rèn)則就可以確定M3丟失,便立即重傳M3吱殉,而不必等到計(jì)時(shí)器掸冤,這樣可以使得網(wǎng)絡(luò)的吞吐率提高20%。所以可以采用快恢復(fù)考婴,就是當(dāng)發(fā)送方接到3個(gè)確認(rèn)后贩虾,執(zhí)行乘法減小,將滿開(kāi)始的門(mén)限減半沥阱,但是接下來(lái)不需要執(zhí)行慢開(kāi)始算法,而是直接把sshresh的指直接給cwnd伊群,并開(kāi)始執(zhí)行避免擁塞算法考杉。
隨機(jī)早起檢測(cè)(RED ?Random Early Detection)網(wǎng)絡(luò)層的算法預(yù)期發(fā)生擁塞的前兆