TCPIP協(xié)議課件:第12章 TCP_第1頁
TCPIP協(xié)議課件:第12章 TCP_第2頁
TCPIP協(xié)議課件:第12章 TCP_第3頁
TCPIP協(xié)議課件:第12章 TCP_第4頁
TCPIP協(xié)議課件:第12章 TCP_第5頁
已閱讀5頁,還剩63頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、1第12章 TCP協(xié)議概述TCP服務(wù)TCP特點報文段格式TCP連接管理流量控制差錯控制擁塞控制TCP計時器TCP軟件設(shè)計2引言高層應(yīng)用的需求傳輸大量的數(shù)據(jù),要求可靠的通信服務(wù)自身的可靠性機制弱底層網(wǎng)絡(luò)和IP網(wǎng)絡(luò)是不可靠、無連接投遞TCP提供通用的、面向連接的、可靠的通信服務(wù)3協(xié)議概述Transmission Control Protocol,TCPRFC 793,傳輸控制協(xié)議IPLANsMANsWANsICMPIGMPARPRARPNetworkLayerNetworkAccess LayerApplication LayerTCPUDPTransportLayer412.1 TCP服務(wù)進程到

2、進程的通信流交付服務(wù)全雙工通信面向連接服務(wù)可靠服務(wù)512.1.1 進程到進程的通信Internet進程Process進程ProcessIP協(xié)議的作用范圍傳輸層協(xié)議的作用范圍IP地址協(xié)議端口(port)端點(endpoint)6TCP使用的熟知端口號712.1.2 流交付服務(wù)報文交付 Datagram stream單位:報文連續(xù)報文流,報文邊界發(fā)送:報文,前后報文不能合并接收:報文接收的報文:大小和順序嚴格與發(fā)送方相同可靠性:報文按序接收字節(jié)流交付 Byte stream單位:byte連續(xù)字節(jié)流、無邊界發(fā)送:數(shù)據(jù)塊或逐字節(jié),前后可合并接收:數(shù)據(jù)塊或逐字節(jié)接收的字節(jié):順序嚴格與發(fā)送方發(fā)送順序相同可

3、靠性:byte按序接收8流交付服務(wù)9發(fā)送緩存和接收緩存進程使用自己認為適宜的任何大小的數(shù)據(jù)片進行發(fā)送或接收TCP根據(jù)網(wǎng)絡(luò)情況選擇適宜的發(fā)送緩沖區(qū)或接收緩沖區(qū)10報文段1112.1.3 全雙工服務(wù)全雙工服務(wù)DataAcknowledgment捎帶PiggybackingAB12.1.4 面向連接服務(wù)虛電路服務(wù)盡管IP網(wǎng)絡(luò)是無連接的,但在TCP的端點上,卻可看作是面向連接的通信 端到端連接TCPTCPIP網(wǎng)絡(luò)13TCP端口、端點、連接端口、端點概念與方式與UDP完全一樣連接:TCP上通信雙方抽象的虛電路連接202.115.12.680Port: 80Endpoint: (202.115.12.6,

4、 80)202.115.12.3416250Connection: (202.115.12.6, 80) and (202.115.12.34, 16250)1412.1.5 可靠的服務(wù)TCP的可靠性按序無差錯不丟失、不重復(fù)流量控制滑動窗口協(xié)議差錯控制檢測:校驗和、確認、超時糾正:重傳擁塞控制擁塞避免1512.2 編號系統(tǒng)IncisingSegmentDatastreamSendingRecoveringSending bufferReceiving bufferReceivingHHTCP把一個連接中發(fā)送的所有數(shù)據(jù)字節(jié)都編上號在每個方向的編號是相互獨立的TCP產(chǎn)生一個隨機數(shù)作為第一個字節(jié)的編

5、號在0232-1之間16序號(Sequence number)依據(jù)數(shù)據(jù)流中的字節(jié)序號(流序號)序號為報文段中第一個數(shù)據(jù)字節(jié)的流序號如:流序號X,數(shù)據(jù)長度L的報文段則:報文段的序號為X,下一報文段序號為XL特點報文段的順序關(guān)系數(shù)據(jù)流的位置,更便于流的復(fù)原需較大的序號空間(32bit,4Gbyte)序號不連續(xù),n1n2n3確認號(Acknowledgment number)確認機制接收方收到正確的數(shù)據(jù)后,向源站回送ACK報文累計確認ACK number是接收方希望接收的下一個字節(jié)對ACK number以前的所有字節(jié)的確認12.3 報文段格式(0 40 bytes)控制字段Segment標(biāo)識應(yīng)用進程

6、 差錯控制 以字節(jié)為單位完成所有操作 流控 同UDP19控制字段報文段類型、流控、連接建立和拆除URGACKPSHRSTSYNFINURG: Urgent pointer is validACK: Acknowledgment is validPSH: Request for pushRST: Reset the connectionSYN: Synchronize sequence numbersFIN: Terminate the connection20校驗和TCP校驗和的計算過程與UDP相同偽首部 + TCP首部 + 數(shù)據(jù)21選項選項Option單字節(jié)Single-byte多字節(jié)Mul

7、tiple-byte無操作No operation最大報文段長度Max segment size選項結(jié)束End of option窗口比例因子Window scale factor時間戳TimestampRFC 1323最大報文段長度(MSS)MSS影響網(wǎng)絡(luò)傳輸性能太?。航档途W(wǎng)絡(luò)利用率(報文開銷)太大:降低網(wǎng)絡(luò)性能(分片降低成功傳輸概率)最佳MSS理論:盡可能長而不分片實際:不存在通常:發(fā)送端按發(fā)送接口的MTU來確定MSS通信雙方用MSS選項進行MSS值的協(xié)商接收方不能處理較長的報文時(如資源有限等)Code:200000010Length:400000100MSS2 bytes默認值:536

8、 = 576 -20 -2012.4 TCP連接連接的概念由一對端點標(biāo)識:(IP1,port1)-(IP2,port2)連接個數(shù)受機器內(nèi)存容量限制,最多65535個一個機器上某個TCP端口號可被多個連接共享TCP應(yīng)用1應(yīng)用3TCP應(yīng)用2應(yīng)用3ServerClient 2TCP應(yīng)用1Client 1應(yīng)用212.4.1 TCP連接建立主動建立連接(Active open)發(fā)起建立連接,Client被動建立連接(Passive open)接受建立連接,Server被動連接方一般先于主動連接方啟動,但不發(fā)起連接建立過程,而是在某個端口上等待主動方的連接請求TCP連接的任意一方都可以主動打開連接初始序號

9、TCP連接的初始序號值非常關(guān)鍵可以證明:以任意固定值作為初始序號可能會造成TCP的失敗TCP使用隨機的初始序號值雙方都必須知道對方的初始序號才能正常通信雙方都需確認對方得到了自己的初始序號確保把初始序號送到對方使得TCP采用三次握手(three-way handshake)方式建立連接考慮報文丟失、亂序、重復(fù)、延遲的因素最大報文段長度(MSS)MSS影響網(wǎng)絡(luò)傳輸性能太?。航档途W(wǎng)絡(luò)利用率(報文開銷)太大:降低網(wǎng)絡(luò)性能(分片降低成功傳輸概率)最佳MSS理論:盡可能長而不分片實際:不存在通常:發(fā)送端按發(fā)送接口的MTU來確定MSS通信雙方用MSS選項進行MSS值的協(xié)商接收方不能處理較長的報文時(如資源

10、有限等)Code:200000010Length:400000100MSS2 bytes默認值:536 = 576 -20 -20窗口比例因子針對高吞吐量和高時延傳輸介質(zhì)上的數(shù)據(jù)傳輸,增大窗口大小新窗口大小 = 首部中定義的窗口大小 * 2 比例因子比例因子的最大值是16最大窗口大小 = 216 * 216 = 232窗口大小可在數(shù)據(jù)傳輸階段改變,窗口比例因子只能在連接建立階段確定Code:300000011Length:300000011比例因子(1 byte)三次握手:建立連接Segment 1: SYNseq : 1200, ack : -ClientServerSegment 2: S

11、YN+ACKseq : 4800, ack : 1201Segment 3: ACKseq : 1201, ack : 4801Waits for apassive openRequests forAn active openClients wish to make a connectionServers ack. and own requestClients ack. to servers requestData can be sent with the 3rd packetProcedure startswith server12.4.2 數(shù)據(jù)傳送推送數(shù)據(jù)推送數(shù)據(jù)主要用于交互式通信,希望立

12、即得到對方響應(yīng)發(fā)送端TCP設(shè)置控制比特PSH=1,不必等發(fā)送窗口填滿就立即發(fā)送接收端TCP盡快交付給接收應(yīng)用進程緊急數(shù)據(jù)緊急數(shù)據(jù)(out-of-band data,urgent data)提供快速傳遞數(shù)據(jù)的功能,例如:ctrl-c發(fā)送端發(fā)送URG=1的報文段緊急數(shù)據(jù)放在報文段開始,報文段的其余部分可放緩存中的正常數(shù)據(jù)報文段首部的緊急指針字段定義了緊急數(shù)據(jù)的結(jié)束和正常數(shù)據(jù)的開始接收端收到URG=1的報文段,利用緊急指針值從報文段中提取出緊急數(shù)據(jù),不在數(shù)據(jù)流中排隊,直接遞交上層接收緩沖區(qū)urgent12.4.3 TCP連接終止通信是雙向的,但連接的拆除是單向的網(wǎng)絡(luò)上兩個方向所走的路不同報文段從網(wǎng)絡(luò)

13、上陸續(xù)到達主機連接拆除的發(fā)起方只能關(guān)閉自己的發(fā)送方向不能發(fā)送數(shù)據(jù),可接收數(shù)據(jù),可發(fā)送確認接收方向由對方拆除TCPTCP發(fā)送方向接收方向發(fā)送方向接收方向四次握手:拆除連接Segment 1: FINSeq: 2500, ack: 7000Segment 2: ACKSeq: 7000, ack: 2501Segment 4: ACKSeq: 2501, ack: 7001Procedure startswith clientSegment 3: FINSeq: 7000, ack: 2501Clients wishto close theconnectionServers ack.to clie

14、ntsrequestClients ack.to serversrequestServers wishto close theconnectionClientServer12.4.4 TCP連接復(fù)位連接復(fù)位(reset)拒絕連接請求異常終止連接終止空閑連接發(fā)出RST1的報文,立即中止連接(雙向)收到RST1的報文,立即中止連接(雙向)Close/FINFIN/ACKActive open/SYN12.5 TCP狀態(tài)轉(zhuǎn)換圖FIN WAIT-2CLOSINGTIME-WAITLAST ACKFIN/ACKACK/-FIN/ACKACK/-Close/FINFIN+ACK/ACKSYN/SYN+AC

15、K(simultaneous open)RST/-Send/SYNClose/FINClose/FINACK/-SYN/SYN+ACKFIN/ACKSYN+ACK/ACKRST/-Close/-Active open/SYN(Time-out)ACK/-Time-out/RSTClose or time-out/-Passive open/-CLOSEDPassive open/-SYN/SYN+ACKACK/-SYN-RCVDLISTENSYN+ACK/ACKSYN-SENTClose/FINCLOSE WAITACK/-ESTABLISHEDACK/-FIN WAIT-1FIN/ACK(T

16、ime-out)有限狀態(tài)機Finite State Machine直觀、全局、準確的協(xié)議描述方法要素事件觸發(fā)狀態(tài)的轉(zhuǎn)換某些轉(zhuǎn)換不一定產(chǎn)生動作狀態(tài)1狀態(tài)2事件 / 動作思考:根據(jù)TCP狀態(tài)轉(zhuǎn)換圖畫以下時序交互圖通信雙方同時主動打開連接通信雙方同時關(guān)閉連接12.6 流量控制TCP流量控制對源點在收到目的節(jié)點發(fā)來的確認前可以發(fā)送的數(shù)據(jù)進行管制目的收發(fā)速率匹配,防止接收方被數(shù)據(jù)流淹沒提高傳輸效率方法收發(fā)速率匹配 滑動窗口協(xié)議01234567812.6.1 滑動窗口(Sliding Window)窗口發(fā)送方在收到確認前,其發(fā)送緩沖區(qū)中可以發(fā)送的數(shù)據(jù)流長度單位:報文或字節(jié)滑動隨著確認的不斷到達,窗口也不斷

17、的向后移動senderreceiver0910111213141516Window = 512345678ACK1ACK4TCP滑動窗口機制發(fā)送窗口發(fā)送窗口發(fā)送緩沖區(qū)中可以發(fā)送的數(shù)據(jù)流長度應(yīng)用數(shù)據(jù)可一次1或多字節(jié)送交至TCP發(fā)送緩沖區(qū)發(fā)送窗口隨確認過程滑動已發(fā)未確認 等待確認或重發(fā)可以發(fā)送 當(dāng)前仍未發(fā)出,其數(shù)據(jù)將切割成適當(dāng)?shù)膱笪亩魏蟀l(fā)送14131211109876543211615已發(fā)送并確認Sliding window已發(fā)送未確認不能發(fā)送可以發(fā)送指針TCP的接收緩沖區(qū)接收緩沖區(qū)對接收的報文段進行字節(jié)流排序上層可以一次1字節(jié)或多字節(jié)提取字節(jié)流下層(IP層)一個、一個報文段提交給TCP接收緩沖區(qū)

18、已提交已排序未提交零散段部分排序,中間有空缺可用緩沖區(qū)思考:為什么TCP的接收緩沖區(qū)中會有空缺部分?TCP的動態(tài)可變窗口發(fā)送窗口大小動態(tài)可變接收方通告當(dāng)前可用接收緩沖區(qū)大小發(fā)送方用該通告值調(diào)整發(fā)送窗口大小優(yōu)點:更加有效的傳輸,同時還可控制數(shù)據(jù)流量極端情況:接收方通告的可用緩沖區(qū)0發(fā)送方停止發(fā)送重新開始發(fā)送的條件收到窗口值不為0的通告試探性發(fā)送 預(yù)防通告丟失造成的死鎖帶外數(shù)據(jù)ACK報文首部的窗口字段值滑動中調(diào)整窗口管理Segment 1Seq: 1001, 4000BAck: 5001, Win: 0Ack: 5001, Win: 1000400010003000BufferSeq: 5001,

19、 1000BSegment 2SenderReceiverTCP滑窗討論:流量控制發(fā)送緩存、發(fā)送窗口、接收緩存、接收窗口發(fā)送方不一定要發(fā)送整個窗口大小的數(shù)據(jù)窗口大小由接收方調(diào)整,實現(xiàn)流量控制大窗口增加流量小窗口減少流量零窗口暫停發(fā)送接收方可在任何時候發(fā)送確認可能的問題窗口機制不會立即起作用(網(wǎng)絡(luò)緩沖)無法確切知道和防止網(wǎng)絡(luò)中間的擁塞12.6.2 糊涂窗口綜合癥(自學(xué))TCP協(xié)議軟件有較高的性能實際中發(fā)現(xiàn):通信雙方的應(yīng)用進程以不同速率工作時,會出現(xiàn)嚴重的性能問題糊涂窗口綜合癥(Silly Window Syndrome,SWS)RFC 813接收方:確認報文通告小窗口發(fā)送方:報文段攜帶少量數(shù)據(jù)接

20、收方的SWS避免推遲窗口通告通告零窗口之后,在接收窗口顯著增加之前,推遲窗口的通告達到接收緩沖區(qū)的一半或達到最大報文段長度推遲確認推遲確認的發(fā)送直到窗口值增大到一定程度,或有數(shù)據(jù)要發(fā)送,或超時時限快到推遲確認的特點優(yōu)點:降低流量、提高吞吐量收到多個報文段,只需一個確認(累計確認)應(yīng)用程序讀取數(shù)據(jù)處理后,可能馬上產(chǎn)生新的數(shù)據(jù)送到對方,短暫延遲正好可用該數(shù)據(jù)來捎帶應(yīng)答短暫延遲后,也許接收窗口增大到可以通告的程度缺點增加了發(fā)送方的超時重傳可能性使RTT估計值增大,重傳超時增大(反應(yīng)變慢)TCP規(guī)定:最大推遲時間500ms每隔一個報文就應(yīng)至少一次正常應(yīng)答方式發(fā)送方的SWS避免延遲發(fā)送收集應(yīng)用程序的發(fā)送

21、數(shù)據(jù),聚集合理的數(shù)據(jù)量延遲時間長反應(yīng)變慢(如對話應(yīng)用程序)短數(shù)據(jù)量少,吞吐率下降延遲策略:根據(jù)當(dāng)前網(wǎng)絡(luò)性能而定自定時方式,使用確認的到達來觸發(fā)報文的發(fā)送發(fā)送延遲的討論若網(wǎng)絡(luò)性能好,發(fā)送數(shù)據(jù)量大確認很快會到達若網(wǎng)絡(luò)性能差,發(fā)送數(shù)據(jù)量大調(diào)整超時時限,能匹配網(wǎng)絡(luò)的吞吐率若網(wǎng)絡(luò)性能好,發(fā)送數(shù)據(jù)量少傳小報文,對網(wǎng)絡(luò)的影響小,反應(yīng)快捷若網(wǎng)絡(luò)性能差,發(fā)送數(shù)據(jù)量少傳中小報文,效率有所提高,反應(yīng)較快12.7 差錯控制TCP的可靠性按序無差錯不丟失、不重復(fù)差錯控制檢測:校驗和、確認、超時糾正:重傳正確投遞數(shù)據(jù)TCP的確認機制確認機制 帶重傳的肯定確認,Positive acknowledgement with r

22、etransmission接收方收到正確的數(shù)據(jù)后,向源站回送ACK報文發(fā)送方重傳錯誤數(shù)據(jù)(受損報文、丟失報文)累計確認ACK number是接收方希望接收的下一個字節(jié)對ACK number以前的所有字節(jié)的確認問題:發(fā)送方如何判定錯誤數(shù)據(jù)?沒有收到確認問題:發(fā)送方怎樣判定沒有收到確認?超時機制超時重傳機制發(fā)送方發(fā)送數(shù)據(jù)時啟動一個定時器定時期間,發(fā)送方收到確認后,再發(fā)送后續(xù)數(shù)據(jù)定時期滿,發(fā)送方重傳未確認數(shù)據(jù)未確認數(shù)據(jù)受損或丟失的數(shù)據(jù)確認丟失的數(shù)據(jù)受損報文的超時重傳Segment 1Seq: 1201, 200bytesAck: 1601SenderReceiverSegment 2Seq: 140

23、1, 200bytesSegment 3Seq: 1601, 200bytesSegment 3, retransmittedSeq: 1601, 200bytesAck: 1801TimeTime報文段3 受損OKOKOK超時丟失報文的超時重傳Segment 1Seq: 1201, 200bytesAck: 1601SenderReceiverSegment 2Seq: 1401, 200bytesSegment 3Seq: 1601, 200bytesSegment 3, retransmittedSeq: 1601, 200bytesAck: 1801TimeTime報文段3 丟失OKO

24、KOK超時丟失確認Segment 1Seq: 1201, 200bytesAck: 1601SenderReceiverSegment 2Seq: 1401, 200bytesSegment 3Seq: 1601, 200bytesAck: 1801TimeTime確認丟失OKOKOK問題:重復(fù)報文段原因重傳定時器 = RTT 自適應(yīng)超時重傳算法不同的連接傳輸路徑“遠近”差異,時延隨網(wǎng)絡(luò)流量變化的差異 固定超時時限只能使TCP性能更糟超時重傳報文時,后續(xù)的重傳報文“再多等一會兒”,這當(dāng)中也許就收到了確認(考慮時延的不確定性)關(guān)鍵:精確估計當(dāng)前的RTT問題:失序報文段原因封裝TCP報文段的IP數(shù)

25、據(jù)報的獨立選路,不按序到達解決接收方對失序報文段不確認,直到收到所有它以前的報文段為止若確認晚到,發(fā)送方重發(fā)失序報文段,接收方丟棄重復(fù)的報文段12.8 擁塞控制擁塞當(dāng)網(wǎng)絡(luò)負載大于網(wǎng)絡(luò)容量,網(wǎng)絡(luò)中就會發(fā)生擁塞擁塞控制一種使網(wǎng)絡(luò)負載低于網(wǎng)絡(luò)容量的機制產(chǎn)生擁塞的根源路由器和交換機的隊列處理能力出現(xiàn)問題12.8.1 網(wǎng)絡(luò)性能判斷網(wǎng)絡(luò)性能的兩個因素時延(delay)吞吐量(throughput)12.8.2 擁塞控制機制開環(huán)擁塞控制在擁塞發(fā)生之前使用一些策略來預(yù)防擁塞方法:重傳策略、確認策略、丟棄策略閉環(huán)擁塞控制試圖在擁塞發(fā)生后減輕擁塞方法:反壓、阻流點、發(fā)出隱式信號、發(fā)出顯示信號12.8.3 TCP中的擁塞控制TCP的擁塞控制TCP的擁塞表現(xiàn)為時延增加超時重傳機制會進一步加重網(wǎng)絡(luò)擁塞方法:減少報文段的發(fā)送量 基于滑窗協(xié)議TCP中的擁塞控制策略前提假定報文的丟失都是由網(wǎng)絡(luò)擁塞引起的發(fā)送窗口min(窗口通告值rwnd,擁塞窗口cwnd)階段一:慢啟動(Slow Start)- 指數(shù)增大擁塞窗口 = 1個MSS時,每個被確認的報文段,擁塞窗口即發(fā)送窗口增加1個MSS階段二:擁塞避免(congestion avoi

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論