計(jì)算機(jī)網(wǎng)絡(luò):第16講 運(yùn)輸層_第1頁(yè)
計(jì)算機(jī)網(wǎng)絡(luò):第16講 運(yùn)輸層_第2頁(yè)
計(jì)算機(jī)網(wǎng)絡(luò):第16講 運(yùn)輸層_第3頁(yè)
計(jì)算機(jī)網(wǎng)絡(luò):第16講 運(yùn)輸層_第4頁(yè)
計(jì)算機(jī)網(wǎng)絡(luò):第16講 運(yùn)輸層_第5頁(yè)
已閱讀5頁(yè),還剩34頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

運(yùn)輸層(3)主講:

2/392025/12/22學(xué)習(xí)目標(biāo)了解TCP流量控制和擁塞控制的概念、基本原理和實(shí)現(xiàn)方法。重點(diǎn)理解擁塞控制的四種方法:慢開(kāi)始、擁塞避免、快重傳、快恢復(fù)。

3/392025/12/22目錄1TCP的流量控制2TCP擁塞控制4/392025/12/22一般說(shuō)來(lái),我們總是希望數(shù)據(jù)傳輸?shù)酶煲恍?。但如果發(fā)送方把數(shù)據(jù)發(fā)送得過(guò)快,接收方就可能來(lái)不及接收,這就會(huì)造成數(shù)據(jù)的丟失。Question1如何控制傳輸流量?5/392025/12/22TCP的流量控制流量控制(flowcontrol),控制發(fā)送方的發(fā)送速率不要太快,既要讓接收方來(lái)得及接收,也不要使網(wǎng)絡(luò)發(fā)生擁塞。TCP連接利用滑動(dòng)窗口機(jī)制實(shí)現(xiàn)流量控制。6/392025/12/22seq=1,DATAseq=201,DATAseq=401,DATAseq=301,DATAseq=101,DATAseq=201,DATAseq=501,DATAACK=1,ack=601,rwnd=0ACK=1,ack=501,rwnd=100AB允許A發(fā)送序號(hào)201至500共300字節(jié)A發(fā)送了序號(hào)101至200,還能發(fā)送200字節(jié)A發(fā)送了序號(hào)301至400,還能再發(fā)送100字節(jié)新數(shù)據(jù)A發(fā)送了序號(hào)1至100,還能發(fā)送300字節(jié)A發(fā)送了序號(hào)401至500,不能再發(fā)送新數(shù)據(jù)了A超時(shí)重傳舊的數(shù)據(jù),但不能發(fā)送新的數(shù)據(jù)允許A發(fā)送序號(hào)501至600共100字節(jié)A發(fā)送了序號(hào)501至600,不能再發(fā)送了不允許A再發(fā)送(到序號(hào)600為止的數(shù)據(jù)都收到了)丟失!流量控制舉例A向B發(fā)送數(shù)據(jù)。在連接建立時(shí),

B告訴A:“我的接收窗口rwnd=400(字節(jié))”。ACK=1,ack=201,rwnd=3007/392025/12/22seq=1,DATAseq=201,DATAseq=401,DATAseq=301,DATAseq=101,DATAseq=201,DATAseq=501,DATAACK=1,ack=601,rwnd=0ACK=1,ack=501,rwnd=100AB丟失!流量控制舉例A向B發(fā)送數(shù)據(jù)。在連接建立時(shí),

B告訴A:“我的接收窗口rwnd=400(字節(jié))”。ACK=1,ack=201,rwnd=300接收方主機(jī)進(jìn)行了三次流量控制Qestion?B在向A發(fā)送了零窗口不久,B的接收緩存又有了一些存儲(chǔ)空間,B向A發(fā)送rwnd=400,但這個(gè)報(bào)文段丟失了,于是A一直等B的非零窗口通知,而B(niǎo)也一直等A發(fā)送的數(shù)據(jù)。------死鎖如何解決相互等待的死鎖局面?8/392025/12/22持續(xù)計(jì)時(shí)器(persistencetimer)TCP為每一個(gè)連接設(shè)有一個(gè)持續(xù)計(jì)時(shí)器。只要TCP連接的一方收到對(duì)方的零窗口通知,就啟動(dòng)持續(xù)計(jì)時(shí)器。若持續(xù)計(jì)時(shí)器設(shè)置的時(shí)間到,就發(fā)送一個(gè)零窗口探測(cè)報(bào)文段(僅攜帶1字節(jié)的數(shù)據(jù)),而對(duì)方就在確認(rèn)這個(gè)探測(cè)報(bào)文段時(shí)給出了現(xiàn)在的窗口值。若窗口仍然是零,則收到這個(gè)報(bào)文段的一方就重新設(shè)置持續(xù)計(jì)時(shí)器。若窗口不是零,則死鎖的僵局就可以打破了。

TCP什么時(shí)候把緩存中的數(shù)據(jù)字節(jié)組成報(bào)文段發(fā)送出去呢?9/392025/12/22傳輸效率的考慮使用不同的機(jī)制控制發(fā)送TCP報(bào)文段的時(shí)機(jī):第一種機(jī)制是TCP維持一個(gè)變量,它等于最大報(bào)文段長(zhǎng)度MSS。只要緩存中存放的數(shù)據(jù)達(dá)到MSS字節(jié)時(shí),就組裝成一個(gè)TCP報(bào)文段發(fā)送出去。第二種機(jī)制是由發(fā)送方的應(yīng)用進(jìn)程指明要求發(fā)送報(bào)文段,即TCP支持的推送(push)操作。第三種機(jī)制是發(fā)送方的一個(gè)計(jì)時(shí)器期限到了,這時(shí)就把當(dāng)前已有的緩存數(shù)據(jù)裝入報(bào)文段(但長(zhǎng)度不能超過(guò)MSS)發(fā)送出去。10/392025/12/22傳輸效率的考慮如果再加上20字節(jié)的IP首部,那么發(fā)送一個(gè)字符線路上就需傳送四個(gè)IP數(shù)據(jù)報(bào),共

?字節(jié)。當(dāng)線路帶寬不富裕時(shí),這種傳送方法效率就不高。DATA(1字符+20(TCP首部))AB確認(rèn)(無(wú)數(shù)據(jù)發(fā)送,20(TCP首部))DATA(1字符+20(TCP首部))確認(rèn)(無(wú)數(shù)據(jù)發(fā)送,20(TCP首部))16211/392025/12/22Nagle算法當(dāng)數(shù)據(jù)是以一字節(jié)的方式進(jìn)入發(fā)送端,發(fā)送端第一次只發(fā)送一個(gè)字節(jié),其他字節(jié)存入緩存。當(dāng)收到第一個(gè)字節(jié)的確認(rèn)后,再發(fā)送緩存的其他數(shù)據(jù)。只有當(dāng)收到對(duì)前一個(gè)報(bào)文段的確認(rèn)后才繼續(xù)發(fā)送下面的報(bào)文段。當(dāng)數(shù)據(jù)到達(dá)較快或者網(wǎng)絡(luò)速度較慢時(shí),用這種方法可以明顯減少所用的網(wǎng)絡(luò)帶寬。Nagle還規(guī)定:當(dāng)緩存中的數(shù)據(jù)字節(jié)數(shù)達(dá)到發(fā)送窗口的1/2或接近最大報(bào)文段長(zhǎng)度MSS時(shí),立即將它們作為1個(gè)報(bào)文段發(fā)送。12/392025/12/22糊涂窗口綜合癥糊涂窗口綜合癥TCP接收方的緩存已滿,而應(yīng)用進(jìn)程一次只從接收緩存中讀取1字節(jié),然后發(fā)送窗口值為1的確認(rèn)。接下來(lái)發(fā)送發(fā)….長(zhǎng)此下去,網(wǎng)絡(luò)的效率很低。解決辦法:

讓接收方等待一段時(shí)間,使得接收緩存已有足夠空間容納一個(gè)最長(zhǎng)的報(bào)文段,或等到接收緩存已有一半空閑的空間,再發(fā)確認(rèn)。綜合:發(fā)送方不要發(fā)送太小的報(bào)文,接收方在窗口值很小時(shí)不要確認(rèn)。13/392025/12/22目錄1TCP的流量控制2TCP擁塞控制14/392025/12/22在某段時(shí)間內(nèi),若對(duì)網(wǎng)絡(luò)中某資源的需求超過(guò)了該資源所能提供的可用部分,網(wǎng)絡(luò)的性能就要變壞——產(chǎn)生擁塞。若網(wǎng)絡(luò)中有許多資源同時(shí)產(chǎn)生擁塞,網(wǎng)絡(luò)的性能就要明顯變壞,整個(gè)網(wǎng)絡(luò)的吞吐量將隨輸入負(fù)荷的增大而下降。Question2如何控制擁塞?對(duì)資源需求的總和>可用資源15/392025/12/22擁塞控制的一般原理只要任意增加一些資源,例如,把結(jié)點(diǎn)緩存的存儲(chǔ)空間擴(kuò)大,或把鏈路更換為速率更高的鏈路,或把結(jié)點(diǎn)處理機(jī)的運(yùn)算速度提高,就可解決網(wǎng)絡(luò)擁塞問(wèn)題嗎?Question316/392025/12/22擁塞輕度擁塞擁塞控制所起的作用提供的負(fù)載吞吐量理想的擁塞控制實(shí)際的擁塞控制0死鎖(吞吐量=0)無(wú)擁塞控制擁塞17/392025/12/22擁塞控制的一般原理因?yàn)閾砣刂剖且粋€(gè)動(dòng)態(tài)問(wèn)題,很難設(shè)計(jì)。網(wǎng)絡(luò)高速化,很容易出現(xiàn)緩存不夠大而造成分組的丟失。但分組的丟失是網(wǎng)絡(luò)發(fā)生擁塞的征兆而不是原因。應(yīng)需要特別引起重視的——在許多情況下,甚至正是擁塞控制本身成為引起網(wǎng)絡(luò)性能惡化甚至發(fā)生死鎖的原因。

18/392025/12/22擁塞控制的兩種模式開(kāi)環(huán)控制:在設(shè)計(jì)網(wǎng)絡(luò)時(shí)事先將有關(guān)發(fā)生擁塞的因素考慮周到,力求網(wǎng)絡(luò)在工作時(shí)不產(chǎn)生擁塞。

閉環(huán)控制:基于反饋環(huán)路的概念,具體過(guò)程:監(jiān)測(cè)網(wǎng)絡(luò)系統(tǒng)以便檢測(cè)到擁塞在何時(shí)、何處發(fā)生。將擁塞發(fā)生的信息傳送到可采取行動(dòng)的地方。調(diào)整網(wǎng)絡(luò)系統(tǒng)的運(yùn)行以解決出現(xiàn)的問(wèn)題。19/392025/12/22幾種擁塞控制方法慢開(kāi)始(slow-start)擁塞避免(congestionavoid)快重傳(fastretransmit)快恢復(fù)(fastrecovery)20/392025/12/22窗口機(jī)制發(fā)送方維持一個(gè)叫做擁塞窗口cwnd(congestionwindow)的狀態(tài)變量,大小取決于網(wǎng)絡(luò)的擁塞程度,并且動(dòng)態(tài)地變化。發(fā)送方的發(fā)送窗口等于擁塞窗口。若考慮接收方的接收能力,則:

swnd≤Min(cwnd,rwnd)

發(fā)送方控制擁塞窗口的原則網(wǎng)絡(luò)沒(méi)有出現(xiàn)擁塞,擁塞窗口就再增大一些,以便把更多的分組發(fā)送出去。網(wǎng)絡(luò)出現(xiàn)擁塞,擁塞窗口就減小一些,以減少注入到網(wǎng)絡(luò)中的分組數(shù)。Question:發(fā)送方如何知道網(wǎng)絡(luò)擁塞了?21/392025/12/221.慢開(kāi)始算法

在主機(jī)剛剛開(kāi)始發(fā)送報(bào)文段時(shí)可先設(shè)置擁塞窗口cwnd=1,即設(shè)置為一個(gè)最大報(bào)文段MSS的數(shù)值。在每收到一個(gè)對(duì)新的報(bào)文段的確認(rèn)后,將擁塞窗口加1,即增加一個(gè)MSS的數(shù)值。用這樣的方法逐步增大發(fā)送端的擁塞窗口cwnd,可以使分組注入到網(wǎng)絡(luò)的速率更加合理。由小到大逐漸增大擁塞窗口22/392025/12/22慢開(kāi)始算法:發(fā)送方每收到一個(gè)對(duì)新報(bào)文段的確認(rèn)(重傳的不算在內(nèi))就使cwnd加1。

發(fā)送方接收方發(fā)送M4~M7確認(rèn)M4~M7輪次3cwnd=1cwnd=2cwnd=4cwnd=8發(fā)送M8~M15…tt發(fā)送M1確認(rèn)M1輪次1發(fā)送M2~M3確認(rèn)M2~M3輪次223/392025/12/22傳輸輪次(transmissionround)使用慢開(kāi)始算法后,每經(jīng)過(guò)一個(gè)傳輸輪次,擁塞窗口cwnd就加倍。

一個(gè)傳輸輪次所經(jīng)歷的時(shí)間就是往返時(shí)間RTT。“傳輸輪次”更加強(qiáng)調(diào):把擁塞窗口cwnd所允許發(fā)送的報(bào)文段都連續(xù)發(fā)送出去,并收到了對(duì)已發(fā)送的最后一個(gè)字節(jié)的確認(rèn)。例如,擁塞窗口cwnd=4,這時(shí)的往返時(shí)間RTT就是發(fā)送方連續(xù)發(fā)送4個(gè)報(bào)文段,并收到這4個(gè)報(bào)文段的確認(rèn),總共經(jīng)歷的時(shí)間。24/392025/12/222.擁塞避免基本算法讓擁塞窗口cwnd緩慢增大,即每經(jīng)過(guò)一個(gè)往返時(shí)間RTT就把發(fā)送方的擁塞窗口cwnd加1,而不是加倍,使擁塞窗口cwnd按線性規(guī)律緩慢增長(zhǎng)(加法增大)。慢開(kāi)始和擁塞避免一般同時(shí)使用。25/392025/12/22設(shè)置慢開(kāi)始門(mén)限狀態(tài)變量慢開(kāi)始門(mén)限狀態(tài)變量ssthresh的用法如下:當(dāng)cwnd<ssthresh時(shí),使用慢開(kāi)始算法。當(dāng)cwnd>ssthresh時(shí),停止使用慢開(kāi)始算法而改用擁塞避免算法。當(dāng)cwnd=ssthresh時(shí),既可使用慢開(kāi)始算法,也可使用擁塞避免算法。26/392025/12/22當(dāng)網(wǎng)絡(luò)出現(xiàn)擁塞時(shí)無(wú)論在慢開(kāi)始階段還是在擁塞避免階段,只要發(fā)送方判斷網(wǎng)絡(luò)出現(xiàn)擁塞(根據(jù)有沒(méi)有按時(shí)收到確認(rèn)),就要把慢開(kāi)始門(mén)限變量ssthresh設(shè)置為出現(xiàn)擁塞時(shí)的發(fā)送方窗口值的一半(但不能小于2)(乘法減小)。然后把擁塞窗口cwnd重新設(shè)置為1,執(zhí)行慢開(kāi)始算法。這樣做的目的就是要迅速減少主機(jī)發(fā)送到網(wǎng)絡(luò)中的分組數(shù),使得發(fā)生擁塞的路由器有足夠時(shí)間把隊(duì)列中積壓的分組處理完畢。27/392025/12/22當(dāng)TCP連接進(jìn)行初始化時(shí),擁塞窗口置為1(圖中窗口單位為報(bào)文段)。慢開(kāi)始門(mén)限初始值設(shè)置為16個(gè)報(bào)文段,ssthresh=16。擁塞避免“加法增大”擁塞避免“加法增大”慢開(kāi)始慢開(kāi)始2216慢開(kāi)始和擁塞避免算法實(shí)例

“乘法減小”24681012141618200048122024擁塞窗口cwnd新的ssthresh值網(wǎng)絡(luò)擁塞指數(shù)規(guī)律增長(zhǎng)ssthresh初始值慢開(kāi)始傳輸輪次發(fā)送端每收到一個(gè)對(duì)新報(bào)文段的確認(rèn),就把發(fā)送端的擁塞窗口加1,因此擁塞窗口cwnd隨著傳輸輪次按指數(shù)規(guī)律增長(zhǎng)。更新后的ssthresh值變?yōu)?2(即發(fā)送窗口數(shù)值24的一半),擁塞窗口再重新設(shè)置為1,并執(zhí)行慢開(kāi)始算法。28/392025/12/22加法增大(additiveincrease)&

乘法減小(multiplicativedecrease)加法增大——執(zhí)行擁塞避免算法后,在收到對(duì)所有報(bào)文段的確認(rèn)后(即經(jīng)過(guò)一個(gè)往返時(shí)間),把擁塞窗口cwnd增加一個(gè)MSS大小,使擁塞窗口緩慢增大,以防止網(wǎng)絡(luò)過(guò)早出現(xiàn)擁塞。乘法減小——指不論在慢開(kāi)始階段還是擁塞避免階段,只要出現(xiàn)一次超時(shí)(即出現(xiàn)一次網(wǎng)絡(luò)擁塞),就把慢開(kāi)始門(mén)限值ssthresh設(shè)置為當(dāng)前的擁塞窗口值乘以0.5。當(dāng)網(wǎng)絡(luò)頻繁出現(xiàn)擁塞時(shí),ssthresh值就下降得很快,以大大減少注入到網(wǎng)絡(luò)中的分組數(shù)。29/392025/12/22需要強(qiáng)調(diào)“擁塞避免”并非指完全能夠避免了擁塞。利用以上的措施要完全避免網(wǎng)絡(luò)擁塞還是不可能的。“擁塞避免”是說(shuō)在擁塞避免階段把擁塞窗口控制為按線性規(guī)律增長(zhǎng),使網(wǎng)絡(luò)不容易出現(xiàn)擁塞。30/392025/12/223.快重傳基本算法快重傳算法要求接收方每收到一個(gè)失序的報(bào)文段后就立即發(fā)出重復(fù)確認(rèn)。這樣做可以讓發(fā)送方及早知道有報(bào)文段沒(méi)有到達(dá)接收方。發(fā)送方只要一連收到三個(gè)重復(fù)確認(rèn)就應(yīng)當(dāng)立即重傳對(duì)方尚未收到的報(bào)文段。快重傳并非取消重傳計(jì)時(shí)器,而是在某些情況下可更早地重傳丟失的報(bào)文段。31/392025/12/22發(fā)送方接收方立即重傳M3tt收到三個(gè)連續(xù)的對(duì)M2

的重復(fù)確認(rèn)立即重傳M3發(fā)送M1確認(rèn)M1確認(rèn)M2發(fā)送M2發(fā)送M3發(fā)送M4?丟失發(fā)送M5發(fā)送M6重復(fù)確認(rèn)M2重復(fù)確認(rèn)M2重復(fù)確認(rèn)M2發(fā)送M7快重傳舉例32/392025/12/224.快恢復(fù)算法

(1)當(dāng)發(fā)送端收到連續(xù)三個(gè)重復(fù)的確認(rèn)時(shí),就執(zhí)行“乘法減小”算法,把慢開(kāi)始門(mén)限ssthresh減半,但不執(zhí)行慢開(kāi)始算法。(2)將擁塞窗口cwnd設(shè)置為慢開(kāi)始門(mén)限ssthresh減半后的數(shù)值,然后開(kāi)始執(zhí)行擁塞避免算法(加法增大),使擁塞窗口緩慢地線性增大。(發(fā)送方認(rèn)為網(wǎng)絡(luò)很可能沒(méi)有發(fā)生擁塞)33/392025/12/22快重傳與快恢復(fù)242468101214161820220048121620傳輸輪次擁塞窗口cwnd收到3個(gè)重復(fù)的確認(rèn)執(zhí)行快重傳算法慢開(kāi)始“乘法減小”擁塞避免“加法增大”TCPReno版本TCPTahoe版本(已廢棄不用)ssthresh的初始值擁塞避免“加法增大”新的ssthresh值慢開(kāi)始快恢復(fù)34/392025/12/22發(fā)送方的發(fā)送窗口的

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論