笫二十一講 TCP協(xié)議和UDP協(xié)議.ppt_第1頁
笫二十一講 TCP協(xié)議和UDP協(xié)議.ppt_第2頁
笫二十一講 TCP協(xié)議和UDP協(xié)議.ppt_第3頁
笫二十一講 TCP協(xié)議和UDP協(xié)議.ppt_第4頁
笫二十一講 TCP協(xié)議和UDP協(xié)議.ppt_第5頁
已閱讀5頁,還剩31頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、1,笫二十一講 TCP協(xié)議和UDP協(xié)議,數(shù)據(jù)通信與計(jì)算機(jī)網(wǎng)絡(luò)(第二版),2,本講內(nèi)容,第八章 運(yùn)輸層 8.3 TCP協(xié)議 8.3.1 TCP服務(wù) 8.3.2 TCP協(xié)議 8.3.3 TCP連接管理 8.3.4 TCP流量控制 8.3.5 TCP擁塞控制 8.3.6 TCP計(jì)時(shí)器 8.3.7 UDP協(xié)議,3,8.3 TCP協(xié)議,IP層提供的是無連接的、“盡力而為”的、不可靠的網(wǎng)絡(luò)服務(wù)(C類網(wǎng)絡(luò))。 TCP/IP體系結(jié)構(gòu)中,運(yùn)輸層就是利用IP提供的不可靠的服務(wù)來提供端到端的運(yùn)輸服務(wù)。主要包括: 面向連接的、可靠的TCP協(xié)議 無連接的UDP協(xié)議,4,8.3.1 TCP服務(wù),傳輸控制協(xié)議(Transm

2、ission Control Protocol,TCP)的主要作用是在不可靠的網(wǎng)絡(luò)服務(wù)上為應(yīng)用層提供面向連接的、端到端的可靠字節(jié)流服務(wù)。 RFC 793:基本TCP定義 RFC 1122:修改和改進(jìn) RFC 1323:擴(kuò)展定義 RFC 2018、RFC 2581:最新改進(jìn),5,8.3.1 TCP服務(wù),TCP是一種面向連接的運(yùn)輸協(xié)議,在進(jìn)行數(shù)據(jù)傳輸時(shí)首先必須建立一條運(yùn)輸連接,數(shù)據(jù)傳輸完成之后把連接釋放掉。 TCP連接標(biāo)識(shí) 套接字(Socket):主機(jī)的IP地址和一個(gè)16比特的端口號(hào)(Port)。 TCP端口號(hào) 一條TCP連接是由發(fā)送方套接字和接收方套接字來唯一標(biāo)識(shí)的,即TCP連接用四元組來唯一標(biāo)

3、識(shí)。,6,8.3.1 TCP服務(wù),TCP最初是在Unix環(huán)境下實(shí)現(xiàn)的,它通過Socket調(diào)用來提供服務(wù)。,7,8.3.1 TCP服務(wù),TCP服務(wù)的特征 TCP數(shù)據(jù)傳輸服務(wù)是全雙工的; TCP連接是點(diǎn)對(duì)點(diǎn)的; TCP連接是面向字節(jié)流的; TCP實(shí)體支持?jǐn)?shù)據(jù)緩沖和立即發(fā)送; TCP提供緊急數(shù)據(jù)功能。,8,8.3.2 TCP協(xié)議,TCP PDU稱為TCP數(shù)據(jù)段(Segment) 一個(gè)TCP數(shù)據(jù)段由一個(gè)20字節(jié)的頭部、一個(gè)可選部分、和一個(gè)用戶數(shù)據(jù)部分組成。 整個(gè)TCP段的長(zhǎng)度限制 IP包64K-1(65535)字節(jié)長(zhǎng)度限制; 網(wǎng)絡(luò)MTU(Maximum Transfer Unit,最大傳送單位)限制;

4、 TCP協(xié)議中用戶數(shù)據(jù)大小受MSS(Maximum Segment Size,最大分段大?。┫拗?。,9,8.3.2 TCP協(xié)議,TCP協(xié)議是通過段格式來表達(dá)的。,10,8.3.2 TCP協(xié)議,TCP段的固定頭部長(zhǎng)度為20個(gè)字節(jié),同時(shí)支持最多40個(gè)字節(jié)的TCP選項(xiàng)。 源端口號(hào)(Source Port,16比特)和目的端口號(hào)(Destination Port,16比特):分別表示發(fā)送方和接收方的端口號(hào)。 順序號(hào)(Sequence Number,32比特):該TCP段中攜帶的用戶數(shù)據(jù)中第一個(gè)字節(jié)的編號(hào),編號(hào)是以數(shù)據(jù)字節(jié)為單位的。 確認(rèn)號(hào)(Acknowledgment Number,32比特):對(duì)順序

5、號(hào)之前的數(shù)據(jù)已可靠收到的確認(rèn),即下一個(gè)期望接收的字節(jié)的順序號(hào)。,11,8.3.2 TCP協(xié)議,數(shù)據(jù)偏移(Data Offset,4比特):指示TCP數(shù)據(jù)開始的位置,也即TCP頭部長(zhǎng)度,以32比特為單位。 保留(Reserved,6比特) 控制標(biāo)志(Control Bits,6比特) URG:緊急數(shù)據(jù)標(biāo)志 ACK:確認(rèn)字段有效標(biāo)志 PSH:要求馬上發(fā)送數(shù)據(jù) RST:對(duì)TCP連接進(jìn)行復(fù)位 SYN:建立TCP連接 FIN:連接釋放,12,8.3.2 TCP協(xié)議,窗口大?。╓indow Size,16比特):指示接收方滑動(dòng)窗口的大小,用于實(shí)現(xiàn)TCP流量控制和差錯(cuò)恢復(fù)。 校驗(yàn)和(Checksum,16比

6、特):實(shí)現(xiàn)對(duì)TCP頭部的校驗(yàn)。在計(jì)算檢驗(yàn)和時(shí)包括TCP頭部、用戶數(shù)據(jù)以及一個(gè)TCP偽頭部。 偽頭部格式: 檢驗(yàn)和的計(jì)算:所有16位字以補(bǔ)碼形式相加,然后對(duì)和取反。,13,8.3.2 TCP協(xié)議,緊急指針(Urgent Pointer,16比特):當(dāng)URG位有效時(shí),緊急指針指示緊急數(shù)據(jù)的位置。 選項(xiàng)(Options,變長(zhǎng):040字節(jié)):提供了相應(yīng)的擴(kuò)展機(jī)制,用于實(shí)現(xiàn)除TCP基本頭部指定功能外的擴(kuò)展功能。 選項(xiàng)以8位的字節(jié)為單位,有2種組成情況: 單字節(jié)(類型) 多字節(jié)(類型長(zhǎng)度N個(gè)選項(xiàng)) 如: 類型0 類型1 類型2,14,8.3.2 TCP協(xié)議,填充(Padding,變長(zhǎng)):總是以0作填充,可

7、確保TCP頭部以32比特邊界結(jié)束。 數(shù)據(jù)(Data,變長(zhǎng)):數(shù)據(jù)部分用于傳送TCP用戶數(shù)據(jù)。 由于IP分組長(zhǎng)度的限制(最大64K),因此TCP最大有效數(shù)據(jù)載荷長(zhǎng)度是65535-20-20=65495。,15,8.3.3 TCP連接管理,建立連接 TCP連接建立是一個(gè)不對(duì)稱的過程 一方處于被動(dòng)方式(listen),一方為主動(dòng)方式(connect)。即主動(dòng)方式的客戶方要求和被動(dòng)方式打開的服務(wù)方建立運(yùn)輸連接(通過一系列的消息交換 )。 建立連接就互相確認(rèn)了對(duì)方的初始順序號(hào)(ISN) ISN不是采用固定的取值,以減少前后兩條連接干擾的可能性。,16,8.3.3 TCP連接管理,TCP使用三次握手方法建

8、立連接,17,8.3.3 TCP連接管理,使用三次握手,即使兩臺(tái)主機(jī)同時(shí)想在相同的套接字之間建立一條TCP連接而發(fā)生沖突,也可以正常工作。,18,釋放連接 TCP的正常的連接釋放也采用了三次握手過程。 把TCP連接看成由兩個(gè)方向的單工連接組成:釋放時(shí),兩個(gè)方向的連接都要關(guān)閉。 兩方發(fā)送一個(gè)FIN標(biāo)志置為1的TCP段,表示沒有數(shù)據(jù)要發(fā)送,當(dāng)FIN被確認(rèn)后,那個(gè)方向的連接就被關(guān)閉。 只有當(dāng)兩個(gè)方向的連接均關(guān)閉后,該TCP連接才被完全釋放。 把一個(gè)FIN和ACK合并,就是三次握手過程。,8.3.3 TCP連接管理,19,8.3.3 TCP連接管理,這樣,實(shí)際上就有多種釋放連接的順序: 都能正常工作!

9、 最后的ACK可能丟失帶來的問題 使用超時(shí)計(jì)時(shí)器,FIN,ACK,FIN,ACK,FIN,ACK,FIN,ACK,FIN,ACK,FIN,ACK,FIN,FIN,ACK,ACK,20,TCP連接管理狀態(tài)圖,8.3.3 TCP連接管理,21,8.3.3 TCP連接管理,TCP連接狀態(tài),22,8.3.4 TCP流量控制,為了防止發(fā)送方的數(shù)據(jù)發(fā)送得過快,以致接收方來不及處理的情況。TCP采取一種可變大小的滑動(dòng)窗口機(jī)制來進(jìn)行流量控制。 接收方維護(hù)一個(gè)可變的接收窗口,這是接收方向發(fā)送方指出的目前剩余接收緩沖區(qū)的大?。〝?shù)據(jù)段中的窗口大小字段)。,23,8.3.4 TCP流量控制,接收緩沖區(qū)是環(huán)形、循環(huán)使用

10、的。 接收窗口大小滿足: 其中LastByteRead和LastByteRcvd是接收方定義的兩個(gè)指針,滿足: 發(fā)送方定義變量LastByteSent和LastByteAcked用于發(fā)送控制,滿足: LastByteSent-LastByteAcked即發(fā)送方發(fā)送的但是沒有得到確認(rèn)的數(shù)據(jù)的大小。 探測(cè)(probe)消息,24,8.3.4 TCP流量控制,例,25,8.3.5 TCP擁塞控制,TCP通過擁塞控制來防止網(wǎng)絡(luò)過載。 TCP擁塞控制采用慢啟動(dòng)(slow-start)和擁塞避免(congestion avoidance)的策略。 TCP連接維護(hù)兩個(gè)變量: 擁塞窗口CongWindow 反

11、映了網(wǎng)絡(luò)的容量,限制發(fā)送方向網(wǎng)絡(luò)注入數(shù)據(jù)的速度,這樣發(fā)送方發(fā)送的尚未得到確認(rèn)的數(shù)據(jù)大小必須小于接收窗口和擁塞窗口,即: 慢啟動(dòng)閾值ssthresh 當(dāng)擁塞窗口小于該閾值時(shí)進(jìn)入慢啟動(dòng)階段,而大于時(shí)進(jìn)入擁塞避免階段。,26,8.3.5 TCP擁塞控制,慢啟動(dòng) TCP慢慢探測(cè)以決定網(wǎng)絡(luò)的容量。 初始時(shí) CongWindow設(shè)置為一個(gè)MSS(最大分段大?。?慢啟動(dòng)閾值ssthresh設(shè)置為一個(gè)較高的值(比如接收窗口的大?。?。 每收到一個(gè)確認(rèn)ACK時(shí),就把擁塞窗口大小加1個(gè)MSS大小:CongWindow+=MSS。 這樣實(shí)際的結(jié)果是:擁塞窗口的增加是成指數(shù)增加的。 當(dāng)擁塞窗口超過慢啟動(dòng)閾值ssthr

12、esh時(shí),就進(jìn)入擁塞避免階段。,27,8.3.5 TCP擁塞控制,擁塞避免 不是每收到一個(gè)ACK,就把擁塞窗口增加一個(gè)MSS,而是每個(gè)往返傳輸時(shí)間(Round-Trip Time,RTT)才把擁塞窗口增加一個(gè)MSS。 RTT是動(dòng)態(tài)變化的,在TCP的實(shí)現(xiàn)中通常采用一種變通的方法,每收到一個(gè)不重復(fù)的ACK時(shí),擁塞窗口按照如下公式增加: 這樣擁塞窗口緩慢、線性地增加,直到出現(xiàn)擁塞。,28,8.3.5 TCP擁塞控制,出現(xiàn)擁塞 發(fā)送方TCP段超時(shí),需要重傳。 這時(shí),慢啟動(dòng)閾值ssthresh縮減為擁塞窗口的一半,并且擁塞窗口恢復(fù)到原來的初始窗口大小,并且進(jìn)入慢啟動(dòng)過程,重新探測(cè)目前網(wǎng)絡(luò)的狀況。 空閑后

13、的擁塞窗口 TCP連接空閑較長(zhǎng)一段時(shí)間后,在重新開始傳輸數(shù)據(jù)時(shí)進(jìn)入如同擁塞后的慢啟動(dòng)過程。,29,8.3.5 TCP擁塞控制,TCP的擁塞窗口機(jī)制中的各個(gè)階段的示意圖,30,8.3.6 TCP計(jì)時(shí)器,重傳計(jì)時(shí)器(Retransmission Timer) 一般情況下,一個(gè)TCP段發(fā)送后啟動(dòng)這個(gè)計(jì)時(shí)器,如果在計(jì)時(shí)器超時(shí)前收到這個(gè)TCP段的確認(rèn),則停止該計(jì)時(shí)器,否則,重新發(fā)送該TCP段。 超時(shí)應(yīng)該多久呢? 太長(zhǎng):低效(延時(shí)長(zhǎng),帶寬利用率低) 太短:造成不必要的重傳(占用額外的帶寬) TCP采用的是一種自適應(yīng)的重傳計(jì)時(shí)策略。,31,8.3.6 TCP計(jì)時(shí)器,TCP重傳計(jì)時(shí)器基于RTT 對(duì)于每一條TC

14、P連接,TCP維護(hù)一個(gè)變量EstimatedRTT,用于存放所估計(jì)的到目的端的往返傳輸時(shí)間。 每次發(fā)送一個(gè)TCP段時(shí)記錄下這個(gè)時(shí)刻,當(dāng)對(duì)TCP段的確認(rèn)回來后就可以計(jì)算該段的往返傳輸時(shí)間SampleRTT,然后修正EstimatedRTT: 其中為修正因子,決定了以前估計(jì)的RTT的權(quán)重,一般取值為7/8。,32,8.3.6 TCP計(jì)時(shí)器,一個(gè)問題:如果TCP段超時(shí)并重傳時(shí)怎么辦? Karn方法 Jacobson進(jìn)一步改進(jìn),以適應(yīng)RTT經(jīng)常發(fā)生變化的情況。 使用平均偏差Deviation: 其中為x修正因子。 最后的超時(shí)間隔考慮到估計(jì)的往返傳輸時(shí)間和偏差的影響:,33,8.3.6 TCP計(jì)時(shí)器,保

15、持計(jì)時(shí)器(Persistence Timer) 如果發(fā)送窗口大小為0的ACK后,該TCP接收進(jìn)程發(fā)現(xiàn)可以繼續(xù)接收對(duì)方的數(shù)據(jù),這時(shí)需要發(fā)送窗口大小為一定值的ACK,但是這個(gè)ACK由于某種原因而被丟失,如果沒有相應(yīng)的措施,那么就會(huì)發(fā)生死鎖。 解決的辦法就是采用保持計(jì)時(shí)器,當(dāng)這個(gè)計(jì)時(shí)器超時(shí)后還未收到對(duì)方的數(shù)據(jù),則可以認(rèn)為這個(gè)ACK被丟失,并且重新發(fā)送該ACK段。 其它計(jì)時(shí)器,34,8.3.7 UDP協(xié)議,用戶數(shù)據(jù)報(bào)(User Datagram Protocol,UDP)協(xié)議,是一種無連接方式的、不可靠的運(yùn)輸協(xié)議。 不需要連接建立和釋放; 不支持流量控制、擁塞控制; 傳輸過程中可能會(huì)丟失,可能會(huì)失序,可能會(huì)延遲等; 支持廣播和組播。 UDP實(shí)際上是在IP層上附加了簡(jiǎn)單的多路復(fù)用功能,提供端到端的數(shù)據(jù)傳輸服務(wù)。,35,8.3.7 UDP協(xié)議,UDP協(xié)議段格式 源端口和目的端口:同TCP。 長(zhǎng)度:包括了固定長(zhǎng)度的UDP頭部和攜帶的用戶數(shù)據(jù)。 檢驗(yàn)和:計(jì)算同TCP。,36,練習(xí)題,8.15為什么TCP協(xié)議的序號(hào)是對(duì)每一個(gè)TCP數(shù)據(jù)字節(jié)都要進(jìn)行編號(hào)? 8.22假設(shè)一個(gè)應(yīng)用程序要通過一個(gè)TCP連接發(fā)送一L字節(jié)的消息。TCP段包括了20字節(jié)的頭部,IP頭部字段為20字節(jié)。IP分組然后封裝

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論