計算機網(wǎng)絡(luò)自頂向下方法(第四版)ppt第3章_第1頁
計算機網(wǎng)絡(luò)自頂向下方法(第四版)ppt第3章_第2頁
計算機網(wǎng)絡(luò)自頂向下方法(第四版)ppt第3章_第3頁
計算機網(wǎng)絡(luò)自頂向下方法(第四版)ppt第3章_第4頁
計算機網(wǎng)絡(luò)自頂向下方法(第四版)ppt第3章_第5頁
已閱讀5頁,還剩116頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 運輸層1第3章 運輸層Transport Layer 計算機網(wǎng)絡(luò):自頂向下方法 (原書第三版)陳鳴譯,機械工業(yè)出版社,2005年Computer Networking: A Top Down Approach Featuring the Internet, 3rd edition. Jim Kurose, Keith RossAddison-Wesley, July 2004. 運輸層2第3章:運輸層我們的目的: r理解運輸層服務(wù)依據(jù)的原理:m復(fù)用/分解m可靠數(shù)據(jù)傳輸m流量控制m擁塞控制r學(xué)習(xí)因特網(wǎng)中的運輸層協(xié)議:mUDP: 無連接傳輸mTCP: 面向連接傳輸mTCP 擁塞控制 運輸層3第3

2、章 要點r3.1 運輸層服務(wù)r3.2 復(fù)用與分解r3.3 無連接傳輸: UDPr3.4 可靠數(shù)據(jù)傳輸?shù)脑瓌tmrdt1mrdt2mrdt3m流水線協(xié)議r3.5 面向連接的傳輸: TCPm報文段結(jié)構(gòu)m可靠數(shù)據(jù)傳輸m流量控制m連接管理r3.6 擁塞控制的原則r3.7 TCP擁塞控制m機制mTCP吞吐量mTCP公平性m時延模型 運輸層4運輸服務(wù)和協(xié)議r在運行不同主機上應(yīng)用進程之間提供邏輯通信r運輸協(xié)議運行在端系統(tǒng)中m發(fā)送方:將應(yīng)用報文劃分為段,傳向網(wǎng)絡(luò)層m接收方:將段重新裝配為報文,傳向應(yīng)用層r應(yīng)用可供使用的運輸協(xié)議不止一個m因特網(wǎng):TCP和UDP應(yīng)用層運輸層網(wǎng)絡(luò)層數(shù)據(jù)鏈路層物理層網(wǎng)絡(luò)層數(shù)據(jù)鏈路層物理

3、層應(yīng)用層運輸層網(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ù)鏈路層物理層邏輯端到端傳輸 運輸層5運輸層 vs. 網(wǎng)絡(luò)層r網(wǎng)絡(luò)層: 主機間的邏輯通信r運輸層: 進程間的邏輯通信m依賴、強化網(wǎng)絡(luò)層服務(wù)家庭類比:12個孩子向12個孩子發(fā)信r進程 = 孩子r應(yīng)用報文= 信封中的信r主機 = 家庭r運輸協(xié)議 = Ann和Billr網(wǎng)絡(luò)層協(xié)議= 郵政服務(wù) 運輸層6因特網(wǎng)運輸層協(xié)議r可靠的、按序的交付 (TCP)m擁塞控制m流量控制m連接建立r不可靠、不按序交付: UDPm“盡力而為”IP的不提供不必要服務(wù)的擴展r不可用的服務(wù): m時延保證m帶寬保證應(yīng)用層

4、運輸層網(wǎng)絡(luò)層數(shù)據(jù)鏈路層物理層網(wǎng)絡(luò)層數(shù)據(jù)鏈路層物理層應(yīng)用層運輸層網(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ù)鏈路層物理層邏輯端到端傳輸 運輸層7第3章 要點r3.1 運輸層服務(wù)r3.2 復(fù)用與分解r3.3 無連接傳輸: UDPr3.4 可靠數(shù)據(jù)傳輸?shù)脑瓌tmrdt1mrdt2mrdt3m流水線協(xié)議r3.5 面向連接的傳輸: TCPm報文段結(jié)構(gòu)m可靠數(shù)據(jù)傳輸m流量控制m連接管理r3.6 擁塞控制的原則r3.7 TCP擁塞控制m機制mTCP吞吐量mTCP公平性m時延模型 運輸層8Internet 層的復(fù)用與分解 運輸層9復(fù)用/分解應(yīng)用層運輸層網(wǎng)絡(luò)層

5、鏈路層物理層P1應(yīng)用層運輸層網(wǎng)絡(luò)層鏈路層物理層應(yīng)用層運輸層network鏈路層物理層P2P3P4P1主機1主機2主機3= 進程= 套接字將接收到的段交付給正確的套接字在接收主機分解:從多個套接字收集數(shù)據(jù),用首部封裝數(shù)據(jù)(以后用于分解 )在發(fā)送主機復(fù)用: 運輸層10分解工作過程r主機接收IP數(shù)據(jù)報m每個數(shù)據(jù)報有源無連接, 目的地無連接m每個數(shù)據(jù)報承載1個運輸層段m每個段具有源、目的端口號 (回想: 對特定應(yīng)用程序的周知端口號)r主機使用IP地址 &端口號將段定向到適當?shù)奶捉幼衷炊丝?#目的端口 #32 bits應(yīng)用數(shù)據(jù)(報文)其他首部字段TCP/UDP 段格式 運輸層11無連接分解r生成具有端口

6、號的套接字:DatagramSocket mySocket1 = new DatagramSocket(99111);DatagramSocket mySocket2 = new DatagramSocket(99222);rUDP套接字由二元組標識 :r當主機接收UDP段時:m在段中檢查目的地端口號m將UDP段定向到具有該端口號的套接字r具有不同源IP地址和/或源端口號的IP數(shù)據(jù)報 定向到相同的套接字 運輸層12無連接分解(續(xù))DatagramSocket serverSocket = new DatagramSocket(6428);客戶機IP:BP2客戶機 IP: AP1P1P3服務(wù)器I

7、P: CSP: 6428DP: 9157SP: 9157DP: 6428SP: 6428DP: 5775SP: 5775DP: 6428SP提供了“返回地址” 運輸層13面向連接分解rTCP套接字由四元組標識: m源IP地址m源端口號m目的IP地址m目的端口號r接收主機使用這四個值來將段定向到適當?shù)奶捉幼謗服務(wù)器主機可能支持許多并行的TCP套接字:m每個套接字由其自己的四元組標識rWeb服務(wù)器對每個連接的客戶機具有不同的套接字m非持久HTTP將為每個請求具有不同的套接字 運輸層14面向連接分解 (續(xù))客戶機IP:BP1客戶機 IP: AP1P2P4服務(wù)器IP: CSP: 9157DP: 80S

8、P: 9157DP: 80P5P6P3D-IP:CS-IP: AD-IP:CS-IP: BSP: 5775DP: 80D-IP:CS-IP: B 運輸層15面向連接分解: 多線程Web服務(wù)器客戶機IP:BP1客戶機 IP: AP1P2服務(wù)器IP: CSP: 9157DP: 80SP: 9157DP: 80P4P3D-IP:CS-IP: AD-IP:CS-IP: BSP: 5775DP: 80D-IP:CS-IP: B 運輸層16第3章 要點r3.1 運輸層服務(wù)r3.2 復(fù)用與分解r3.3 無連接傳輸: UDPr3.4 可靠數(shù)據(jù)傳輸?shù)脑瓌tmrdt1mrdt2mrdt3m流水線協(xié)議r3.5 面向連

9、接的傳輸: TCPm報文段結(jié)構(gòu)m可靠數(shù)據(jù)傳輸m流量控制m連接管理r3.6 擁塞控制的原則r3.7 TCP擁塞控制m機制mTCP吞吐量mTCP公平性m時延模型 運輸層17UDP: 用戶數(shù)據(jù)報協(xié)議 RFC 768r“沒有不必要的,” “基本要素” 互聯(lián)網(wǎng)傳輸協(xié)議r“盡力而為”服務(wù),UDP段可能:m丟包m對應(yīng)用程序交付失序r無連接:m在UDP發(fā)送方和接收方之間無握手m每個UDP段的處理獨立于其他段為何要有 UDP協(xié)議?r無連接創(chuàng)建(它將增加時延)r簡單:在發(fā)送方、接收方無連接狀態(tài)r段首部小r無擁塞控制: UDP能夠盡可能快地傳輸 運輸層18UDP: 其他r常用于流式多媒體應(yīng)用m丟包容忍m速率敏感r其

10、他UDP應(yīng)用mDNSmSNMPr經(jīng)UDP的可靠傳輸 : 在應(yīng)用層增加可靠性m應(yīng)用程序特定的差錯恢復(fù)!源端口#目的端口#32 bits應(yīng)用數(shù)據(jù)(報文)UDP 段格式長度檢查和UDP段的長度,包括首部,以字節(jié)計 運輸層19UDP檢查和發(fā)送方:r將段內(nèi)容處理為16比特整數(shù)序列r檢查和: 段內(nèi)容的加法(反碼和)r發(fā)送方將檢查和放入UDP檢查和字段接收方:r計算接收的段的檢查和r核對計算的檢查和是否等于檢查和字段的值:mNO 檢測到差錯mYES 無差錯檢測到。雖然如此,還可能有差錯嗎?詳情見后目的: 在傳輸?shù)亩沃袡z測“差錯” (如比特翻轉(zhuǎn)) 運輸層20互聯(lián)網(wǎng)檢查和例子r注意m當數(shù)字作加法時,最高位進比特

11、位的進位需要加到結(jié)果中r例子: 兩個16-bit整數(shù)相加1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 01 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 11 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 11 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 01 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1回卷 和檢查和 運輸層21第3章 要點r3.1 運輸層服務(wù)r3.2 復(fù)用與分解r3.3 無連接傳輸: UDPr3.4 可靠數(shù)據(jù)傳輸?shù)脑瓌tmrdt1mrdt2mrdt3m流水線協(xié)議r3.5 面向連接的傳輸: TCPm

12、報文段結(jié)構(gòu)m可靠數(shù)據(jù)傳輸m流量控制m連接管理r3.6 擁塞控制的原則r3.7 TCP擁塞控制m機制mTCP吞吐量mTCP公平性m時延模型 運輸層22可靠數(shù)據(jù)傳輸?shù)脑瓌tr在應(yīng)用層、運輸層、數(shù)據(jù)鏈路層的重要性m重要的網(wǎng)絡(luò)主題中的最重要的10個之一!r不可靠信道的特點決定了可靠數(shù)據(jù)傳輸 協(xié)議 (rdt) 的復(fù)雜性 運輸層23可靠數(shù)據(jù)傳輸: 基本概念發(fā)送側(cè)接收側(cè)rdt_send(): called from above, (e.g., by app.). Passed data to deliver to receiver upper layerudt_send(): called by rdt,to

13、 transfer packet over unreliable channel to receiverrdt_rcv(): called when packet arrives on rcv-side of channeldeliver_data(): called by rdt to deliver data to upper 運輸層24可靠數(shù)據(jù)傳輸: 基本概念我們將:r增強研發(fā)發(fā)送方,可靠數(shù)據(jù)傳輸協(xié)議 (rdt) 的接收方側(cè)m僅考慮單向數(shù)據(jù)傳輸m但控制信息將在兩個方向流動!r使用有限狀態(tài)機 (FSM)來定義發(fā)送方和接收方狀態(tài)1狀態(tài)2引起狀態(tài)變遷的事件狀態(tài)變遷所采取的行動狀態(tài): 當位于這個

14、“狀態(tài)時”,下個狀態(tài)惟一地由下個事件決定事件動作 運輸層25第3章 要點r3.1 運輸層服務(wù)r3.2 復(fù)用與分解r3.3 無連接傳輸: UDPr3.4 可靠數(shù)據(jù)傳輸?shù)脑瓌tmrdt1mrdt2mrdt3m流水線協(xié)議r3.5 面向連接的傳輸: TCPm報文段結(jié)構(gòu)m可靠數(shù)據(jù)傳輸m流量控制m連接管理r3.6 擁塞控制的原則r3.7 TCP擁塞控制m機制mTCP吞吐量mTCP公平性m時延模型 運輸層26Rdt1.0: 經(jīng)可靠信道的可靠傳輸r底層信道非??煽縨無比特差錯m無分組丟失r裝發(fā)送方、接收方的單獨FSM:m發(fā)送方將數(shù)據(jù)發(fā)向底層信道m(xù)接收方從底層信道讀取數(shù)據(jù)Wait for call from ab

15、ovepacket = make_pkt(data)udt_send(packet)rdt_send(data)extract (packet,data)deliver_data(data)Wait for call from belowrdt_rcv(packet)發(fā)送方接收方 運輸層27第3章 要點r3.1 運輸層服務(wù)r3.2 復(fù)用與分解r3.3 無連接傳輸: UDPr3.4 可靠數(shù)據(jù)傳輸?shù)脑瓌tmrdt1mrdt2mrdt3m流水線協(xié)議r3.5 面向連接的傳輸: TCPm報文段結(jié)構(gòu)m可靠數(shù)據(jù)傳輸m流量控制m連接管理r3.6 擁塞控制的原則r3.7 TCP擁塞控制m機制mTCP吞吐量mTCP

16、公平性m時延模型 運輸層28Rdt2.0: 具有比特差錯的信道runderlying channel may flip bits in packetmchecksum to detect bit errorsrthe question: how to recover from errors:macknowledgements (ACKs): receiver explicitly tells sender that pkt received OKmnegative acknowledgements (NAKs): receiver explicitly tells sender that pk

17、t had errorsmsender retransmits pkt on receipt of NAKrnew mechanisms in rdt2.0 (beyond rdt1.0):merror detectionmreceiver feedback: control msgs (ACK,NAK) rcvr-sender 運輸層29rdt2.0: FSM規(guī)格參數(shù) 等待來自上面的調(diào)用snkpkt = make_pkt(data, checksum)udt_send(sndpkt)extract(rcvpkt,data)deliver_data(data)udt_send(ACK)rdt_

18、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 等待來自下面的調(diào)用發(fā)送方接收方rdt_send(data)L 運輸層30rdt2.0: 無差錯時的操作 等待來自上面的調(diào)用snkpkt = make_pkt(data, checksum)udt_send(sndpkt)extract(rcvpkt,data)de

19、liver_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 等待來自下面的調(diào)用rdt_send(data)L 運輸層31rdt2.0: 有差錯時的情況 等待來自上面的調(diào)用snkpkt = make_pkt(data, checksum)udt_send(s

20、ndpkt)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 等待來自下面的調(diào)用rdt_send(data)L 運輸層32rdt2.0有重大的缺陷!如果ACK/NAK受損,將會出現(xiàn)何種情況?r發(fā)送方不知道在

21、接收方會發(fā)生什么情況!r不能只是重傳:可能導(dǎo)致冗余處理冗余: r發(fā)送方對每個分組增加序列號r如果ACK/NAK受損,發(fā)送方重傳當前的分組r接收方丟棄(不再向上交付)冗余分組發(fā)送方發(fā)送一個分組,然后等待接收方響應(yīng)停止等待 運輸層33rdt2.1: 發(fā)送方, 處理受損的ACK/NAK等待來自上面的調(diào)用0sndpkt = make_pkt(0, data, checksum)udt_send(sndpkt)rdt_send(data)等待 ACK 或 NAK 0udt_send(sndpkt)rdt_rcv(rcvpkt) & ( corrupt(rcvpkt) |isNAK(rcvpkt) )sn

22、dpkt = make_pkt(1, data, checksum)udt_send(sndpkt)rdt_send(data)rdt_rcv(rcvpkt) & notcorrupt(rcvpkt) & isACK(rcvpkt) udt_send(sndpkt)rdt_rcv(rcvpkt) & ( corrupt(rcvpkt) |isNAK(rcvpkt) )rdt_rcv(rcvpkt) & notcorrupt(rcvpkt) & isACK(rcvpkt) 等待來自上面的調(diào)用1等待 ACK 或NAK 1LL 運輸層34rdt2.1: 接收方,處理受損的ACK/NAK等待來自下面的

23、調(diào)用0sndpkt = make_pkt(NAK, chksum)udt_send(sndpkt)rdt_rcv(rcvpkt) & not corrupt(rcvpkt) & has_seq0(rcvpkt)rdt_rcv(rcvpkt) & notcorrupt(rcvpkt) & has_seq1(rcvpkt) extract(rcvpkt,data)deliver_data(data)sndpkt = make_pkt(ACK, chksum)udt_send(sndpkt)等待來自上面的調(diào)用1rdt_rcv(rcvpkt) & notcorrupt(rcvpkt) & has_se

24、q0(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) & not corrupt(rcvpkt) & has_seq1(rcvpkt)rdt_rcv(rcvpkt) & (corrupt(rcvpkt)sndpkt = make_pkt(ACK, chksum)udt_s

25、end(sndpkt)sndpkt = make_pkt(NAK, chksum)udt_send(sndpkt) 運輸層35rdt2.1: 討論發(fā)送方:r序號seq # 加入分組中r兩個序號seq. #s (0,1) 將夠用. ( 為什么?)r必須檢查是否收到的ACK/NAK受損 r狀態(tài)增加一倍m狀態(tài)必須“記住”是否“當前的”分組具有0或1序號接收方:r必須檢查是否接收到的分組是冗余的m狀態(tài)指示是否0或1是所期待的分組序號seq #r注意: 接收方不能知道是否它的最后的ACK/NAK在發(fā)送方已經(jīng)接收OK 運輸層36rdt2.2: 一種無NAK的協(xié)議r與rdt2.1一樣的功能,僅使用ACKr代

26、替NAK,接收方對最后正確接收的分組發(fā)送ACKm接收方必須明確地包括被確認分組的序號r在發(fā)送方冗余的ACK導(dǎo)致如同NAK相同的動作:重傳當前分組 運輸層37rdt2.2: 發(fā)送方, 接收方片段等待來自上面的調(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) & notcorrupt(rcvpkt) & isACK(rcvpkt,0) 等待

27、ACK0發(fā)送方FSM片段等待來自下面的調(diào)用0rdt_rcv(rcvpkt) & notcorrupt(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 運輸層38第3章 要點r3.1 運輸層服務(wù)r3.2 復(fù)用與分解r3.3 無連接傳輸: UDPr3.4 可靠數(shù)據(jù)傳輸?shù)?/p>

28、原則mrdt1mrdt2mrdt3m流水線協(xié)議r3.5 面向連接的傳輸: TCPm報文段結(jié)構(gòu)m可靠數(shù)據(jù)傳輸m流量控制m連接管理r3.6 擁塞控制的原則r3.7 TCP擁塞控制m機制mTCP吞吐量mTCP公平性m時延模型 運輸層39rdt3.0: 具有差錯和丟包的信道新假設(shè): 下面的信道也能丟失分組(數(shù)據(jù)或ACK)m檢查和、序號、重傳將是有幫助的,但不充分方法: 發(fā)送方等待ACK一段“合理的”時間r如在這段時間沒有收到ACK則重傳r如果分組(或ACK)只是延遲(沒有丟失):m重傳將是冗余的,但序號的使用已經(jīng)處理了該情況m接收方必須定義被確認的分組序號r需要倒計時定時器 運輸層40rdt3.0發(fā)送

29、方sndpkt = make_pkt(0, data, checksum)udt_send(sndpkt)start_timerrdt_send(data)等待 ACK0rdt_rcv(rcvpkt) & ( corrupt(rcvpkt) |isACK(rcvpkt,1) )等待來自上面的調(diào)用1sndpkt = make_pkt(1, data, checksum)udt_send(sndpkt)start_timerrdt_send(data)rdt_rcv(rcvpkt) & notcorrupt(rcvpkt) & isACK(rcvpkt,0) rdt_rcv(rcvpkt) & (

30、 corrupt(rcvpkt) |isACK(rcvpkt,0) )rdt_rcv(rcvpkt) & notcorrupt(rcvpkt) & isACK(rcvpkt,1) stop_timerstop_timerudt_send(sndpkt)start_timertimeoutudt_send(sndpkt)start_timertimeoutrdt_rcv(rcvpkt) 等待來自上面的調(diào)用0等待 ACK1Lrdt_rcv(rcvpkt)LLL 運輸層41rdt3.0 運行情況無丟包時的運行 分組丟失發(fā)送方發(fā)送方接收方接收方 運輸層42rdt3.0運行情況ACK丟失 過早超時 發(fā)送

31、方發(fā)送方接收方接收方 運輸層43rdt3.0的性能rrdt3.0能夠工作,但性能不太好r例子: 1 Gbps鏈路, 15 ms端到端傳播時延, 1KB分組:Ttransmit=8kb/pkt10*9 b/sec= 8 microsecmU sender: 利用率 發(fā)送方用于發(fā)送時間的比率m每30 msec 1KB 分組 - 經(jīng)1 Gbps 鏈路有33kB/sec 吞吐量m網(wǎng)絡(luò)協(xié)議限制了物理資源的使用! U sender = .008 30.008 = 0.00027 L / R RTT + L / R = L (packet length in bits)R (transmission rat

32、e, bps)= 運輸層44rdt3.0: 停等協(xié)議的運行傳輸分組的第一個比特, t = 0發(fā)送方接收方RTT 傳輸分組的最后一個比特, t = L / R分組第一個比特到達傳輸最后一個比特到達,發(fā)送ACKACK 到達,發(fā)送下一個分組, t = RTT + L / R U sender = .008 30.008 = 0.00027 L / R RTT + L / R = 運輸層45第3章 要點r3.1 運輸層服務(wù)r3.2 復(fù)用與分解r3.3 無連接傳輸: UDPr3.4 可靠數(shù)據(jù)傳輸?shù)脑瓌tmrdt1mrdt2mrdt3m流水線協(xié)議r3.5 面向連接的傳輸: TCPm報文段結(jié)構(gòu)m可靠數(shù)據(jù)傳輸m

33、流量控制m連接管理r3.6 擁塞控制的原則r3.7 TCP擁塞控制m機制mTCP吞吐量mTCP公平性m時延模型 運輸層46流水線協(xié)議流水線: 發(fā)送方允許發(fā)送多個、“傳輸中的”,還沒有應(yīng)答的報文段m序號的范圍必須增加m發(fā)送方和/或接收方設(shè)有緩沖r流水線協(xié)議的兩種形式: 回退回退N幀法(幀法(go-Back-N), 選擇性重傳(選擇性重傳(S-R), 運輸層47流水線協(xié)議: 增加利用率傳輸?shù)谝粋€分組比特傳輸?shù)谝粋€分組比特, t = 0發(fā)送者接收者RTT 傳輸最后一個比特傳輸最后一個比特, t = L / R第一個分組比特到達第一個分組比特到達分組最后一個比特到達分組最后一個比特到達,發(fā)送發(fā)送 AC

34、KACK 到達到達, 發(fā)送下一個分組發(fā)送下一個分組, t = RTT + L / R第二個分組最后比特到達第二個分組最后比特到達,發(fā)送發(fā)送ACK第三個分組最后比特到達第三個分組最后比特到達,發(fā)送發(fā)送ACK U sender = .024 30.008 = 0.0008 microseconds 3 * L / R RTT + L / R = 利用率增加利用率增加3倍倍! 運輸層48Go-Back-N發(fā)送方發(fā)送方:r在分組首部需要K比特序號,2k=Nr“窗口”最大為N, 允許N個連續(xù)的沒有應(yīng)答分組rACK(n): 確認所有的(包括序號n)的分組 - “累計ACK”m可能收到重復(fù)的ACKs (見接

35、收方)r對每個傳輸中的分組的用同一個計時器rtimeout(n):若超時,重傳窗口中的分組n及所有更高序號的分組 運輸層49GBN: 發(fā)送方擴展的 FSM等待等待start_timerudt_send(sndpktbase)udt_send(sndpktbase+1)udt_send(sndpktnextseqnum-1)超時rdt_send(data) if (nextseqnum 沒有接收緩沖區(qū)!m重新確認具有按序的分組Waitudt_send(sndpkt)defaultrdt_rcv(rcvpkt) & notcurrupt(rcvpkt) & hasseqnum(rcvpkt,exp

36、ectedseqnum) extract(rcvpkt,data)deliver_data(data)sndpkt = make_pkt(expectedseqnum,ACK,chksum)udt_send(sndpkt)expectedseqnum+expectedseqnum=1sndpkt = make_pkt(expectedseqnum,ACK,chksum)L等等待待 運輸層51GBN 操作發(fā)送方接收方 運輸層52選擇性重傳(Selective Repeat)GBN改善了信道效率,但仍然有不必要重傳問題r接收方分別確認所有正確接收的報文段m需要緩存分組, 以便最后按序交付給給上層r

37、發(fā)送方只需要重傳沒有收到ACK的分組m發(fā)送方定時器對每個沒有確認的分組計時r發(fā)送窗口mN個連續(xù)的序號m也需要限制已發(fā)送但尚未應(yīng)答分組的序號 運輸層53選擇性重傳: 發(fā)送方, 接收方窗口a. 發(fā)送方看到的序號b. 接收方看到的序號已經(jīng)確認可用,還未發(fā)送發(fā)送,還未確認不可用可接受(窗口內(nèi)) 失序(已緩存)但未被確認 可接受(窗口內(nèi))期待,還未收到 不可用 窗口長度N窗口長度N 運輸層54選擇性重傳上層傳來數(shù)據(jù)上層傳來數(shù)據(jù) :r如果窗口中下一個序號可用, 發(fā)送報文段timeout(n):r重傳分組n, 重啟其計時器ACK(n) 在在sendbase,sendbase+N:r標記分組 n 已經(jīng)收到r如

38、果n 是最小未收到應(yīng)答的分組,向前滑動窗口base指針到下一個未確認序號發(fā)送方分組分組n在在 rcvbase, rcvbase+N-1r發(fā)送 ACK(n)r失序: 緩存r按序: 交付 (也交付所有緩存的按序分組),向前滑動窗口到下一個未收到報文段的序號分組分組n在在rcvbase-N,rcvbase-1rACK(n)其他其他: r忽略 接收方 運輸層55選擇重傳的操作 運輸層56選擇重傳: 困難的問題例子:r序號: 0, 1, 2, 3r窗口長度 = 3r接收方:在(a)和(b)兩種情況下接收方?jīng)]有發(fā)現(xiàn)差別!r在 (a)中不正確地將新的冗余的當為新的,而在(b)中不正確地將新的當作冗余的問題:

39、 序號長度與窗口長度有什么關(guān)系?回答:窗口長度小于等于序號空間的一半 運輸層57可靠數(shù)據(jù)傳輸機制及用途總結(jié)機制用途和說明檢驗和用于檢測在一個傳輸分組中的比特錯誤。定時器用于檢測超時/重傳一個分組,可能因為該分組(或其ACK)在信道中丟失了。由于當一個分組被時延但未丟失(過早超時),或當一個分組已被接收方收到但從接收方到發(fā)送方的ACK丟失時,可能產(chǎn)生超時事件,所以接收方可能會收到一個分組的多個冗余拷貝。序號用于為從發(fā)送方流向接收方的數(shù)據(jù)分組按順序編號。所接收分組的序號間的空隙可使該接收方檢測出丟失的分組。具有相同序號的分組可使接收方檢測出一個分組的冗余拷貝。確認接收方用于告訴發(fā)送方一個分組或一組

40、分組已被正確地接收到了。確認報文通常攜帶著被確認的分組或多個分組的序號。確認可以是逐個的或累積的,這取決于協(xié)議。否定確認接收方用于告訴發(fā)送方某個分組未被正確地接收。否定確認報文通常攜帶著未被正確接收的分組的序號。窗口、流水線發(fā)送方也許被限制僅發(fā)送那些序號落在一個指定范圍內(nèi)的分組。通過允許一次發(fā)送多個分組但未被確認,發(fā)送方的利用率可在停等操作模式的基礎(chǔ)上得到增加。我們很快將會看到,窗口長度可根據(jù)接收方接收和緩存報文的能力或網(wǎng)絡(luò)中的擁塞程度,或兩者情況來進行設(shè)置。 運輸層58第3章 要點r3.5 面向連接的傳輸: TCPm報文段結(jié)構(gòu)m可靠數(shù)據(jù)傳輸m流量控制m連接管理r3.6 擁塞控制的原則r3.7

41、 TCP擁塞控制m機制mTCP吞吐量mTCP公平性m時延模型r3.1 運輸層服務(wù)r3.2 復(fù)用與分解r3.3 無連接傳輸: UDPr3.4 可靠數(shù)據(jù)傳輸?shù)脑瓌tmrdt1mrdt2mrdt3m流水線協(xié)議 運輸層59TCP概述 RFCs: 793, 1122, 1323, 2018, 2581r全雙工數(shù)據(jù)全雙工數(shù)據(jù):m同一連接上的雙向數(shù)據(jù)流mMSS: 最大報文段長度mMTU:最大傳輸單元r面向連接面向連接: m在進行數(shù)據(jù)交換前,初始化發(fā)送方與接收方狀態(tài),進行握手(交換控制信息),r流量控制流量控制:m發(fā)送方不能淹沒接收方r擁塞控制擁塞控制:m抑止發(fā)送方速率來防止過分占用網(wǎng)絡(luò)資源r點到點點到點:m一

42、個發(fā)送方, 一個接收方m連接狀態(tài)與端系統(tǒng)有關(guān),不為路由器所知 r可靠、有序的字節(jié)流可靠、有序的字節(jié)流:m沒有 “報文邊界”r流水線流水線:mTCP擁塞和流量控制設(shè)置滑動窗口協(xié)議r發(fā)送和接收緩沖區(qū)發(fā)送和接收緩沖區(qū)socketdoorTCPsend bufferTCPreceive buffersocketdoorsegmentapplicationwrites dataapplicationreads data 運輸層60TCP 報文段結(jié)構(gòu)源端口 #目的端口 #32 bits應(yīng)用層數(shù)據(jù) (變長)序號確認號接收窗口緊急數(shù)據(jù)指針檢查和FSRPAU首部長度未用選項 (變長)URG: 緊急數(shù)據(jù) (一般不

43、用)ACK: ACK 序號有效PSH: 立即提交數(shù)據(jù)(一般不用)RST, SYN, FIN:連接建立(建立和拆連)接收方允許的字節(jié)數(shù)對數(shù)據(jù)字節(jié)計數(shù)(并非對報文段計數(shù)!)因特網(wǎng)檢查和(同 UDP一樣) 運輸層61TCP序號和確認號序號序號:m報文段中第1個數(shù)據(jù)字節(jié)在字節(jié)流中的位置編號確認號確認號:m期望從對方收到下一個字節(jié)的序號m累計應(yīng)答問題:接收方如何處理失序報文段?回答:TCP規(guī)范沒有說明, 由實現(xiàn)者自行選擇實現(xiàn): 拋棄/緩存 主機主機 A主機主機 BSeq=42, ACK=79, data = CSeq=79, ACK=43, data = CSeq=43, ACK=80用戶鍵入C主機對接

44、收到的C回顯給出確認主機對收到的C給出確認, 回顯 C時間時間簡單的telnet情況捎帶確認捎帶確認 運輸層62TCP往返時延(RTT)的估計與超時問題: 如何設(shè)置TCP 超時值?r應(yīng)大于RTTm但RTT是變化的r太短: 過早超時m不必要的重傳r太長: 對報文段的丟失響應(yīng)太慢問題: 如何估計RTT?rSampleRTT: 從發(fā)送報文段到接收到ACK的測量時間m忽略重傳rSampleRTT會變化,希望估計的RTT“較平滑”m平均最近的測量值,并不僅僅是當前SampleRTT 運輸層63EstimatedRTT = (1- )*EstimatedRTT + *SampleRTTr指數(shù)加權(quán)移動平均(

45、Exponential weighted moving average)r過去的樣本指數(shù)級衰減來產(chǎn)生影響r典型值: = 0.125TCP往返時延估計與超時 (續(xù)) 運輸層64RTT估計的例子 運輸層65TCP往返時延估計與超時 (續(xù))設(shè)置超時間隔設(shè)置超時間隔rEstimtedRTT 加 “安全余量”mEstimatedRTT大變化- 更大的安全余量r首先估算EstimatedRTT與SampleRTT之間差值有多大 : TimeoutInterval = EstimatedRTT + 4*DevRTTDevRTT = (1- )*DevRTT + *|SampleRTT-EstimatedRT

46、T|(典型地, = 0.25) 然后估算超時值然后估算超時值: 運輸層66第3章 要點r3.5 面向連接的傳輸: TCPm報文段結(jié)構(gòu)m可靠數(shù)據(jù)傳輸m流量控制m連接管理r3.6 擁塞控制的原則r3.7 TCP擁塞控制m機制mTCP吞吐量mTCP公平性m時延模型r3.1 運輸層服務(wù)r3.2 復(fù)用與分解r3.3 無連接傳輸: UDPr3.4 可靠數(shù)據(jù)傳輸?shù)脑瓌tmrdt1mrdt2mrdt3m流水線協(xié)議 運輸層67TCP 可靠數(shù)據(jù)傳輸rTCP在IP不可靠服務(wù)的基礎(chǔ)上創(chuàng)建可靠數(shù)據(jù)傳輸服務(wù)r流水線發(fā)送報文段r累計確認rTCP使用單個重傳計時器r重傳被下列事件觸發(fā):m超時事件m重復(fù)ACKr先考慮簡化的TCP

47、發(fā)送方:m 忽略重復(fù)ACKm 忽略流量控制,擁塞控制 運輸層68TCP 發(fā)送方事件1.從應(yīng)用層接收數(shù)據(jù):r根據(jù)序號創(chuàng)建報文段r序號是報文段中第一個數(shù)據(jù)字節(jié)的數(shù)據(jù)流編號r如果未啟動,啟動計時器 (考慮計時器用于最早的沒有確認的報文段)r超時間隔: TimeOutInterval= EstimatedRTT + 4*DevRTT2.超時:r重傳導(dǎo)致超時的報文段r重新啟動計時器3.收到確認:r如果確認了先前未被確認的報文段 r更新被確認的報文段序號r如果還有未被確認的報文段,重新啟動計時器 運輸層69TCP 發(fā)送方(簡化的) NextSeqNum = InitialSeqNum SendBase =

48、 InitialSeqNum loop (forever) switch(event) event: data received from application above create TCP segment with sequence number NextSeqNum if (timer currently not running) start timer pass segment to IP NextSeqNum = NextSeqNum + length(data) event: timer timeout retransmit not-yet-acknowledged segme

49、nt with smallest sequence number y start timer event: ACK received, with ACK field value of y if (y SendBase) /* 累計確認到Y(jié) */ SendBase = y if (there are currently not-yet-acknowledged segments) start timer /* end of loop forever */ 注釋: SendBase-1: 上次累計的已確認字節(jié)例如: SendBase-1 = 71;y= 73, 因此接收方期待73+ ;y Send

50、Base, 因此新數(shù)據(jù)被確認 運輸層70TCP: 重傳的情況主機 ASeq=100, 20 bytes dataACK=100時間過早超時的情況主機 BSeq=92, 8 bytes dataACK=120Seq=92, 8 bytes dataSeq=92 超時ACK=120主機 ASeq=92, 8 bytes dataACK=100loss超時丟失確認的情況主機 BXSeq=92, 8 bytes dataACK=100時間Seq=92 超時SendBase= 100SendBase= 120SendBase= 120Sendbase= 100 運輸層71TCP 重傳情況(續(xù))主機 AS

51、eq=92, 8 bytes dataACK=100丟包超時累計確認情況主機 BXSeq=100, 20 bytes dataACK=120時間SendBase= 120 運輸層72TCP ACK 產(chǎn)生 RFC 1122, RFC 2581接收方事件接收方事件所期望序號的報文段按序到達。所有在期望序號及以前的數(shù)據(jù)都已經(jīng)被確認 有期望序號的報文段按序到達。另一個按序報文段等待發(fā)送ACK 比期望序號大的失序報文段到達,檢測出數(shù)據(jù)流中的間隔。 部分或者完全填充已接收到數(shù)據(jù)間隔的報文段到達TCP 接收方行為接收方行為延遲的ACK。對另一個按序報文段的到達最多等待500 ms。如果下一個按序報文段在這個

52、時間間隔內(nèi)沒有到達,則發(fā)送一個ACK 立即發(fā)送單個累積ACK,以確認兩個按序報文段 立即發(fā)送冗余ACK,指明下一個期待字節(jié)的序號(也就是間隔的低端字節(jié)序號) 倘若該報文段起始于間隔的低端,則立即發(fā)送ACK 運輸層73快速重傳r超時間隔常常相對較長:m重傳丟失報文段以前有長時延r通過冗余ACK,檢測丟失的報文段m發(fā)送方經(jīng)常一個接一個的發(fā)送報文段m如果報文段丟失,將會收到很多重復(fù)ACKr如果對相同數(shù)據(jù),發(fā)送方收到3個ACK, 假定被確認的報文段以后的報文段丟失了:m快速重傳: 在定時器超時之前重傳 運輸層74 事件: 收到ACK, ACK 域的值為 y if (y SendBase) SendBa

53、se = y if (當前還有沒有確認的報文段) 啟動定時器 else 值為 y的重復(fù)確認的次數(shù)加1 if (值為 y的重復(fù)確認的計數(shù)= 3) 重傳序號位y的報文段 快速重傳算法:對已經(jīng)確認的報文段收到一個重復(fù)ACK快速重傳 運輸層75第3章 要點r3.5 面向連接的傳輸: TCPm報文段結(jié)構(gòu)m可靠數(shù)據(jù)傳輸m流量控制m連接管理r3.6 擁塞控制的原則r3.7 TCP擁塞控制m機制mTCP吞吐量mTCP公平性m時延模型r3.1 運輸層服務(wù)r3.2 復(fù)用與分解r3.3 無連接傳輸: UDPr3.4 可靠數(shù)據(jù)傳輸?shù)脑瓌tmrdt1mrdt2mrdt3m流水線協(xié)議 運輸層76TCP 流量控制rTCP連接

54、的接收方有1個接收緩沖區(qū):r匹配速度服務(wù): 發(fā)送速率需要匹配接收方應(yīng)用程序的提取速率r應(yīng)用進程可能從接收緩沖區(qū)讀數(shù)據(jù)緩慢發(fā)送方不能發(fā)送太多、太快的數(shù)據(jù)讓接收方緩沖區(qū)溢出流量控制流量控制 運輸層77TCP流控: 工作原理(假設(shè) TCP 接收方丟棄失序的報文段)r緩沖區(qū)的剩余空間= RcvWindow= RcvBuffer-LastByteRcvd - LastByteReadr接收方在報文段接收窗口字段中通告其接收緩沖區(qū)的剩余空間r發(fā)送方要限制未確認的數(shù)據(jù)不超過RcvWindowLastByteSent-LastByteAcked linlout擁塞的擁塞的“代價代價”: r比額定的“吞吐量”做

55、更多的工作 (重傳)r不必要重傳: 鏈路承載分組的多個拷貝 運輸層89擁塞的原因與開銷: 情況3 r四個發(fā)送者r多跳路徑r超時/重傳lin問題: 隨著 和 的增加將發(fā)生什么情況 ?lin有限的共享式輸出鏈路緩存 主機 Alin 原始數(shù)據(jù)主機 Bloutlin : 原始數(shù)據(jù), 重傳數(shù)據(jù) 運輸層90擁塞的原因與開銷: 情況3 (續(xù)) 另一個擁塞的“開銷”: r當分組丟失時, 任何用于傳輸該分組的上游傳輸能力都被浪費!Host AHost Blout 運輸層91擁塞控制方法端到端的擁塞控制:r不能從網(wǎng)絡(luò)得到明確的反饋r從端系統(tǒng)根據(jù)觀察到的時延和丟失現(xiàn)象推斷出擁塞r這是TCP所采用的方法網(wǎng)絡(luò)輔助的擁塞

56、控制:r路由器為端系統(tǒng)提供反饋m一個bit指示一條鏈路出現(xiàn)擁塞(SNA,DECnet,TCP/IP ECN, ATM)m指示發(fā)送方按照一定速率發(fā)送控制擁塞的兩類方法控制擁塞的兩類方法: 運輸層92案例研究: ATM ABR 擁塞控制ABR: 可用比特率:r“彈性服務(wù)” r如果發(fā)送方的路徑 “欠載”: m發(fā)送方應(yīng)該使用可用的帶寬r如果發(fā)送方的路徑擁塞: m發(fā)送方被抑制到最小的保證速率RM (資源管理) 信元:r發(fā)送方發(fā)送RM 信元, 散布在數(shù)據(jù)信元中r由交換機設(shè)置 RM 信元中的特定比特(“網(wǎng)絡(luò)輔助”) mNI bit: 速率無增長 (輕度擁塞)mCI bit: 擁塞指示r接收方向發(fā)送方返回RM

57、 信元 運輸層93rRM信元中的兩字節(jié) ER (明確速率)字段m擁塞的交換機會降低RM信元中的ER 值為m發(fā)送方以路徑上所有交換機的最小支持速率發(fā)送r數(shù)據(jù)信元中的EFCI bit : 被擁塞的交換機設(shè)置為1 m如果比RM信元先到達的數(shù)據(jù)信元的EFCI位為1,接收方將在返回的RM信元的CI位置1案例研究: ATM ABR擁塞控制 運輸層94第3章 要點r3.5 面向連接的傳輸: TCPm報文段結(jié)構(gòu)m可靠數(shù)據(jù)傳輸m流量控制m連接管理r3.6 擁塞控制的原則r3.7 TCP擁塞控制m機制mTCP吞吐量mTCP公平性m時延模型r3.1 運輸層服務(wù)r3.2 復(fù)用與分解r3.3 無連接傳輸: UDPr3.

58、4 可靠數(shù)據(jù)傳輸?shù)脑瓌tmrdt1mrdt2mrdt3m流水線協(xié)議 運輸層95TCP 擁塞控制r端到端控制 (沒有網(wǎng)絡(luò)輔助)r發(fā)送方限制傳輸: LastByteSent-LastByteAcked CongWinr粗略地,r擁塞窗口是動態(tài)的, 具有感知到的網(wǎng)絡(luò)擁塞的函數(shù)發(fā)送方如何感知網(wǎng)絡(luò)擁塞?r丟失事件 = 超時或者 3個重復(fù)ACKr發(fā)生丟失事件后,TCP發(fā)送方降低速率(擁塞窗口)三個機制:速率 = CongWin RTT Bytes/sec 運輸層96TCP加增倍減 AIMD乘性減乘性減: 丟包事件后,擁塞窗口值減半加性增加性增: 如沒有檢測到丟包事件,每個RTT時間擁塞窗口值增加一個MSS

59、(最大報文段長度)長生命周期TCP連接 運輸層97TCP慢啟動r在連接開始時, 擁塞窗口值 = 1 MSSm例如: MSS= 500 bytes & RTT = 200 msecm初始化速率 = 20 kbpsr可獲得帶寬可能 MSS/RTTm希望盡快達到期待的速率r當連接開始,以指數(shù)快地增加速率,直到第一個丟失事件發(fā)生 運輸層98TCP 慢啟動(續(xù))r當連接開始的時候,速率呈指數(shù)式上升,直到第1次報文丟失事件發(fā)生為止:m每RTT倍增擁塞窗口值m每收到ACK,增加擁塞窗口r總結(jié): 初始速率很低,但以指數(shù)快地增加主機A一個報文段RTT主機B時間兩個報文段四個報文段 運輸層99改進r收到3個冗余確

60、認后:mCongWin減半m窗口再線性增加r但是超時事件以后:mCongWin值設(shè)置為1 MSSm窗口再指數(shù)增長m到達一個閾值 (Threshold) 后,再線性增長 3個冗余ACK指示網(wǎng)絡(luò)還具有某些傳送報文段的能力 3個冗余ACK以前的超時,則更為 “嚴重”基本思想基本思想: 運輸層100改進 (續(xù))實現(xiàn)方法實現(xiàn)方法:r設(shè)置一個變的閾值Threshold r在丟包事件發(fā)生時,閾值Threshold設(shè)置為發(fā)生丟包以前的CongWin的一半問題: 什么時候從指數(shù)增長轉(zhuǎn)變?yōu)榫€性增長? 回答: CongWin達到它超時以前1/2的時候. 運輸層101TCP 擁塞控制:小結(jié)r當CongWin Thre

溫馨提示

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

評論

0/150

提交評論