传输层-TCP拥塞控制执行流程
1.擁塞控制和流量控制
所謂擁塞控制就是防止過多的數(shù)據(jù)注入到網(wǎng)絡(luò)中,這樣可以使網(wǎng)絡(luò)中的路由器或鏈路不致過載。擁塞控制是一個(gè)全局性的過程,涉及到所有主機(jī)、所有路由器以及與降低網(wǎng)絡(luò)傳輸性能有關(guān)的所有因素。
相反,流量控制往往是指點(diǎn)對(duì)點(diǎn)通信量的控制,是個(gè)端到端的問題(接收端控制發(fā)送端)。流量控制所要做的是抑制發(fā)送端發(fā)送數(shù)據(jù)的速率,以便使接收端來得及接收。
2.TCP的擁塞控制方法
TCP進(jìn)行擁塞控制算法有四種,即慢開始、擁塞避免、快重傳、快恢復(fù)。
發(fā)送方維持一個(gè)叫做擁塞窗口的狀態(tài)變量。擁塞窗口的大小取決于網(wǎng)絡(luò)的擁塞程度,并且動(dòng)態(tài)的變化。發(fā)送方讓自己的發(fā)送窗口等于擁塞窗口?! ?/p>
當(dāng)主機(jī)開始發(fā)送數(shù)據(jù)時(shí),把擁塞窗口置為1,每經(jīng)過一個(gè)傳輸輪次(報(bào)文的一次往返),擁塞窗口的大小就加倍。為了防止擁塞窗口增長(zhǎng)過大引起網(wǎng)絡(luò)擁塞,還需要設(shè)置一個(gè)慢開始門限狀態(tài)變量,當(dāng)擁塞窗口達(dá)到門限值時(shí)就開始執(zhí)行擁塞避免算法,即每經(jīng)過一個(gè)傳輸輪次,擁塞窗口就加1,而不是像慢開始階段加倍增長(zhǎng)。當(dāng)網(wǎng)絡(luò)出現(xiàn)超時(shí)時(shí),發(fā)送方判斷為網(wǎng)絡(luò)擁塞,于是就將門限值重置為當(dāng)前的擁塞窗口值的一半,同時(shí)重置擁塞窗口大小為1。進(jìn)入慢開始階段。
如果發(fā)生個(gè)別報(bào)文段丟失的情況,就要采用快重傳算法讓發(fā)送方盡早知道發(fā)生了個(gè)別報(bào)文段的丟失,快重傳要求接收方不要等待自己發(fā)送數(shù)據(jù)時(shí)才進(jìn)行捎帶確認(rèn),而是立即發(fā)送確認(rèn)。即使收到了失序的報(bào)文段也要立即發(fā)出對(duì)已收到的報(bào)文段的重復(fù)確認(rèn)。發(fā)送方只要一連收到三個(gè)重復(fù)確認(rèn),就知道接收方確實(shí)沒有收到某個(gè)報(bào)文段,因而立即進(jìn)行重傳。
發(fā)送方知道現(xiàn)在只是丟失了個(gè)別的報(bào)文段,于是不啟動(dòng)慢開始,而是執(zhí)行快恢復(fù)算法。這時(shí)發(fā)送方調(diào)整門限值,重置為當(dāng)前擁塞窗口的一半,同時(shí)重置擁塞窗口的大小為門限值,并開始執(zhí)行擁塞避免算法。
總結(jié)
以上是生活随笔為你收集整理的传输层-TCP拥塞控制执行流程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python pip源配置
- 下一篇: 解决Java版CKFinder无法显示缩