版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
計(jì)算機(jī)網(wǎng)絡(luò)2014年9月國(guó)防科技學(xué)院第3章運(yùn)輸層計(jì)算機(jī)網(wǎng)絡(luò)2應(yīng)用層:包含大量應(yīng)用普遍需要的協(xié)議,支持網(wǎng)絡(luò)應(yīng)用FTP,SMTP,HTTP運(yùn)輸層:
主機(jī)到主機(jī)數(shù)據(jù)傳輸,負(fù)責(zé)從應(yīng)用層接收消息,并傳輸應(yīng)用層的message,到達(dá)目的后將消息上交應(yīng)用。TCP,UDP網(wǎng)絡(luò)層:從源到目的地?cái)?shù)據(jù)報(bào)的選路IP,選路協(xié)議鏈路層:在鄰近網(wǎng)元之間傳輸數(shù)據(jù)PPP,以太網(wǎng)物理層:物理層負(fù)責(zé)將鏈路層幀中每一位(bit)從鏈路的一端傳輸?shù)搅硪欢?。?yīng)用層運(yùn)輸層網(wǎng)絡(luò)層鏈路層物理層TCP/IP五層模型3我們的目的:
理解運(yùn)輸層服務(wù)依據(jù)的原理:Multiplexing(多路復(fù)用)/demultiplexing(多路分解)可靠數(shù)據(jù)傳輸flowcontrol(流量控制)congestioncontrol(擁塞控制)學(xué)習(xí)因特網(wǎng)中的運(yùn)輸層協(xié)議:UDP:無(wú)連接傳輸TCP:面向連接傳輸TCP擁塞控制第3章:運(yùn)輸層43.1運(yùn)輸層服務(wù)3.2復(fù)用與分解3.3無(wú)連接傳輸:UDP3.4可靠數(shù)據(jù)傳輸?shù)脑?.5面向連接的傳輸:TCP3.6擁塞控制的原則3.7TCP擁塞控制5在運(yùn)行不同主機(jī)上應(yīng)用進(jìn)程之間提供邏輯通信運(yùn)輸協(xié)議運(yùn)行在端系統(tǒng)中發(fā)送方:將應(yīng)用報(bào)文(messages)劃分為報(bào)文段(segments),傳向網(wǎng)絡(luò)層接收方:將段重新裝配為報(bào)文,傳向應(yīng)用層應(yīng)用程序可供使用的運(yùn)輸協(xié)議不止一個(gè)因特網(wǎng):TCP和UDP應(yīng)用層運(yùn)輸層網(wǎng)絡(luò)層數(shù)據(jù)鏈路層物理層網(wǎng)絡(luò)層數(shù)據(jù)鏈路層物理層應(yīng)用層運(yùn)輸層網(wǎng)絡(luò)層數(shù)據(jù)鏈路層物理層網(wǎng)絡(luò)層數(shù)據(jù)鏈路層物理層網(wǎng)絡(luò)層數(shù)據(jù)鏈路層物理層網(wǎng)絡(luò)層數(shù)據(jù)鏈路層物理層網(wǎng)絡(luò)層數(shù)據(jù)鏈路層物理層邏輯端到端傳輸運(yùn)輸服務(wù)和協(xié)議動(dòng)畫(huà):多層通信實(shí)質(zhì)6網(wǎng)絡(luò)層:
主機(jī)間的邏輯通信運(yùn)輸層:
進(jìn)程間的邏輯通信依賴、強(qiáng)化網(wǎng)絡(luò)層服務(wù)家庭類比:12個(gè)孩子向12個(gè)孩子發(fā)信進(jìn)程=孩子應(yīng)用報(bào)文=信封中的信主機(jī)=家庭運(yùn)輸協(xié)議=Ann和Bill網(wǎng)絡(luò)層協(xié)議=郵政服務(wù)運(yùn)輸層vs.網(wǎng)絡(luò)層7可靠的、按序的交付(TCP)擁塞控制流量控制連接建立不可靠、無(wú)序的交付:UDP差錯(cuò)檢測(cè)不可用的服務(wù):時(shí)延保證帶寬保證應(yīng)用層運(yùn)輸層網(wǎng)絡(luò)層數(shù)據(jù)鏈路層物理層網(wǎng)絡(luò)層數(shù)據(jù)鏈路層物理層應(yīng)用層運(yùn)輸層網(wǎng)絡(luò)層數(shù)據(jù)鏈路層物理層網(wǎng)絡(luò)層數(shù)據(jù)鏈路層物理層網(wǎng)絡(luò)層數(shù)據(jù)鏈路層物理層網(wǎng)絡(luò)層數(shù)據(jù)鏈路層物理層網(wǎng)絡(luò)層數(shù)據(jù)鏈路層物理層邏輯端到端傳輸因特網(wǎng)運(yùn)輸層協(xié)議83.1運(yùn)輸層服務(wù)3.2復(fù)用與分解3.3無(wú)連接傳輸:UDP3.4可靠數(shù)據(jù)傳輸?shù)脑?.5面向連接的傳輸:TCP3.6擁塞控制的原則3.7TCP擁塞控制9應(yīng)用層運(yùn)輸層網(wǎng)絡(luò)層鏈路層物理層P1應(yīng)用層運(yùn)輸層網(wǎng)絡(luò)層鏈路層物理層應(yīng)用層運(yùn)輸層網(wǎng)絡(luò)層鏈路層物理層P2P3P4P1主機(jī)1主機(jī)2主機(jī)3=進(jìn)程=套接字將接收到的段交付給相應(yīng)的套接字(一路到多路,向上)在接收主機(jī)分解:從多個(gè)套接字收集數(shù)據(jù),用首部封裝數(shù)據(jù)(多路到一路,向下)在發(fā)送主機(jī)復(fù)用:多路復(fù)用/多路分解10主機(jī)接收IP數(shù)據(jù)報(bào)每個(gè)數(shù)據(jù)報(bào)有源IP地址,目的IP地址每個(gè)數(shù)據(jù)報(bào)承載1個(gè)運(yùn)輸層報(bào)文段每個(gè)段具有源、目的端口號(hào)
(回想:對(duì)特定應(yīng)用程序的周知端口號(hào))源端口#目的端口#32bits應(yīng)用數(shù)據(jù)(報(bào)文)其他首部字段TCP/UDP報(bào)文段格式分解工作過(guò)程主機(jī)使用IP地址&端口號(hào)將報(bào)文段導(dǎo)向到相應(yīng)的套接字11UDP套接字由二元組全面標(biāo)識(shí):(目的地IP地址,目的地端口號(hào))當(dāng)主機(jī)接收UDP段時(shí):在段中檢查目的地端口號(hào)將UDP段定向到具有該端口號(hào)的套接字具有不同源IP地址和/或源端口號(hào)的IP數(shù)據(jù)報(bào)(目的IP地址和端口號(hào)相同)定向到相同的套接字無(wú)連接多路復(fù)用與分解12客戶機(jī)IP:BP2客戶機(jī)IP:AP1P1P3服務(wù)器IP:CSP:6428DP:9157SP:9157DP:6428SP:6428DP:5775SP:5775DP:6428SP提供了“返回地址”無(wú)連接多路復(fù)用與分解(續(xù))=進(jìn)程=套接字13TCP套接字由四元組(4-tuple)標(biāo)識(shí):源IP地址源端口號(hào)目的IP地址目的端口號(hào)接收主機(jī)使用這四個(gè)值來(lái)將段定向到適當(dāng)?shù)奶捉幼址?wù)器主機(jī)可能支持許多并行的TCP套接字:每個(gè)套接字由其自己的四元組標(biāo)識(shí)Web服務(wù)器對(duì)每個(gè)連接的客戶機(jī)具有不同的套接字非持久HTTP將為每個(gè)請(qǐng)求具有不同的套接字面向連接多路復(fù)用與分解14客戶機(jī)IP:BP1客戶機(jī)IP:AP1P2P4服務(wù)器IP:CSP:9157DP:80SP:9157DP:80P5P6P3D-IP:CS-IP:AD-IP:CS-IP:BSP:5775DP:80D-IP:CS-IP:B面向連接多路復(fù)用與分解(續(xù))=進(jìn)程=套接字15客戶機(jī)IP:BP1客戶機(jī)IP:AP1P2服務(wù)器IP:CSP:9157DP:80SP:9157DP:80P4P3D-IP:CS-IP:AD-IP:CS-IP:BSP:5775DP:80D-IP:CS-IP:B面向連接分解:多線程Web服務(wù)器=進(jìn)程=套接字163.1運(yùn)輸層服務(wù)3.2復(fù)用與分解3.3無(wú)連接傳輸:UDP3.4可靠數(shù)據(jù)傳輸?shù)脑?.5面向連接的傳輸:TCP3.6擁塞控制的原則3.7TCP擁塞控制17“盡力而為”服務(wù),UDP段可能:丟包對(duì)應(yīng)用程序交付失序無(wú)連接在UDP發(fā)送方和接收方之間無(wú)握手每個(gè)UDP段的處理獨(dú)立于其他段為何要有UDP協(xié)議?無(wú)連接創(chuàng)建(它將增加時(shí)延)簡(jiǎn)單:在發(fā)送方、接收方無(wú)連接狀態(tài)段首部小無(wú)擁塞控制:UDP能夠盡可能快地傳輸
UDP:用戶數(shù)據(jù)報(bào)協(xié)議18常用于流媒體應(yīng)用程序丟包容忍速率敏感其他UDP應(yīng)用DNSSNMP經(jīng)UDP的可靠傳輸:在應(yīng)用層增加可靠性應(yīng)用程序特定的差錯(cuò)恢復(fù)!源端口#目的端口#32bits應(yīng)用數(shù)據(jù)(報(bào)文)UDP段格式長(zhǎng)度檢查和UDP段的長(zhǎng)度,包括首部,以字節(jié)計(jì)checksum:校驗(yàn)和,檢查和
UDP報(bào)文段結(jié)構(gòu)19發(fā)送方:將段內(nèi)容處理為16比特整數(shù)序列檢查和:段內(nèi)容的加法(反碼和)發(fā)送方將檢查和放入U(xiǎn)DP檢查和字段接收方:計(jì)算接收的段的檢查和核對(duì)計(jì)算的檢查和是否等于檢查和字段的值:NO–
檢測(cè)到差錯(cuò)YES–
無(wú)差錯(cuò)檢測(cè)到。雖然如此,還可能有差錯(cuò)嗎?目的:
在傳輸?shù)亩沃袡z測(cè)“差錯(cuò)”(如比特翻轉(zhuǎn))
UDP檢查和20注意當(dāng)數(shù)字作加法時(shí),最高位進(jìn)比特位的進(jìn)位需要加到結(jié)果中例子:兩個(gè)16-bit整數(shù)相加1111001100110011011101010101010101110111011101110111101110111011110010100010001000011回卷和檢查和檢查和例子計(jì)算步驟:
求和,回卷,求反213.1運(yùn)輸層服務(wù)3.2復(fù)用與分解3.3無(wú)連接傳輸:UDP3.4可靠數(shù)據(jù)傳輸?shù)脑?.5面向連接的傳輸3.6擁塞控制的原則3.7TCP擁塞控制22在應(yīng)用層、運(yùn)輸層、數(shù)據(jù)鏈路層的重要性網(wǎng)絡(luò)中需解決的最重要的10個(gè)問(wèn)題之一!不可靠信道的特點(diǎn)決定了可靠數(shù)據(jù)傳輸協(xié)議的復(fù)雜性可靠數(shù)據(jù)傳輸?shù)脑?3發(fā)送側(cè)接收側(cè)rdt_send():
calledfromabove,(e.g.,byapp.).Passeddatatodelivertoreceiverupperlayerudt_send():
calledbyrdt,totransferpacketoverunreliablechanneltoreceiverrdt_rcv():
calledwhenpacketarrivesonrcv-sideofchanneldeliver_data():
calledbyrdttodeliverdatatoupper可靠數(shù)據(jù)傳輸:描述函數(shù)熟悉24我們將:逐漸遞增地研究可靠數(shù)據(jù)傳輸協(xié)議(rdt)的發(fā)送方和接收方僅考慮單向數(shù)據(jù)傳輸?shù)刂菩畔⒃趦蓚€(gè)方向流動(dòng)!使用有限狀態(tài)機(jī)(FSM)來(lái)定義發(fā)送方和接收方狀態(tài)1狀態(tài)2引起狀態(tài)變遷的事件狀態(tài)變遷所采取的行動(dòng)狀態(tài):
當(dāng)位于這個(gè)“狀態(tài)時(shí)”,下個(gè)狀態(tài)惟一地由下個(gè)事件決定事件動(dòng)作事件^有限狀態(tài)機(jī)描述方法253.1運(yùn)輸層服務(wù)3.2復(fù)用與分解3.3無(wú)連接傳輸:UDP3.4可靠數(shù)據(jù)傳輸?shù)脑韗dt1.0,rdt2.0,rdt3.0協(xié)議3.5面向連接的傳輸3.6擁塞控制的原則3.7TCP擁塞控制26底層信道完全可靠無(wú)比特差錯(cuò)無(wú)分組丟失發(fā)送方、接收方具有各自的FSM:發(fā)送方將數(shù)據(jù)發(fā)向底層信道接收方從底層信道讀取數(shù)據(jù)Waitforcallfromabovepacket=make_pkt(data)udt_send(packet)rdt_send(data)extract(packet,data)deliver_data(data)Waitforcallfrombelowrdt_rcv(packet)發(fā)送方接收方
rdt1.0:完全可靠信道上的可靠數(shù)據(jù)傳輸27
Rdt2.0:具有比特差錯(cuò)的信道具有比特差錯(cuò)的底層信道有比特差錯(cuò)無(wú)分組丟失數(shù)據(jù)出錯(cuò)后處理方式檢錯(cuò)重傳rdt2.0新增加機(jī)制(與rdt1.0比較)檢錯(cuò)反饋:ACK,NAK重傳28等待來(lái)自上面的調(diào)用snkpkt=make_pkt(data,checksum)udt_send(sndpkt)extract(rcvpkt,data)deliver_data(data)udt_send(ACK)rdt_rcv(rcvpkt)&&
notcorrupt(rcvpkt)rdt_rcv(rcvpkt)&&isACK(rcvpkt)udt_send(sndpkt)rdt_rcv(rcvpkt)&&
isNAK(rcvpkt)udt_send(NAK)rdt_rcv(rcvpkt)&&
corrupt(rcvpkt)等待ACK或NAK等待來(lái)自下面的調(diào)用發(fā)送方接收方rdt_send(data)L發(fā)送方發(fā)出1個(gè)分組,等待接收方響應(yīng)后再繼續(xù)發(fā)送。(類似rdt2.0)停等協(xié)議
rdt2.0:FSM描述29等待來(lái)自上面的調(diào)用snkpkt=make_pkt(data,checksum)udt_send(sndpkt)extract(rcvpkt,data)deliver_data(data)udt_send(ACK)rdt_rcv(rcvpkt)&&
notcorrupt(rcvpkt)rdt_rcv(rcvpkt)&&isACK(rcvpkt)udt_send(sndpkt)rdt_rcv(rcvpkt)&&
isNAK(rcvpkt)udt_send(NAK)rdt_rcv(rcvpkt)&&
corrupt(rcvpkt)等待ACK或NAK等待來(lái)自下面的調(diào)用rdt_send(data)L
rdt2.0:無(wú)差錯(cuò)時(shí)的操作30等待來(lái)自上面的調(diào)用snkpkt=make_pkt(data,checksum)udt_send(sndpkt)extract(rcvpkt,data)deliver_data(data)udt_send(ACK)rdt_rcv(rcvpkt)&&
notcorrupt(rcvpkt)rdt_rcv(rcvpkt)&&isACK(rcvpkt)udt_send(sndpkt)rdt_rcv(rcvpkt)&&
isNAK(rcvpkt)udt_send(NAK)rdt_rcv(rcvpkt)&&
corrupt(rcvpkt)等待ACK或NAK等待來(lái)自下面的調(diào)用rdt_send(data)L
rdt2.0:有差錯(cuò)時(shí)的情況31如果ACK/NAK受損,將會(huì)出現(xiàn)何種情況?發(fā)送方不知道在接收方會(huì)發(fā)生什么情況!不能只是重傳:可能導(dǎo)致重復(fù)(duplicate)處理重復(fù)(序號(hào)機(jī)制):發(fā)送方對(duì)每個(gè)分組增加序列號(hào)如果ACK/NAK受損,發(fā)送方重傳當(dāng)前的分組接收方丟棄(不再向上交付)重復(fù)的分組
rdt2.0有重大的缺陷!32等待來(lái)自上面的調(diào)用0sndpkt=make_pkt(0,data,checksum)udt_send(sndpkt)rdt_send(data)等待ACK或NAK0udt_send(sndpkt)rdt_rcv(rcvpkt)&&(corrupt(rcvpkt)||isNAK(rcvpkt))sndpkt=make_pkt(1,data,checksum)udt_send(sndpkt)rdt_send(data)rdt_rcv(rcvpkt)&¬corrupt(rcvpkt)&&isACK(rcvpkt)udt_send(sndpkt)rdt_rcv(rcvpkt)&&(corrupt(rcvpkt)||isNAK(rcvpkt))rdt_rcv(rcvpkt)&¬corrupt(rcvpkt)&&isACK(rcvpkt)
等待來(lái)自上面的調(diào)用1等待ACK或NAK1LL
rdt2.1:發(fā)送方,處理受損的ACK/NAK33等待來(lái)自下面的調(diào)用0sndpkt=make_pkt(NAK,chksum)udt_send(sndpkt)rdt_rcv(rcvpkt)&¬corrupt(rcvpkt)&&has_seq0(rcvpkt)rdt_rcv(rcvpkt)&¬corrupt(rcvpkt)&&has_seq1(rcvpkt)
extract(rcvpkt,data)deliver_data(data)sndpkt=make_pkt(ACK,chksum)udt_send(sndpkt)等待來(lái)自上面的調(diào)用1rdt_rcv(rcvpkt)&¬corrupt(rcvpkt)&&has_seq0(rcvpkt)extract(rcvpkt,data)deliver_data(data)sndpkt=make_pkt(ACK,chksum)udt_send(sndpkt)rdt_rcv(rcvpkt)&&(corrupt(rcvpkt)sndpkt=make_pkt(ACK,chksum)udt_send(sndpkt)rdt_rcv(rcvpkt)&¬corrupt(rcvpkt)&&has_seq1(rcvpkt)rdt_rcv(rcvpkt)&&(corrupt(rcvpkt)sndpkt=make_pkt(ACK,chksum)udt_send(sndpkt)sndpkt=make_pkt(NAK,chksum)udt_send(sndpkt)
rdt2.1:接收方,處理受損的ACK/NAK34發(fā)送方:序號(hào)seq#加入分組中兩個(gè)序號(hào)seq.#’s(0,1)將夠用.(為什么?)必須檢查是否收到的ACK/NAK受損狀態(tài)增加一倍狀態(tài)必須“記住”是否“當(dāng)前的”分組具有0或1序號(hào)接收方:必須檢查是否接收到的分組是冗余的狀態(tài)指示是否0或1是所期待的分組序號(hào)seq#注意:接收方不能知道是否它的最后的ACK/NAK在發(fā)送方已經(jīng)接收OK
rdt2.1:討論35與rdt2.1一樣的功能,僅使用ACK代替NAK,接收方對(duì)最后正確接收的分組發(fā)送ACK接收方必須明確地包括被確認(rèn)分組的序號(hào)在發(fā)送方重復(fù)的ACK導(dǎo)致如同NAK相同的動(dòng)作:重傳當(dāng)前分組
rdt2.2:一種無(wú)NAK的協(xié)議36等待來(lái)自上面的調(diào)用0sndpkt=make_pkt(0,data,checksum)udt_send(sndpkt)rdt_send(data)udt_send(sndpkt)rdt_rcv(rcvpkt)&&(corrupt(rcvpkt)||
isACK(rcvpkt,1))rdt_rcv(rcvpkt)&¬corrupt(rcvpkt)&&isACK(rcvpkt,0)
等待ACK0發(fā)送方FSM片段等待來(lái)自下面的調(diào)用0rdt_rcv(rcvpkt)&¬corrupt(rcvpkt)&&has_seq1(rcvpkt)extract(rcvpkt,data)deliver_data(data)sndpkt=make_pkt(ACK1,chksum)udt_send(sndpkt)rdt_rcv(rcvpkt)&&(corrupt(rcvpkt)||
has_seq1(rcvpkt))udt_send(sndpkt)接收方FSM片段L
rdt2.2:發(fā)送方,接收方片段37
rdt3.0:具有差錯(cuò)和丟包的信道具有差錯(cuò)和丟包的底層信道有比特差錯(cuò)有分組丟失現(xiàn)有機(jī)制(檢錯(cuò)、反饋、重傳、序號(hào))還不夠增加定時(shí)機(jī)制:發(fā)送方等待ACK一段“合理的”時(shí)間如在這段時(shí)間沒(méi)有收到ACK則重傳如果分組(或ACK)只是延遲(沒(méi)有丟失),重傳將是冗余的,但序號(hào)的使用已經(jīng)處理了該情況38sndpkt=make_pkt(0,data,checksum)udt_send(sndpkt)start_timerrdt_send(data)等待ACK0rdt_rcv(rcvpkt)&&(corrupt(rcvpkt)||isACK(rcvpkt,1))等待來(lái)自上面的調(diào)用1sndpkt=make_pkt(1,data,checksum)udt_send(sndpkt)start_timerrdt_send(data)rdt_rcv(rcvpkt)&¬corrupt(rcvpkt)&&isACK(rcvpkt,0)
rdt_rcv(rcvpkt)&&(corrupt(rcvpkt)||isACK(rcvpkt,0))rdt_rcv(rcvpkt)&¬corrupt(rcvpkt)&&isACK(rcvpkt,1)
stop_timerstop_timerudt_send(sndpkt)start_timertimeoutudt_send(sndpkt)start_timertimeoutrdt_rcv(rcvpkt)等待來(lái)自上面的調(diào)用0等待ACK1Lrdt_rcv(rcvpkt)LLL
rdt3.0發(fā)送方39無(wú)丟包時(shí)的運(yùn)行分組丟失發(fā)送方發(fā)送方接收方接收方
rdt3.0運(yùn)行情況40ACK丟失過(guò)早超時(shí)發(fā)送方發(fā)送方接收方接收方
rdt3.0運(yùn)行情況41rdt3.0能夠工作,但性能不太好例子:1Gbps鏈路,15ms端到端傳播時(shí)延,1KB分組:Ttransmit=8kb/pkt10**9b/sec=8microsecUsender:利用率
–
發(fā)送方用于發(fā)送時(shí)間的比率每30msec1KB分組->經(jīng)1Gbps
鏈路有33kB/sec吞吐量網(wǎng)絡(luò)協(xié)議限制了物理資源的使用!L(packetlengthinbits)R(transmissionrate,bps)=
rdt3.0的性能42傳輸分組的第一個(gè)比特,t=0發(fā)送方接收方RTT
傳輸分組的最后一個(gè)比特,t=L/R分組第一個(gè)比特到達(dá)傳輸最后一個(gè)比特到達(dá),發(fā)送ACKACK到達(dá),發(fā)送下一個(gè)分組,t=RTT+L/R
rdt3.0:停等協(xié)議的運(yùn)行43流水線:發(fā)送方允許發(fā)送多個(gè)、“傳輸中的”,還沒(méi)有應(yīng)答的報(bào)文段序號(hào)的范圍必須增加發(fā)送方和/或接收方設(shè)有緩沖流水線協(xié)議的兩種形式:
回退N幀法(Go-Back-N),選擇性重傳(SR),流水線協(xié)議44傳輸?shù)谝粋€(gè)分組比特,t=0發(fā)送者接收者RTT傳輸最后一個(gè)比特,t=L/R第一個(gè)分組比特到達(dá)分組最后一個(gè)比特到達(dá),發(fā)送ACKACK到達(dá),發(fā)送下一個(gè)分組,t=RTT+L/R第二個(gè)分組最后比特到達(dá),發(fā)送ACK第三個(gè)分組最后比特到達(dá),發(fā)送ACK利用率增加3倍!流水線協(xié)議:增加利用率45滑動(dòng)窗口協(xié)議Go-Back-N和選擇重傳都是滑動(dòng)窗口協(xié)議發(fā)送方和接收方都具有一定容量的緩沖區(qū)(即窗口),允許發(fā)送站連續(xù)發(fā)送多個(gè)幀而不需要等待應(yīng)答發(fā)送窗口就是發(fā)送端允許連續(xù)發(fā)送的幀的序號(hào)表,發(fā)送端可以不等待應(yīng)答而連續(xù)發(fā)送的最大幀數(shù)稱為發(fā)送窗口的尺寸接收窗口是接收方允許接收的幀的序號(hào)表,凡落在接收窗口內(nèi)的幀,接收方都必須處理,落在接收窗口外的幀被丟棄。接收方每次允許接收的幀數(shù)稱為接收窗口的尺寸46特征:累計(jì)ACK,全部重傳ACK(n):確認(rèn)所有的(包括序號(hào)n)的分組-“累計(jì)ACK”若超時(shí),重傳窗口中的未被確認(rèn)的第一個(gè)分組n及所有更高序號(hào)的分組
Go-Back-N發(fā)送窗口尺寸為N;接收窗口尺寸為1。1234567891011……發(fā)送窗口接收窗口1234567891011……簡(jiǎn)單來(lái)說(shuō):位于發(fā)送窗口內(nèi)的分組才允許被發(fā)送,位于接收窗口內(nèi)的分組才能被接收,關(guān)鍵是窗口如何滑動(dòng)。47
Go-Back-N正常傳輸時(shí)(示意)動(dòng)畫(huà)48
Go-Back-N丟失幀時(shí)(示意)49
Go-Back-N理解累計(jì)ACK和回退N個(gè)重傳發(fā)送方發(fā)送窗口滑動(dòng)的條件:收到1個(gè)確認(rèn)分組超時(shí)重傳時(shí),回退N個(gè)重傳,通常重傳多個(gè)分組接收方接收窗口滑動(dòng)的條件:收到期望序號(hào)的分組累計(jì)ACKs:s為期望收到的下一分組序號(hào)對(duì)失序分組的處理:丟棄,重發(fā)(已按序接收分組的)ACKGo-Back-N不足:(效率明顯高于停等協(xié)議)但仍有不必要重傳的問(wèn)題50發(fā)送方接收方
GBN例子(書(shū))51特征:獨(dú)立ACK,重傳單個(gè)分組獨(dú)立ACK:對(duì)每個(gè)分組使用單獨(dú)的確認(rèn)需N個(gè)定時(shí)器,若某個(gè)分組超時(shí),則重傳該分組接收窗口為N,對(duì)非按序到達(dá)的分組進(jìn)行緩存選擇重傳SR發(fā)送窗口尺寸為N;接收窗口尺寸為N。1234567891011……發(fā)送窗口接收窗口1234567891011……52選擇重傳的操作53選擇重傳的理解理解單獨(dú)ACK和單個(gè)分組重傳發(fā)送方發(fā)送窗口滑動(dòng)的條件:收到最低位置分組的確認(rèn)超時(shí)重傳時(shí),僅重傳超時(shí)的單個(gè)分組接收方接收窗口滑動(dòng)的條件:收到最低位置的分組單獨(dú)ACK對(duì)失序分組的處理:接收窗口內(nèi)緩存,發(fā)對(duì)應(yīng)ACK;接收窗口外丟棄54例子:序號(hào):0,1,2,3窗口長(zhǎng)度=3接收方:在(a)和(b)兩種情況下接收方?jīng)]有發(fā)現(xiàn)差別!在(a)中不正確地將新的冗余的當(dāng)為新的,而在(b)中不正確地將新的當(dāng)作冗余的問(wèn)題:
序號(hào)長(zhǎng)度與窗口長(zhǎng)度有什么關(guān)系?回答:窗口長(zhǎng)度小于等于序號(hào)空間的一半選擇重傳:困難的問(wèn)題55機(jī)制用途和說(shuō)明檢驗(yàn)和用于檢測(cè)在一個(gè)傳輸分組中的比特錯(cuò)誤。定時(shí)器用于檢測(cè)超時(shí)/重傳一個(gè)分組,可能因?yàn)樵摲纸M(或其ACK)在信道中丟失了。由于當(dāng)一個(gè)分組被時(shí)延但未丟失(過(guò)早超時(shí)),或當(dāng)一個(gè)分組已被接收方收到但從接收方到發(fā)送方的ACK丟失時(shí),可能產(chǎn)生超時(shí)事件,所以接收方可能會(huì)收到一個(gè)分組的多個(gè)冗余拷貝。序號(hào)用于為從發(fā)送方流向接收方的數(shù)據(jù)分組按順序編號(hào)。所接收分組的序號(hào)間的空隙可使該接收方檢測(cè)出丟失的分組。具有相同序號(hào)的分組可使接收方檢測(cè)出一個(gè)分組的冗余拷貝。確認(rèn)接收方用于告訴發(fā)送方一個(gè)分組或一組分組已被正確地接收到了。確認(rèn)報(bào)文通常攜帶著被確認(rèn)的分組或多個(gè)分組的序號(hào)。確認(rèn)可以是逐個(gè)的或累積的,這取決于協(xié)議。否定確認(rèn)接收方用于告訴發(fā)送方某個(gè)分組未被正確地接收。否定確認(rèn)報(bào)文通常攜帶著未被正確接收的分組的序號(hào)。窗口、流水線發(fā)送方也許被限制僅發(fā)送那些序號(hào)落在一個(gè)指定范圍內(nèi)的分組。通過(guò)允許一次發(fā)送多個(gè)分組但未被確認(rèn),發(fā)送方的利用率可在停等操作模式的基礎(chǔ)上得到增加。我們很快將會(huì)看到,窗口長(zhǎng)度可根據(jù)接收方接收和緩存報(bào)文的能力或網(wǎng)絡(luò)中的擁塞程度,或兩者情況來(lái)進(jìn)行設(shè)置??煽繑?shù)據(jù)傳輸機(jī)制及用途總結(jié)563.1運(yùn)輸層服務(wù)3.2復(fù)用與分解3.3無(wú)連接傳輸:UDP3.4可靠數(shù)據(jù)傳輸?shù)脑?.5面向連接的傳輸:TCP3.6擁塞控制的原則3.7TCP擁塞控制57RobertE.KahnVintonG.Cerf羅伯特·卡恩溫頓·瑟夫
2004年圖靈獎(jiǎng)TCP/IP協(xié)議發(fā)明者58全雙工數(shù)據(jù):同一連接上的雙向數(shù)據(jù)流MSS:最大報(bào)文段長(zhǎng)度MTU:最大傳輸單元面向連接:
在進(jìn)行數(shù)據(jù)交換前,初始化發(fā)送方與接收方狀態(tài),進(jìn)行握手(交換控制信息),流量控制:發(fā)送方不能淹沒(méi)接收方擁塞控制:抑止發(fā)送方速率來(lái)防止過(guò)分占用網(wǎng)絡(luò)資源點(diǎn)到點(diǎn):一個(gè)發(fā)送方,一個(gè)接收方連接狀態(tài)與端系統(tǒng)有關(guān),不為路由器所知
可靠、有序的字節(jié)流流水線:TCP擁塞和流量控制設(shè)置滑動(dòng)窗口協(xié)議發(fā)送和接收緩沖區(qū)
TCP概述59源端口#目的端口#32bits應(yīng)用層數(shù)據(jù)(變長(zhǎng))序號(hào)確認(rèn)號(hào)接收窗口緊急數(shù)據(jù)指針檢查和FSRPAU首部長(zhǎng)度未用選項(xiàng)(變長(zhǎng))URG:緊急數(shù)據(jù)(一般不用)ACK:ACK序號(hào)有效PSH:立即提交數(shù)據(jù)(一般不用)RST,SYN,FIN:連接建立(建立和拆連)接收方允許的字節(jié)數(shù)對(duì)數(shù)據(jù)字節(jié)計(jì)數(shù)(并非對(duì)報(bào)文段計(jì)數(shù)!)因特網(wǎng)檢查和(同UDP一樣)
TCP報(bào)文段結(jié)構(gòu)60序號(hào):報(bào)文段中第1個(gè)數(shù)據(jù)字節(jié)在字節(jié)流中的位置編號(hào)確認(rèn)號(hào):期望從對(duì)方收到下一個(gè)字節(jié)的序號(hào)累計(jì)應(yīng)答主機(jī)A主機(jī)BSeq=42,ACK=79,data=‘C’Seq=79,ACK=43,data=‘C’Seq=43,ACK=80用戶鍵入‘C’主機(jī)對(duì)接收到的‘C’回顯給出確認(rèn)主機(jī)對(duì)收到的‘C’給出確認(rèn),
回顯‘C’時(shí)間簡(jiǎn)單的telnet情況捎帶確認(rèn)
TCP序號(hào)和確認(rèn)號(hào)61問(wèn)題:如何設(shè)置TCP超時(shí)值?應(yīng)大于RTT但RTT是變化的太短:過(guò)早超時(shí)不必要的重傳太長(zhǎng):對(duì)報(bào)文段的丟失響應(yīng)太慢問(wèn)題:如何估計(jì)RTT?SampleRTT:
從發(fā)送報(bào)文段到接收到ACK的測(cè)量時(shí)間忽略重傳SampleRTT會(huì)變化,希望估計(jì)的RTT“較平滑”平均最近的測(cè)量值,并不僅僅是當(dāng)前SampleRTT
TCP往返時(shí)延(RTT)的估計(jì)與超時(shí)62EstimatedRTT=(1-)*EstimatedRTT+*SampleRTT指數(shù)加權(quán)移動(dòng)平均(Exponentialweightedmovingaverage)過(guò)去的樣本指數(shù)級(jí)衰減來(lái)產(chǎn)生影響典型值:=0.125
TCP往返時(shí)延估計(jì)與超時(shí)(續(xù))63
RTT估計(jì)的例子64設(shè)置超時(shí)間隔EstimtedRTT
加“安全余量”EstimatedRTT大變化->更大的安全余量首先估算EstimatedRTT與SampleRTT之間差值有多大:
TimeoutInterval=EstimatedRTT+4*DevRTTDevRTT=(1-)*DevRTT+
*|SampleRTT-EstimatedRTT|(典型地,=0.25)
然后估算超時(shí)值:
TCP往返時(shí)延估計(jì)與超時(shí)(續(xù))65TCP在IP不可靠服務(wù)的基礎(chǔ)上創(chuàng)建可靠數(shù)據(jù)傳輸服務(wù)流水線發(fā)送報(bào)文段累計(jì)確認(rèn)TCP使用單個(gè)重傳計(jì)時(shí)器重傳被下列事件觸發(fā):超時(shí)事件重復(fù)ACK
TCP可靠數(shù)據(jù)傳輸66TCP可靠傳輸屬于滑動(dòng)窗口方法發(fā)送方收到累計(jì)ACK,窗口向又滑動(dòng)(1個(gè)或多個(gè)報(bào)文段)單個(gè)重傳計(jì)時(shí)器,超時(shí)僅則重傳導(dǎo)致超時(shí)的報(bào)文段快速重傳:冗余ACK
接收方對(duì)收到的報(bào)文段進(jìn)行緩存收到任何報(bào)文段時(shí),均發(fā)出正確的累計(jì)確認(rèn)
TCP可靠數(shù)據(jù)傳輸67主機(jī)ASeq=100,20bytesdataACK=100時(shí)間過(guò)早超時(shí)的情況主機(jī)BSeq=92,8bytesdataACK=120Seq=92,8bytesdataSeq=92超時(shí)ACK=120主機(jī)ASeq=92,8bytesdataACK=100loss超時(shí)丟失確認(rèn)的情況主機(jī)BXSeq=92,8bytesdataACK=100時(shí)間Seq=92超時(shí)SendBase=100SendBase=120SendBase=120Sendbase=100
TCP:重傳的情況68主機(jī)ASeq=92,8bytesdataACK=100丟包超時(shí)累計(jì)確認(rèn)情況主機(jī)BXSeq=100,20bytesdataACK=120時(shí)間SendBase=120
TCP重傳情況(續(xù))69超時(shí)間隔常常相對(duì)較長(zhǎng):重傳丟失報(bào)文段以前有長(zhǎng)時(shí)延通過(guò)冗余ACK,檢測(cè)丟失的報(bào)文段發(fā)送方經(jīng)常一個(gè)接一個(gè)的發(fā)送報(bào)文段如果報(bào)文段丟失,將會(huì)收到很多重復(fù)ACK如果對(duì)相同數(shù)據(jù),發(fā)送方收到3個(gè)ACK,假定被確認(rèn)的報(bào)文段以后的報(bào)文段丟失了:快速重傳:
在定時(shí)器超時(shí)之前重傳快速重傳70TCP連接的接收方有1個(gè)接收緩沖區(qū):匹配速度服務(wù):發(fā)送速率需要匹配接收方應(yīng)用程序的提取速率應(yīng)用進(jìn)程可能從接收緩沖區(qū)讀數(shù)據(jù)緩慢發(fā)送方發(fā)送數(shù)據(jù)太快,導(dǎo)致接收方來(lái)不及接收時(shí),需進(jìn)行流量控制流量控制
TCP流量控制71
TCP流控:工作原理TCP流控通過(guò)接收窗口字段實(shí)現(xiàn)接收方計(jì)算緩存區(qū)的剩余空間,即接收窗口大小RcvWindow=RcvBuffer-[LastByteRcvd-LastByteRead]接收方通過(guò)TCP首部的接收窗口字段反饋給發(fā)送方發(fā)送方根據(jù)接收窗口字段來(lái)限制發(fā)送窗口大小,以保證接收方緩存不溢出
72
TCP連接管理TCP是面向連接的協(xié)議,TCP連接的建立和釋放是每次TCP傳輸中必不可少的過(guò)程。TCP的傳輸連接包括三個(gè)狀態(tài)連接建立數(shù)據(jù)傳輸連接釋放73第一次握手過(guò)程:注:SYN:同步序列編號(hào)(SynchronizeSequenceNumber)SEQ:序列號(hào)(SequenceNumber),表示當(dāng)前數(shù)據(jù)傳輸字節(jié)的編號(hào)為X?!?/p>
SYN=1
,SEQ=X第一次握手:連接請(qǐng)求報(bào)文請(qǐng)求建立連接目前字節(jié)編號(hào):X下一次編號(hào):X+1SEQ=X:身份標(biāo)識(shí)Client客戶機(jī)(A)Server服務(wù)器(B)建立連接(三次握手)74第二次握手過(guò)程:①SYN=1,SEQ=X②
SYN=1
,SEQ=Y(jié),ACK=X+1
注:SYN:同步序列編號(hào)(SynchronizeSequenceNumbers)SEQ:序列號(hào)(SequenceNumber)ACK:確認(rèn)編號(hào)(AcknowledgementNumber)第二次握手:確認(rèn)報(bào)文第一次握手:連接請(qǐng)求報(bào)文請(qǐng)求建立連接目前字節(jié)編號(hào):Y下一次編號(hào):Y+1SEQ=Y(jié):身份標(biāo)識(shí)對(duì)(SYN)同步序號(hào)請(qǐng)求的應(yīng)答Client客戶機(jī)(A)Server服務(wù)器(B)建立連接(三次握手)75①SYN=1,SEQ=X②
SYN=1,SEQ=Y(jié),
ACK=X+1
第三次握手過(guò)程對(duì)(SYN)同步序號(hào)請(qǐng)求的應(yīng)答第二次握手確認(rèn)報(bào)文客戶機(jī)A的身份標(biāo)識(shí)第一次握手:連接請(qǐng)求報(bào)文③
SEQ=X+1,ACK=Y(jié)+1第三次握手:確認(rèn)報(bào)文Client客戶機(jī)(A)Server服務(wù)器(B)建立連接(三次握手)76①SYN=1,SEQ=X②
SYN=1,SEQ=Y(jié),
ACK=X+1
③
SEQ=X+1,ACK=Y(jié)+1請(qǐng)求確認(rèn)確認(rèn)三次握手過(guò)程:一個(gè)請(qǐng)求,兩個(gè)確認(rèn)數(shù)據(jù)連接已建立Client客戶機(jī)(A)Server服務(wù)器(B)建立連接(三次握手)77①SYN=?
,SEQ=1000②
SYN=?
,SEQ=?,
ACK=?
③
SEQ=?,ACK=2002三次握手過(guò)程:一個(gè)請(qǐng)求,兩個(gè)確認(rèn)數(shù)據(jù)Client客戶機(jī)(A)Server服務(wù)器(B)練習(xí)78步驟1:
客戶機(jī)向服務(wù)器發(fā)送TCPFIN控制報(bào)文段步驟2:
服務(wù)器收到FIN,用ACK回答。關(guān)閉連接,發(fā)送FIN步驟3:
客戶機(jī)收到FIN,用ACK答進(jìn)入“超時(shí)等待”
–將對(duì)接收到的FIN進(jìn)行確認(rèn)步驟4:
服務(wù)器接收ACK,連接關(guān)閉客戶FIN服務(wù)器ACKACKFIN關(guān)閉關(guān)閉已關(guān)閉超時(shí)等待釋放連接793.1運(yùn)輸層服務(wù)3.2復(fù)用與分解3.3無(wú)連接傳輸:UDP3.4可靠數(shù)據(jù)傳輸?shù)脑?.5面向連接的傳輸:TCP3.6擁塞控制的原則3.7TCP擁塞控制80擁塞(Congestion):當(dāng)大量的分組進(jìn)入網(wǎng)絡(luò),超出了網(wǎng)絡(luò)的處理能力時(shí),會(huì)引起網(wǎng)絡(luò)局部或整體性能下降,這種現(xiàn)象稱為擁塞。不加控制的擁塞甚至導(dǎo)致整個(gè)網(wǎng)絡(luò)癱瘓。不同于流量控制!表現(xiàn):丟包(路由器緩沖區(qū)溢出)長(zhǎng)時(shí)延(路由器緩沖區(qū)中排隊(duì))網(wǎng)絡(luò)中的前10大問(wèn)題之一!擁塞控制原理81擁塞控制起的作用提供的負(fù)載吞吐量理想的擁塞控制擁塞死鎖(吞吐量=0)無(wú)擁塞控制實(shí)際的擁塞控制輕度擁塞082兩個(gè)發(fā)送方,兩個(gè)接收方一個(gè)路由器,無(wú)限緩沖區(qū)不重傳擁塞時(shí)時(shí)延增大可達(dá)到最大吞吐量無(wú)限的共享式輸出鏈路緩沖主機(jī)Alin
:原始數(shù)據(jù)主機(jī)Blout擁塞的原因與開(kāi)銷(xiāo):情況183一個(gè)路由器,有限緩沖區(qū)發(fā)送方重傳丟失的數(shù)據(jù)分組有限的共享式輸出鏈路緩存主機(jī)Alin
:原始數(shù)據(jù)主機(jī)Bloutl‘in
:原始數(shù)據(jù)+重傳數(shù)據(jù)擁塞的原因與開(kāi)銷(xiāo):情況284通常:(吞吐量)僅當(dāng)丟失丟包時(shí),需要“完美的”重傳:遲延的分組(而不是丟失)的重傳使得比(同完美情況相比)更大linlout=linlout>linlout擁塞的“代價(jià)”:
比額定的“吞吐量”做更多的工作(重傳)不必要重傳:鏈路承載分組的多個(gè)拷貝擁塞的原因與開(kāi)銷(xiāo):情況2(續(xù))85四個(gè)發(fā)送者多跳路徑超時(shí)/重傳lin問(wèn)題:
隨著和的增加將發(fā)生什么情況?lin有限的共享式輸出鏈路緩存主機(jī)Alin
原始數(shù)據(jù)主機(jī)Bloutl‘in
:原始數(shù)據(jù),+重傳數(shù)據(jù)擁塞的原因與開(kāi)銷(xiāo):情況386另一個(gè)擁塞的“開(kāi)銷(xiāo)”:
當(dāng)分組丟失時(shí),任何用于傳輸該分組的上游傳輸能力都被浪費(fèi)!HostAHostBlout擁塞的原因與開(kāi)銷(xiāo):情況3(續(xù))87端到端的擁塞控制不能從網(wǎng)絡(luò)得到明確的反饋從端系統(tǒng)根據(jù)觀察到的時(shí)延和丟失現(xiàn)象推斷出擁塞這是TCP所采用的方法網(wǎng)絡(luò)輔助的擁塞控制路由器為端系統(tǒng)提供反饋一個(gè)bit指示一條鏈路出現(xiàn)擁塞(SNA,DECnet,TCP/IPECN,ATM)指示發(fā)送方按照一定速率發(fā)送控制擁塞的兩類方法(直接的和間接的):擁塞控制方法88案例(網(wǎng)絡(luò)輔助):ATMABR擁塞控制ATM(AsynchronousTransferMode)異步傳輸模式一種結(jié)合了電路交換與分組交換各自優(yōu)點(diǎn)的技術(shù)以53字節(jié)固定長(zhǎng)度的信元為傳輸單元業(yè)務(wù):CBR固定速率,ABR可用速率等:ABR可用速率業(yè)務(wù)模式(“彈性服務(wù)”)若發(fā)送方的路徑“欠載”:發(fā)送方應(yīng)該使用可用的帶寬若發(fā)送方的路徑擁塞:發(fā)送方被抑制到最小保證速率89通信過(guò)程簡(jiǎn)要描述發(fā)送方沿(建立好連接的)路徑上不斷傳輸數(shù)據(jù)信元和管理信元,到達(dá)接收方接收方將管理信元(內(nèi)容修改調(diào)整后)研路徑返回(反饋)到發(fā)送方案例:ATMABR擁塞控制90采取網(wǎng)絡(luò)輔助的擁塞控制(包括多種機(jī)制)RM信元中的特定bit:NIbit速率無(wú)增長(zhǎng)(
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 新工人入場(chǎng)安全培訓(xùn)試題(標(biāo)準(zhǔn)卷)
- 部門(mén)級(jí)安全培訓(xùn)試題附答案【B卷】
- 心理健康研究機(jī)構(gòu)運(yùn)營(yíng)制度
- 教育培訓(xùn)營(yíng)地建設(shè)實(shí)施方案
- 高級(jí)職稱評(píng)審個(gè)人農(nóng)業(yè)科技工作總結(jié)
- 電影院疫情防控靜態(tài)管理方案
- 家庭教育支持幼小銜接方案
- 旅行社新人培訓(xùn)
- 小學(xué)綜合實(shí)踐活動(dòng)尋找秋天
- 夜間經(jīng)濟(jì)安保服務(wù)方案
- 應(yīng)對(duì)突發(fā)事件的應(yīng)急響應(yīng)與復(fù)盤(pán)總結(jié)
- 《重大危險(xiǎn)源界定》課件
- 人工智能的道德與倫理問(wèn)題
- 二手車(chē)市場(chǎng)項(xiàng)目招商引資方案
- 新媒體視聽(tīng)節(jié)目制作 第三章 新媒體視聽(tīng)節(jié)目的“策劃之道”
- 浙江省杭州市西溪中學(xué)2023-2024學(xué)年八年級(jí)上學(xué)期期中科學(xué)試卷
- 2023年2月抗菌藥物臨床應(yīng)用監(jiān)測(cè)與評(píng)估報(bào)告
- 八年級(jí)上冊(cè)美術(shù)-5《中國(guó)山水畫(huà)》【課件】
- 工程量清單及招標(biāo)控制價(jià)編制、審核入庫(kù)類服務(wù)方案
- 浙江省嘉興市2023年八年級(jí)上學(xué)期期中數(shù)學(xué)試卷(附答案)
- 求雨后姐弟小故事
評(píng)論
0/150
提交評(píng)論