版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、1第7章 傳輸層協(xié)議7.1 進(jìn)程間通信進(jìn)程間通信7.2 TCP段格式段格式7.3 TCP連接的建立和拆除連接的建立和拆除7.4 TCP流量控制流量控制7.5 TCP擁塞控制擁塞控制7.6 TCP差錯控制差錯控制7.7 TCP狀態(tài)轉(zhuǎn)換圖狀態(tài)轉(zhuǎn)換圖7.8 用戶數(shù)據(jù)報協(xié)議用戶數(shù)據(jù)報協(xié)議UDP27.1 進(jìn)程間通信進(jìn)程間通信 由于在一臺計算機(jī)中同時存在多個進(jìn)程,要由于在一臺計算機(jī)中同時存在多個進(jìn)程,要進(jìn)行進(jìn)程間的通信,進(jìn)行進(jìn)程間的通信,首先要解決進(jìn)程的標(biāo)識首先要解決進(jìn)程的標(biāo)識問題問題。TCPTCP和和UDPUDP采用協(xié)議采用協(xié)議端口端口來標(biāo)識某一主來標(biāo)識某一主機(jī)上的通信進(jìn)程。機(jī)上的通信進(jìn)程。 必須給出必
2、須給出全局惟一全局惟一的信宿端的進(jìn)程標(biāo)識符。的信宿端的進(jìn)程標(biāo)識符。主機(jī)可以用主機(jī)可以用IPIP地址進(jìn)行標(biāo)識地址進(jìn)行標(biāo)識,IPIP地址是全局地址是全局惟一的,再給主機(jī)上的進(jìn)程賦予一個惟一的,再給主機(jī)上的進(jìn)程賦予一個本地惟本地惟一的標(biāo)識符一的標(biāo)識符端口號端口號,二者加起來,便形成,二者加起來,便形成了進(jìn)程的全局惟一標(biāo)識符。了進(jìn)程的全局惟一標(biāo)識符。3 端口端口:傳輸層服務(wù)訪問點:傳輸層服務(wù)訪問點TSAP。 從內(nèi)部實現(xiàn)看,端口是一種從內(nèi)部實現(xiàn)看,端口是一種抽象的軟件結(jié)構(gòu)抽象的軟件結(jié)構(gòu)(數(shù)據(jù)數(shù)據(jù)結(jié)構(gòu)和結(jié)構(gòu)和I/O緩沖區(qū)緩沖區(qū)) 從通信對方看,端口是從通信對方看,端口是通信進(jìn)程的標(biāo)識通信進(jìn)程的標(biāo)識,應(yīng)用進(jìn)
3、,應(yīng)用進(jìn)程通過系統(tǒng)調(diào)用與端口建立關(guān)聯(lián)后,傳輸層傳給程通過系統(tǒng)調(diào)用與端口建立關(guān)聯(lián)后,傳輸層傳給該端口的數(shù)據(jù)都會被相應(yīng)的應(yīng)用進(jìn)程所接收該端口的數(shù)據(jù)都會被相應(yīng)的應(yīng)用進(jìn)程所接收 從本地應(yīng)用進(jìn)程看,端口是進(jìn)程從本地應(yīng)用進(jìn)程看,端口是進(jìn)程訪問傳輸服務(wù)的訪問傳輸服務(wù)的入口點入口點。 每個端口擁有一個每個端口擁有一個端口號端口號(port number),),端口號是端口號是16比特比特的標(biāo)識符,因此,端口號的的標(biāo)識符,因此,端口號的取值范圍是從取值范圍是從0到到65535。 端口分配端口分配有兩種基本的方式:全局端口分配有兩種基本的方式:全局端口分配和本地端口分配。和本地端口分配。4 TCP和和UDP都是都
4、是提供進(jìn)程通信能力提供進(jìn)程通信能力的傳輸層協(xié)議,的傳輸層協(xié)議,各各有一套有一套端口號,都是從端口號,都是從0到到65535。 同一個端口在同一個端口在TCP和和UDP中可能對應(yīng)于中可能對應(yīng)于不同不同類型的應(yīng)類型的應(yīng)用進(jìn)程,也可能對應(yīng)于用進(jìn)程,也可能對應(yīng)于相同相同類型的應(yīng)用進(jìn)程。為了區(qū)類型的應(yīng)用進(jìn)程。為了區(qū)別別TCP和和UDP的進(jìn)程,除了給出主機(jī)的進(jìn)程,除了給出主機(jī)IP地址和端口號地址和端口號之外,還要之外,還要指明協(xié)議指明協(xié)議。 因特網(wǎng)中要全局惟一地標(biāo)識一個進(jìn)程必須采用一個因特網(wǎng)中要全局惟一地標(biāo)識一個進(jìn)程必須采用一個三三元組元組:(協(xié)議,主機(jī)地址,端口號):(協(xié)議,主機(jī)地址,端口號) 網(wǎng)絡(luò)通信
5、是兩個網(wǎng)絡(luò)通信是兩個進(jìn)程之間的通信進(jìn)程之間的通信,兩個通信的進(jìn)程構(gòu),兩個通信的進(jìn)程構(gòu)成一個成一個關(guān)聯(lián)關(guān)聯(lián)。這個關(guān)聯(lián)應(yīng)該包含兩個三元組,由于通。這個關(guān)聯(lián)應(yīng)該包含兩個三元組,由于通信雙方采用的協(xié)議必須是相同的,可以用一個信雙方采用的協(xié)議必須是相同的,可以用一個五元組五元組來描述兩個進(jìn)程的關(guān)聯(lián):(協(xié)議來描述兩個進(jìn)程的關(guān)聯(lián):(協(xié)議,本地主機(jī)地址本地主機(jī)地址,本地端本地端口號口號,遠(yuǎn)地主機(jī)地址遠(yuǎn)地主機(jī)地址,遠(yuǎn)地端口號)遠(yuǎn)地端口號) 5 因特網(wǎng)通信進(jìn)程間的因特網(wǎng)通信進(jìn)程間的相互作用模式相互作用模式:客戶客戶/服務(wù)服務(wù)器模型器模型??蛻?。客戶/服務(wù)器模型相互服務(wù)器模型相互作用的過程作用的過程是:是:客戶向服
6、務(wù)器發(fā)出服務(wù)請求,服務(wù)器完成客戶客戶向服務(wù)器發(fā)出服務(wù)請求,服務(wù)器完成客戶所要求的操作,然后給出響應(yīng)。所要求的操作,然后給出響應(yīng)。 服務(wù)器一般先于客戶端啟動,為了讓客戶能夠服務(wù)器一般先于客戶端啟動,為了讓客戶能夠找到服務(wù)器,服務(wù)器必須使用一個找到服務(wù)器,服務(wù)器必須使用一個客戶熟知的客戶熟知的地址地址,客戶可以根據(jù)此地址向服務(wù)器提出服務(wù),客戶可以根據(jù)此地址向服務(wù)器提出服務(wù)請求。請求。 熟知地址的含義:熟知地址的含義:協(xié)議協(xié)議是雙方約定的協(xié)議,主是雙方約定的協(xié)議,主機(jī)機(jī)IP地址地址是固定且公開的,是固定且公開的,端口號端口號是大家所熟是大家所熟知的。知的。6 每一個標(biāo)準(zhǔn)的服務(wù)器都擁有一個熟知的端口號
7、,每一個標(biāo)準(zhǔn)的服務(wù)器都擁有一個熟知的端口號,不同主機(jī)上相同服務(wù)器的端口號是相同的??筒煌鳈C(jī)上相同服務(wù)器的端口號是相同的??蛻暨M(jìn)程一般采用戶進(jìn)程一般采用臨時端口號臨時端口號,而不采用熟知的,而不采用熟知的端口號。臨時端口是使用時向操作系統(tǒng)端口號。臨時端口是使用時向操作系統(tǒng)申請申請,由操作系統(tǒng)由操作系統(tǒng)分配分配,使用使用完后再完后再交交由操作系統(tǒng)管由操作系統(tǒng)管理的端口。因此,只要同一時間同一主機(jī)上的理的端口。因此,只要同一時間同一主機(jī)上的應(yīng)用進(jìn)程數(shù)量不超過可分配的臨時端口數(shù)量就應(yīng)用進(jìn)程數(shù)量不超過可分配的臨時端口數(shù)量就能保證系統(tǒng)的正常運行。能保證系統(tǒng)的正常運行。 熟知端口所占端口號不多,以全局方式
8、進(jìn)行分熟知端口所占端口號不多,以全局方式進(jìn)行分配。配。TCP和和UDP規(guī)定,規(guī)定,小于小于1024的端口號用的端口號用作熟知端口,熟知端口又稱為作熟知端口,熟知端口又稱為保留端口保留端口。7 從從1024到到65535編號的端口為臨時端口,編號的端口為臨時端口,臨時端口又稱為臨時端口又稱為自由端口自由端口。臨時端口占。臨時端口占全部端口的絕大部分,以本地方式進(jìn)行全部端口的絕大部分,以本地方式進(jìn)行分配。當(dāng)進(jìn)程要與遠(yuǎn)地進(jìn)程通信時,首分配。當(dāng)進(jìn)程要與遠(yuǎn)地進(jìn)程通信時,首先申請一個臨時端口,然后根據(jù)全局分先申請一個臨時端口,然后根據(jù)全局分配的熟知端口號與遠(yuǎn)地服務(wù)器建立聯(lián)系,配的熟知端口號與遠(yuǎn)地服務(wù)器建立
9、聯(lián)系,傳輸數(shù)據(jù)。傳輸數(shù)據(jù)。 TCP/IP結(jié)合了兩種端口分配方式結(jié)合了兩種端口分配方式,既保,既保證了靈活性,又方便了建立通信進(jìn)程間證了靈活性,又方便了建立通信進(jìn)程間的聯(lián)系。的聯(lián)系。801023Well-known102449151Registered4915265535Dynamic9 TCP要將數(shù)據(jù)分為分組,要將數(shù)據(jù)分為分組,TCP所采用的分組稱所采用的分組稱為為TCP段。段。TCP段不定長段不定長,被封裝在,被封裝在IP數(shù)據(jù)報數(shù)據(jù)報中傳輸。中傳輸。IP數(shù)據(jù)報不能保證數(shù)據(jù)的按序到達(dá),數(shù)據(jù)報不能保證數(shù)據(jù)的按序到達(dá),還可能造成數(shù)據(jù)的丟失或毀壞,這些問題經(jīng)過還可能造成數(shù)據(jù)的丟失或毀壞,這些問題經(jīng)過
10、TCP協(xié)議的處理后,對上層提供的是協(xié)議的處理后,對上層提供的是可靠的無可靠的無差錯的服務(wù)差錯的服務(wù)。 圖 8-1 進(jìn)程標(biāo)識與流傳輸 | | UDP 字節(jié)流 | | | | TCP |53068| | | TCP | 23 | | | UDP | | 臨時端口 熟知端口 Telnet 客戶 Telnet 服務(wù)器 IP 地址:192.168.1.2 IP 地址:192.168.6.4 主機(jī) A 主機(jī) B 返回返回107.2 TCP段格式段格式TCP將應(yīng)用層的數(shù)據(jù)分塊并封裝成將應(yīng)用層的數(shù)據(jù)分塊并封裝成TCP段進(jìn)行段進(jìn)行發(fā)送。發(fā)送。TCP段段=段首部段首部+數(shù)據(jù)數(shù)據(jù) 段首部段首部(20到到60字節(jié)字節(jié)
11、)=定長部分定長部分+變長部分變長部分 定長部分定長部分長度:長度:20字節(jié)字節(jié) 變長部分變長部分=選項選項+填充,長度填充,長度:0到到40字節(jié)之間。字節(jié)之間。TCP段格式中各個字段的含義和作用:段格式中各個字段的含義和作用:11 源 端 口(16 比特) 目 的 端 口(16 比特) 序 號 (32 比特) 確 認(rèn) 號 (32 比特) HLEN (4比特) 保留 (6 比特) U R G A C K P S H R S T S Y N F I N 窗 口 大 ?。?6 比特) 校 驗 和(16 位) 緊急指針(16 比特) 選 項 與 填 充(40 字節(jié)) 數(shù) 據(jù)(必須填充成 16 比特的
12、整數(shù)倍) 首部 圖 8-2 TCP 段格式 0 16 31 12 源 IP 地 址(32 比特) 目 的 IP 地 址(32 比特) 全 0(8 比特) 協(xié)議(8 比特) TCP 總長度 (16 比特) 圖 8-3 TCP 偽首部格式 0 8 31 16 TCP偽首部的偽首部的信息來自信息來自IP數(shù)據(jù)報的首部數(shù)據(jù)報的首部,協(xié)議字,協(xié)議字段指明當(dāng)前協(xié)議為段指明當(dāng)前協(xié)議為TCP(6)。TCP段的發(fā)送端和段的發(fā)送端和接收端在計算校驗和時都會加上偽首部信息。若接收端在計算校驗和時都會加上偽首部信息。若接收端驗證校驗和是正確的,則說明數(shù)據(jù)到達(dá)了接收端驗證校驗和是正確的,則說明數(shù)據(jù)到達(dá)了正確主機(jī)上正確協(xié)議
13、的正確端口正確主機(jī)上正確協(xié)議的正確端口。13 TCP選項選項是變長字段,當(dāng)前是變長字段,當(dāng)前TCP使用的選項:使用的選項: 圖 8-4 TCP 選項格式 選項結(jié)束 無操作 00000000 代碼 00000001 00000010 00000100 最大段大小 2 字節(jié) 00000011 00000011 規(guī)模因子 最大段大小 窗口規(guī)模因子 時間戳 00001000 00001010 時間戳值 時間戳回顯應(yīng)答 長度 選項結(jié)束選項結(jié)束標(biāo)志為單字節(jié)選項,代碼為標(biāo)志為單字節(jié)選項,代碼為0,用于,用于表示選項結(jié)束。表示選項結(jié)束。14 無操作無操作選項為選項為單字節(jié)選項單字節(jié)選項,代碼為,代碼為1,用于
14、選,用于選項的填充,實現(xiàn)項的填充,實現(xiàn)32位對齊。位對齊。 最大段大小最大段大?。∕SS)選項為)選項為多字節(jié)選項多字節(jié)選項,代,代碼為碼為2,長度為,長度為4字節(jié),最后兩個字節(jié)用于標(biāo)字節(jié),最后兩個字節(jié)用于標(biāo)識本機(jī)能夠接收的段的最大字節(jié)數(shù)。該值范識本機(jī)能夠接收的段的最大字節(jié)數(shù)。該值范圍為圍為0到到65535,默認(rèn)值為,默認(rèn)值為536。 窗口規(guī)模因子窗口規(guī)模因子選項為多字節(jié)選項,代碼為選項為多字節(jié)選項,代碼為3,長度為長度為3字節(jié)。在字節(jié)。在TCP段的首部存在段的首部存在16比特的比特的窗口大小字段,但在高吞吐和低延遲的網(wǎng)絡(luò)窗口大小字段,但在高吞吐和低延遲的網(wǎng)絡(luò)中,中,65535字節(jié)的窗口仍然嫌
15、小。通過在選項字節(jié)的窗口仍然嫌小。通過在選項中采用窗口規(guī)模因子,可以增加窗口的大小。中采用窗口規(guī)模因子,可以增加窗口的大小。擴(kuò)展后的窗口大小為:擴(kuò)展后的窗口大小為:Wn=Wo2f Wn為新的窗口大小,為新的窗口大小,Wo為為TCP首部窗口大首部窗口大小字段的值,小字段的值,f為窗口規(guī)模因子。為窗口規(guī)模因子。 15 時間戳?xí)r間戳選項為多字節(jié)選項,選項為多字節(jié)選項,代碼為代碼為8,長長度為度為10字節(jié)字節(jié)。時間戳值字段由源端在發(fā)。時間戳值字段由源端在發(fā)送數(shù)據(jù)段時填寫,信宿端收到后,在確送數(shù)據(jù)段時填寫,信宿端收到后,在確認(rèn)數(shù)據(jù)段中將收到的時間戳值填入時間認(rèn)數(shù)據(jù)段中將收到的時間戳值填入時間戳回顯應(yīng)答字
16、段,信源端根據(jù)該時間戳戳回顯應(yīng)答字段,信源端根據(jù)該時間戳值和當(dāng)前時間戳可以計算出數(shù)據(jù)段的往值和當(dāng)前時間戳可以計算出數(shù)據(jù)段的往返時間。返時間。返回返回167.3 TCP連接的建立和拆除連接的建立和拆除7.3.1 TCP連接的建立連接的建立 為了實現(xiàn)數(shù)據(jù)的為了實現(xiàn)數(shù)據(jù)的可靠傳輸可靠傳輸,TCP要在應(yīng)用進(jìn)要在應(yīng)用進(jìn)程間建立傳輸程間建立傳輸連接連接。 從理論上講,建立傳輸連接只需要一個請求從理論上講,建立傳輸連接只需要一個請求和一個響應(yīng)就可以了。但是由于通信子網(wǎng)的和一個響應(yīng)就可以了。但是由于通信子網(wǎng)的問題,請求有可能丟失,為了解決請求的丟問題,請求有可能丟失,為了解決請求的丟失問題,常用的辦法是失問題
17、,常用的辦法是超時重傳超時重傳。 客戶發(fā)出連接請求時,啟動一個客戶發(fā)出連接請求時,啟動一個定時器定時器,一,一旦定時器超時,客戶將被迫再次發(fā)起連接請旦定時器超時,客戶將被迫再次發(fā)起連接請求,會導(dǎo)致求,會導(dǎo)致重復(fù)連接重復(fù)連接。 17 解決解決重復(fù)連接的辦法:三次握手方法。重復(fù)連接的辦法:三次握手方法。 三次握手方法要求三次握手方法要求對所有報文進(jìn)行編號對所有報文進(jìn)行編號,TCP采用的方法是給采用的方法是給每個字節(jié)一個每個字節(jié)一個32比特的比特的序號序號。 每次建立連接時都產(chǎn)生一個新的每次建立連接時都產(chǎn)生一個新的初始序號初始序號。 序號字段位數(shù)序號字段位數(shù)定定長,序號循環(huán)使用,序號字長,序號循環(huán)使
18、用,序號字段段位數(shù)較長位數(shù)較長,當(dāng)序號循環(huán)一周回來時,使用,當(dāng)序號循環(huán)一周回來時,使用同一序號的舊報文段早已傳輸完。這樣,保同一序號的舊報文段早已傳輸完。這樣,保證網(wǎng)絡(luò)中不會同時出現(xiàn)來自同一源主機(jī)的相證網(wǎng)絡(luò)中不會同時出現(xiàn)來自同一源主機(jī)的相同序號的兩個不同報文段。同序號的兩個不同報文段。 18 建立連接前,建立連接前,服務(wù)器端服務(wù)器端首先被動打開其熟知的端口,首先被動打開其熟知的端口,對端口進(jìn)行對端口進(jìn)行監(jiān)聽監(jiān)聽。當(dāng)。當(dāng)客戶端客戶端要和服務(wù)器建立連接時,要和服務(wù)器建立連接時,發(fā)起一個發(fā)起一個主動打開端口主動打開端口的請求(臨時端口)。然后進(jìn)的請求(臨時端口)。然后進(jìn)入入三次握手過程三次握手過程:
19、 第一次握手第一次握手:由要建立連接的客戶向服務(wù)器發(fā)出連接:由要建立連接的客戶向服務(wù)器發(fā)出連接請求段,該段首部的請求段,該段首部的同步標(biāo)志同步標(biāo)志SYN被置為被置為1,并在首,并在首部中填入本次連接的客戶端的部中填入本次連接的客戶端的初始段序號初始段序號SEQ(例如(例如SEQ=26500)。)。 第二次握手第二次握手:服務(wù)器收到請求后,發(fā)回:服務(wù)器收到請求后,發(fā)回連接確認(rèn)連接確認(rèn)(SYN+ACK),該段首部中的同步標(biāo)志),該段首部中的同步標(biāo)志SYN被置為被置為1,表示認(rèn)可連接,首部中的確認(rèn)標(biāo)志,表示認(rèn)可連接,首部中的確認(rèn)標(biāo)志ACK被置為被置為1,表示對所接收的段的確認(rèn),與表示對所接收的段的確
20、認(rèn),與ACK標(biāo)志相配合的是準(zhǔn)標(biāo)志相配合的是準(zhǔn)備接收的備接收的下一序號下一序號(ACK 26501),該段還給出了自),該段還給出了自己的己的初始序號初始序號(例如(例如SEQ=29010)。對請求段的確)。對請求段的確認(rèn)認(rèn)完成了一個方向上連接完成了一個方向上連接。19 第三次握手第三次握手:客戶向服務(wù)器發(fā)出的:客戶向服務(wù)器發(fā)出的確認(rèn)確認(rèn)段,段,段首部中的確認(rèn)標(biāo)志段首部中的確認(rèn)標(biāo)志ACK被置為被置為1,表示對所,表示對所接收的段的確認(rèn),與接收的段的確認(rèn),與ACK標(biāo)志相配合的準(zhǔn)備標(biāo)志相配合的準(zhǔn)備接收的下一序號被設(shè)置為收到的段序號加接收的下一序號被設(shè)置為收到的段序號加1(ACK 29011)。完成了
21、另一個方向上的連接。完成了另一個方向上的連接。 客戶 服務(wù)器 SYN,SEQ=26500 ACK 26501,SYN,SEQ=29010 圖 8-5 三次握手建立連接 ACK 29011 時間 時間 207.3.2 TCP連接的拆除連接的拆除 連接連接雙方都可以發(fā)起拆除雙方都可以發(fā)起拆除連接操作。連接操作。 簡單地拆除連接可能會造成數(shù)據(jù)丟失簡單地拆除連接可能會造成數(shù)據(jù)丟失。例如,。例如,A、B兩主機(jī)已建立連接并傳輸報文,兩主機(jī)已建立連接并傳輸報文,A主機(jī)在主機(jī)在B主機(jī)沒有主機(jī)沒有準(zhǔn)備的情況下,單方面發(fā)出斷開連接請求,并停止準(zhǔn)備的情況下,單方面發(fā)出斷開連接請求,并停止接收該連接上的數(shù)據(jù)。但斷開連
22、接請求的傳輸要有接收該連接上的數(shù)據(jù)。但斷開連接請求的傳輸要有一段時間,而在一段時間,而在B主機(jī)未收到斷開連接請求之前,隨主機(jī)未收到斷開連接請求之前,隨時可能向時可能向A主機(jī)發(fā)送數(shù)據(jù),會有丟失數(shù)據(jù)的可能性。主機(jī)發(fā)送數(shù)據(jù),會有丟失數(shù)據(jù)的可能性。 主機(jī) A 請求斷開連接 圖 8-6 簡單斷開連接可能丟失數(shù)據(jù) 時間 時間 主機(jī) B 數(shù)據(jù) 21 解決解決:TCP采用和三次握手類似的方法。這里可以將采用和三次握手類似的方法。這里可以將斷開連接操作視為在斷開連接操作視為在兩個方向上分別斷開連接操作兩個方向上分別斷開連接操作構(gòu)構(gòu)成。一方發(fā)出斷開連接請求后并不馬上拆除連接,而成。一方發(fā)出斷開連接請求后并不馬上拆
23、除連接,而是等待對方的確認(rèn),對方收到斷開連接請求后,發(fā)送是等待對方的確認(rèn),對方收到斷開連接請求后,發(fā)送確認(rèn)報文,這時拆除的只是單方向上連接(半連接)。確認(rèn)報文,這時拆除的只是單方向上連接(半連接)。對方發(fā)送完數(shù)據(jù)后,再通過發(fā)送斷開連接請求來斷開對方發(fā)送完數(shù)據(jù)后,再通過發(fā)送斷開連接請求來斷開另一個方向上的半連接。另一個方向上的半連接。 主機(jī) A FIN,SEQ=32630 ACK 32631 圖 8-7 拆除 TCP 連接 時間 時間 主機(jī) B FIN,SEQ=24122,ACK 32631 ACK 24123 關(guān)閉 半連接 關(guān)閉 半連接 返回返回227.4 TCP流量控制流量控制 TCP除了提
24、供除了提供進(jìn)程通信能力進(jìn)程通信能力外,主要特點是外,主要特點是具有具有高可靠性高可靠性。TCP在發(fā)送端與接收端之間在發(fā)送端與接收端之間建立一條連接,報文需要得到建立一條連接,報文需要得到接收端的確認(rèn)接收端的確認(rèn)。TCP傳輸?shù)氖且粋€無報文丟失、重復(fù)和失序傳輸?shù)氖且粋€無報文丟失、重復(fù)和失序的正確的數(shù)據(jù)流。的正確的數(shù)據(jù)流。 TCP采用的最基本的采用的最基本的可靠性技術(shù)可靠性技術(shù):流量控制流量控制擁塞控制擁塞控制差錯控制差錯控制23 問題問題:在面向連接的傳輸過程中,發(fā)送方與:在面向連接的傳輸過程中,發(fā)送方與接收方在發(fā)送報文的速率方面接收方在發(fā)送報文的速率方面要協(xié)調(diào)一致要協(xié)調(diào)一致。若發(fā)送方一味地向網(wǎng)絡(luò)
25、注入數(shù)據(jù),則可能造若發(fā)送方一味地向網(wǎng)絡(luò)注入數(shù)據(jù),則可能造成網(wǎng)絡(luò)擁塞或因接收方來不及處理而丟失數(shù)成網(wǎng)絡(luò)擁塞或因接收方來不及處理而丟失數(shù)據(jù)。據(jù)。若發(fā)送方每發(fā)出一個報文都等待對方的確認(rèn),若發(fā)送方每發(fā)出一個報文都等待對方的確認(rèn),勢必造成效率低下。勢必造成效率低下。 解決解決:滑動窗口協(xié)議滑動窗口協(xié)議。采用滑動窗口協(xié)議既。采用滑動窗口協(xié)議既能夠能夠保證可靠性保證可靠性,又可以,又可以充分利用網(wǎng)絡(luò)的傳充分利用網(wǎng)絡(luò)的傳輸能力輸能力。這種方案允許。這種方案允許連續(xù)傳輸多個報文連續(xù)傳輸多個報文而而不必等待各個報文的確認(rèn),能夠連續(xù)發(fā)送的不必等待各個報文的確認(rèn),能夠連續(xù)發(fā)送的報文數(shù)受到報文數(shù)受到窗口大小的限制窗口大
26、小的限制。 24 滑動窗口協(xié)議通過發(fā)送方窗口和接收方窗口滑動窗口協(xié)議通過發(fā)送方窗口和接收方窗口的配合來完成傳輸控制。的配合來完成傳輸控制。 圖 8-8 TCP 連接發(fā)送方緩存與窗口 19 20 21 22 23 24 25 26 27 28 29 30 31 已發(fā)送 并已確認(rèn) 已發(fā)送 但未確認(rèn) 可以連續(xù)發(fā)送 發(fā)送窗口 發(fā)送方緩存 暫不能發(fā)送 發(fā)送緩存中是一組順序編號的字節(jié)數(shù)據(jù),這些數(shù)發(fā)送緩存中是一組順序編號的字節(jié)數(shù)據(jù),這些數(shù)據(jù)的一部分在據(jù)的一部分在發(fā)送窗口發(fā)送窗口中,另一部分在發(fā)送窗口中,另一部分在發(fā)送窗口外。圖中發(fā)送緩存左端和右端空白處表示可以填外。圖中發(fā)送緩存左端和右端空白處表示可以填入數(shù)
27、據(jù)的空閑緩存,實際上可以將緩存視為左端入數(shù)據(jù)的空閑緩存,實際上可以將緩存視為左端和右端相連的環(huán)。和右端相連的環(huán)。25一旦窗口內(nèi)的部分?jǐn)?shù)據(jù)得到確認(rèn),窗口便向右一旦窗口內(nèi)的部分?jǐn)?shù)據(jù)得到確認(rèn),窗口便向右滑動,將已確認(rèn)的數(shù)據(jù)移到窗口的外面。這些滑動,將已確認(rèn)的數(shù)據(jù)移到窗口的外面。這些數(shù)據(jù)所對應(yīng)的緩沖單元成為空閑單元。窗口右數(shù)據(jù)所對應(yīng)的緩沖單元成為空閑單元。窗口右邊沿的移動使新的數(shù)據(jù)又落入到窗口中,成為邊沿的移動使新的數(shù)據(jù)又落入到窗口中,成為可以被連續(xù)發(fā)送的數(shù)據(jù)的一部分??梢员贿B續(xù)發(fā)送的數(shù)據(jù)的一部分。 接收方的窗口接收方的窗口反映當(dāng)前能夠接收的數(shù)據(jù)的數(shù)反映當(dāng)前能夠接收的數(shù)據(jù)的數(shù)量。圖量。圖8-9給出了接
28、收方緩存與窗口的示意圖。給出了接收方緩存與窗口的示意圖。 圖 8-9 TCP 連接接收方緩存與窗口 19 20 21 22 已提交 占據(jù)緩存的 數(shù)據(jù) N 字節(jié) 空閑 接收方緩存大小 M 26 接收端窗口的大小接收端窗口的大小W對應(yīng)接收端緩存可以繼續(xù)對應(yīng)接收端緩存可以繼續(xù)接收的數(shù)據(jù)量,它等于接收緩存大小接收的數(shù)據(jù)量,它等于接收緩存大小M減去緩減去緩存中尚未提交的數(shù)據(jù)字節(jié)數(shù)存中尚未提交的數(shù)據(jù)字節(jié)數(shù)N,即,即W=M-N。 接收方窗口的大小取決于接收方窗口的大小取決于接收方處理數(shù)據(jù)的接收方處理數(shù)據(jù)的速度和發(fā)送方發(fā)送數(shù)據(jù)的速度,當(dāng)從緩存取速度和發(fā)送方發(fā)送數(shù)據(jù)的速度,當(dāng)從緩存取走數(shù)據(jù)的速度低于數(shù)據(jù)進(jìn)入緩存
29、的速度時,走數(shù)據(jù)的速度低于數(shù)據(jù)進(jìn)入緩存的速度時,接收窗口逐漸縮小,反之則逐漸擴(kuò)大。接收窗口逐漸縮小,反之則逐漸擴(kuò)大。 接收方將當(dāng)前窗口大小通告給發(fā)送方接收方將當(dāng)前窗口大小通告給發(fā)送方(利用(利用TCP段首部的窗口大小字段),發(fā)送方根據(jù)段首部的窗口大小字段),發(fā)送方根據(jù)接收窗口接收窗口調(diào)整其發(fā)送窗口調(diào)整其發(fā)送窗口,使發(fā)送方窗口始,使發(fā)送方窗口始終小于或等于接收方窗口的大小。終小于或等于接收方窗口的大小。27 通過使用滑動窗口協(xié)議限制發(fā)送方一次可以通過使用滑動窗口協(xié)議限制發(fā)送方一次可以發(fā)送的數(shù)據(jù)量,就可以實現(xiàn)流量控制的目的。發(fā)送的數(shù)據(jù)量,就可以實現(xiàn)流量控制的目的。這里的關(guān)鍵是要這里的關(guān)鍵是要保證發(fā)
30、送方窗口小于或等于保證發(fā)送方窗口小于或等于接收方窗口的大小接收方窗口的大小。 當(dāng)發(fā)送方窗口大小為當(dāng)發(fā)送方窗口大小為1時,每發(fā)送一個字節(jié)的時,每發(fā)送一個字節(jié)的數(shù)據(jù)都要等待對方的確認(rèn),這便是數(shù)據(jù)都要等待對方的確認(rèn),這便是簡單停等簡單停等協(xié)議協(xié)議。 流量控制可以在網(wǎng)絡(luò)協(xié)議的不同層次上實現(xiàn),流量控制可以在網(wǎng)絡(luò)協(xié)議的不同層次上實現(xiàn),TCP的流量控制是在傳輸層上實現(xiàn)的的流量控制是在傳輸層上實現(xiàn)的端到端端到端的流量控制的流量控制。返回返回287.5 TCP擁塞控制擁塞控制 流量控制流量控制是由于接收端不能及時處理數(shù)據(jù)而是由于接收端不能及時處理數(shù)據(jù)而引發(fā)的控制機(jī)制。引發(fā)的控制機(jī)制。 擁塞擁塞是由于網(wǎng)絡(luò)中的路由
31、器超載而引起的嚴(yán)是由于網(wǎng)絡(luò)中的路由器超載而引起的嚴(yán)重延遲現(xiàn)象。重延遲現(xiàn)象。擁塞擁塞的發(fā)生會造成數(shù)據(jù)的的發(fā)生會造成數(shù)據(jù)的丟失丟失,數(shù)據(jù)的丟失會引起超時數(shù)據(jù)的丟失會引起超時重傳重傳,而超時重傳的,而超時重傳的數(shù)據(jù)又會進(jìn)一步數(shù)據(jù)又會進(jìn)一步加劇擁塞加劇擁塞,如果不加以控制,如果不加以控制,最終將會導(dǎo)致系統(tǒng)的最終將會導(dǎo)致系統(tǒng)的崩潰崩潰。 擁塞造成的數(shù)據(jù)丟失,僅僅靠超時重傳是無擁塞造成的數(shù)據(jù)丟失,僅僅靠超時重傳是無法解決的。法解決的。 因此因此,TCP提供了提供了擁塞控制擁塞控制機(jī)制。機(jī)制。 29 TCP的的擁塞控制擁塞控制,仍然是利用發(fā)送方的窗口,仍然是利用發(fā)送方的窗口來控制注入網(wǎng)絡(luò)的數(shù)據(jù)流的速度。減緩
32、注入來控制注入網(wǎng)絡(luò)的數(shù)據(jù)流的速度。減緩注入網(wǎng)絡(luò)的數(shù)據(jù)流后,擁塞就會被解除。網(wǎng)絡(luò)的數(shù)據(jù)流后,擁塞就會被解除。 引入擁塞控制后,引入擁塞控制后,發(fā)送窗口的大小取決于發(fā)送窗口的大小取決于兩兩個方面的因素:個方面的因素: 接收方的處理能力接收方的處理能力確認(rèn)報文所通告的窗口大確認(rèn)報文所通告的窗口大?。葱。纯捎玫慕邮站彺婵捎玫慕邮站彺娴拇笮。﹣肀硎荆坏拇笮。﹣肀硎?; 網(wǎng)絡(luò)的處理能力網(wǎng)絡(luò)的處理能力發(fā)送方所設(shè)置的變量發(fā)送方所設(shè)置的變量擁塞擁塞窗口窗口來表示。發(fā)送窗口的大小取通告窗口和擁塞來表示。發(fā)送窗口的大小取通告窗口和擁塞窗口中小的一個。窗口中小的一個。 發(fā)送窗口大小發(fā)送窗口大小=min(接收方通告窗
33、口大小,擁接收方通告窗口大小,擁塞窗口大小塞窗口大小)30 和接收窗口一樣,擁塞窗口也處于不斷的調(diào)和接收窗口一樣,擁塞窗口也處于不斷的調(diào)整中。一旦發(fā)現(xiàn)擁塞,整中。一旦發(fā)現(xiàn)擁塞,TCP將減小擁塞窗口。將減小擁塞窗口。 為了避免和消除擁塞,為了避免和消除擁塞,TCP周而復(fù)始地采用周而復(fù)始地采用三種策略三種策略來控制擁塞窗口的大小。來控制擁塞窗口的大小。 首先是使用首先是使用慢啟動策略慢啟動策略,在建立連接時擁塞,在建立連接時擁塞窗口被設(shè)置為窗口被設(shè)置為一個一個最大段大小最大段大小MSS。對于每。對于每一個段的確認(rèn)都會使擁塞窗口一個段的確認(rèn)都會使擁塞窗口增加一個增加一個MSS,實際上這種增加方式是指
34、數(shù)級的增加。例如,實際上這種增加方式是指數(shù)級的增加。例如,開始時只能發(fā)送一個數(shù)據(jù)段,當(dāng)收到該段的開始時只能發(fā)送一個數(shù)據(jù)段,當(dāng)收到該段的確認(rèn)后擁塞窗口加大到兩個確認(rèn)后擁塞窗口加大到兩個MSS,發(fā)送方接,發(fā)送方接著發(fā)送兩個段,收到這兩個段的確認(rèn)后,擁著發(fā)送兩個段,收到這兩個段的確認(rèn)后,擁塞窗口加大到塞窗口加大到4個個MSS,接下來發(fā)送,接下來發(fā)送4個段,個段,擁塞窗口加大到擁塞窗口加大到8個個MSS。31 當(dāng)擁塞窗口加大到當(dāng)擁塞窗口加大到門限值門限值(擁塞發(fā)生時擁塞(擁塞發(fā)生時擁塞窗口的一半)時,進(jìn)入窗口的一半)時,進(jìn)入擁塞避免階段擁塞避免階段,在這,在這一階段,使用的策略是,一階段,使用的策略是
35、,每收到一個確認(rèn),每收到一個確認(rèn),擁塞窗口加大擁塞窗口加大1個個MSS,即使確認(rèn)是針對多個,即使確認(rèn)是針對多個段的,擁塞窗口也只加大段的,擁塞窗口也只加大1個個MSS,這在一定,這在一定程度上減緩了擁塞窗口的增長。但在此階段,程度上減緩了擁塞窗口的增長。但在此階段,擁塞窗口仍在增長,最終可能導(dǎo)致?lián)砣?。擁塞窗口仍在增長,最終可能導(dǎo)致?lián)砣?擁塞使重傳定時器超時,發(fā)送方進(jìn)入擁塞使重傳定時器超時,發(fā)送方進(jìn)入擁塞解擁塞解決階段決階段。發(fā)送方在進(jìn)行重傳的同時,將門限發(fā)送方在進(jìn)行重傳的同時,將門限值調(diào)整為擁塞窗口的一半值調(diào)整為擁塞窗口的一半,并將擁塞窗口恢,并將擁塞窗口恢復(fù)成一個復(fù)成一個MSS,然后進(jìn)入新
36、一輪的循環(huán)。,然后進(jìn)入新一輪的循環(huán)。32 圖 8-10 TCP 擁塞窗口與門限的變化 2 8 16 20 擁塞窗口大小(段) 超時 超時 門限=16 20 門限=10 門限=8 16 2 4 8 6 10 12 14 16 18 20 22 往返時間 返回返回337.6 TCP差錯控制差錯控制差錯控制是差錯控制是TCP保證可靠性的手段之一。保證可靠性的手段之一。TCP的差錯控制的差錯控制包括差錯檢測和糾正包括差錯檢測和糾正。TCP處理處理的差錯有數(shù)據(jù)被破壞、重復(fù)、失序和丟失。的差錯有數(shù)據(jù)被破壞、重復(fù)、失序和丟失。 數(shù)據(jù)被破壞數(shù)據(jù)被破壞可以通過可以通過TCP的的校驗和檢測校驗和檢測出來,出來,接
37、收方接收方丟棄出錯的數(shù)據(jù)丟棄出錯的數(shù)據(jù),而且,而且不給出確認(rèn)不給出確認(rèn),發(fā)送方發(fā)送方定時器超時定時器超時后,后,重發(fā)該數(shù)據(jù)。重發(fā)該數(shù)據(jù)。 重復(fù)重復(fù)數(shù)據(jù)段一般是由超時重傳造成的,數(shù)據(jù)段一般是由超時重傳造成的,接收接收方可以根據(jù)序號判斷是否是重復(fù)數(shù)據(jù)段方可以根據(jù)序號判斷是否是重復(fù)數(shù)據(jù)段,對,對于重復(fù)數(shù)據(jù)段只需要簡單地于重復(fù)數(shù)據(jù)段只需要簡單地丟棄丟棄即可。即可。 34 數(shù)據(jù)失序數(shù)據(jù)失序是由于是由于TCP下面的下面的IP協(xié)議是無連接的數(shù)據(jù)協(xié)議是無連接的數(shù)據(jù)報協(xié)議,不能保證數(shù)據(jù)報的按序到達(dá)。報協(xié)議,不能保證數(shù)據(jù)報的按序到達(dá)。TCP對于提對于提前到達(dá)(前面的數(shù)據(jù)還未到達(dá))的數(shù)據(jù),前到達(dá)(前面的數(shù)據(jù)還未到達(dá)
38、)的數(shù)據(jù),暫不確認(rèn),暫不確認(rèn),直到前面的數(shù)據(jù)到達(dá)后再一起確認(rèn)直到前面的數(shù)據(jù)到達(dá)后再一起確認(rèn)。 數(shù)據(jù)丟失數(shù)據(jù)丟失錯誤也是通過錯誤也是通過超時重傳超時重傳來進(jìn)行恢復(fù)。但是來進(jìn)行恢復(fù)。但是確認(rèn)報文段的丟失一般不會造成任何影響,因為確認(rèn)報文段的丟失一般不會造成任何影響,因為TCP采用的是累計確認(rèn),采用的是累計確認(rèn),TCP確認(rèn)針對流中的字節(jié)確認(rèn)針對流中的字節(jié)序號,而不是段號。一般情況下,接收方確認(rèn)已正序號,而不是段號。一般情況下,接收方確認(rèn)已正確收到的、連續(xù)的流前部。對于接下去的數(shù)據(jù)段的確收到的、連續(xù)的流前部。對于接下去的數(shù)據(jù)段的確認(rèn)也就包含了對前面數(shù)據(jù)的確認(rèn)。若下一個確認(rèn)確認(rèn)也就包含了對前面數(shù)據(jù)的確認(rèn)
39、。若下一個確認(rèn)未能在重傳定時器超時之前到達(dá)發(fā)送方,則會出現(xiàn)未能在重傳定時器超時之前到達(dá)發(fā)送方,則會出現(xiàn)重復(fù)報文段。重復(fù)報文段。重復(fù)數(shù)據(jù)會被接收方鑒別出來(根據(jù)重復(fù)數(shù)據(jù)會被接收方鑒別出來(根據(jù)序號),并被丟棄序號),并被丟棄。 35 超時重傳最關(guān)鍵的因素是超時重傳最關(guān)鍵的因素是重傳定時器的定時時重傳定時器的定時時間片的大小間片的大小。由于在因特網(wǎng)這種大型網(wǎng)絡(luò)中。由于在因特網(wǎng)這種大型網(wǎng)絡(luò)中傳傳輸延遲變化范圍很大輸延遲變化范圍很大,從發(fā)出數(shù)據(jù)到收到確認(rèn),從發(fā)出數(shù)據(jù)到收到確認(rèn)所需的往返時間(所需的往返時間(Round Trip Time,RTT)動態(tài)變化,很難確定。動態(tài)變化,很難確定。 為了適應(yīng)傳輸延
40、遲的動態(tài)變化,為了適應(yīng)傳輸延遲的動態(tài)變化,TCP的重傳定時值也的重傳定時值也要不斷調(diào)整。要不斷調(diào)整。TCP通過測試連接的往返時間,對重傳通過測試連接的往返時間,對重傳定時值進(jìn)行修正。定時值進(jìn)行修正。 TCP的重傳定時值根據(jù)下式進(jìn)行計算:的重傳定時值根據(jù)下式進(jìn)行計算: Timeout= RTT (1) 為大于為大于1的常數(shù)加權(quán)因子的常數(shù)加權(quán)因子(推薦推薦=2),RTT為估算的為估算的往返時間。往返時間。 RTT根據(jù)下式進(jìn)行計算:根據(jù)下式進(jìn)行計算: RTT=RTTo+(1)RTTn (2)返回返回367.7 TCP狀態(tài)轉(zhuǎn)換圖狀態(tài)轉(zhuǎn)換圖 TCP建立連接、傳輸數(shù)據(jù)和斷開連接是一個建立連接、傳輸數(shù)據(jù)和斷
41、開連接是一個復(fù)雜的過程。為了準(zhǔn)確地描述這一過程,可復(fù)雜的過程。為了準(zhǔn)確地描述這一過程,可以采用以采用有限狀態(tài)機(jī)有限狀態(tài)機(jī)。有限狀態(tài)機(jī)包含有限個。有限狀態(tài)機(jī)包含有限個狀態(tài),在某一時刻,機(jī)器必然處于某一特定狀態(tài),在某一時刻,機(jī)器必然處于某一特定狀態(tài),當(dāng)在一個狀態(tài)下發(fā)生特定事件時,機(jī)狀態(tài),當(dāng)在一個狀態(tài)下發(fā)生特定事件時,機(jī)器會進(jìn)入一個新的狀態(tài)。在進(jìn)行狀態(tài)轉(zhuǎn)換時,器會進(jìn)入一個新的狀態(tài)。在進(jìn)行狀態(tài)轉(zhuǎn)換時,機(jī)器可以執(zhí)行一些動作。機(jī)器可以執(zhí)行一些動作。 圖圖8-11是是TCP的有限狀態(tài)機(jī),圖中的有限狀態(tài)機(jī),圖中狀態(tài)狀態(tài)用方框用方框表示,表示,狀態(tài)轉(zhuǎn)移狀態(tài)轉(zhuǎn)移用帶箭頭的線表示,線旁的用帶箭頭的線表示,線旁的說明
42、用斜線分為兩部分,斜線前是引起狀態(tài)說明用斜線分為兩部分,斜線前是引起狀態(tài)轉(zhuǎn)移的轉(zhuǎn)移的事件事件,斜線后是狀態(tài)轉(zhuǎn)移時所發(fā)出的,斜線后是狀態(tài)轉(zhuǎn)移時所發(fā)出的動作動作。 37 CLOSED 圖 8-11 TCP 的狀態(tài)轉(zhuǎn)換圖 SYN-SENT FIN-WAIT-1 LISTEN SYN-RCVD ESTABLISHED CLOSE-WAIT LAST-ACK 主動打開/SYN FIN+ACK/ACK ACK/- FIN/ACK 被動打開/- SYN/SYN+ACK 關(guān)閉/FIN FIN-WAIT-2 TIME-WAIT CLOSING ACK/- FIN/ACK 關(guān)閉/FIN ACK/- RST/- 超
43、時/RST 超時 RST/- 發(fā)送/SYN SYN+ACK/ACK FIN/ACK 關(guān)閉/FIN ACK/- 關(guān)閉或超時/- SYN/SYN+ACK 38 CLOSED 圖 8-12 客戶/服務(wù)器交換數(shù)據(jù)時的狀態(tài)轉(zhuǎn)換圖 SYN-SENT ESTABLISHED FIN-WAIT-1 FIN-WAIT-2 TIM E-WAIT CLOSED LISTEN SYN-RCVD ESTABLISHED CLOSE-WAIT LAST-ACK 客戶端狀態(tài) 服務(wù)器狀態(tài) 主動打開/SYN SYN+ACK/ACK 關(guān)閉/FIN ACK/- FIN/ACK 被動打開/- SYN/SYN+ACK ACK/- FI
44、N/ACK 關(guān)閉/FIN ACK/- 超時 SYN SYN+ACK ACK 交換數(shù)據(jù) FIN ACK FIN ACK 返回返回397.8 用戶數(shù)據(jù)報協(xié)議用戶數(shù)據(jù)報協(xié)議UDP 用戶數(shù)據(jù)報協(xié)議用戶數(shù)據(jù)報協(xié)議UDP(User Datagram Protocol)是)是TCP/IP傳輸層的另一個協(xié)議。傳輸層的另一個協(xié)議。TCP/IP同時提供同時提供TCP服務(wù)和服務(wù)和UDP服務(wù)的目的服務(wù)的目的是為了給用戶更加靈活的選擇。是為了給用戶更加靈活的選擇。 UDP同同IP協(xié)議一樣提供協(xié)議一樣提供無連接數(shù)據(jù)報傳輸無連接數(shù)據(jù)報傳輸,UDP在在IP協(xié)議上增加了協(xié)議上增加了進(jìn)程通信能力進(jìn)程通信能力。UDP除了提供進(jìn)程間
45、的通信能力外,除了提供進(jìn)程間的通信能力外,還提供了簡還提供了簡單的差錯控制單的差錯控制。但。但UDP不提供流量控制,也不提供流量控制,也不對不對UDP數(shù)據(jù)報進(jìn)行確認(rèn)。數(shù)據(jù)報進(jìn)行確認(rèn)。 407.8.1 UDP數(shù)據(jù)報格式數(shù)據(jù)報格式 UDP將應(yīng)用層的數(shù)據(jù)封裝成將應(yīng)用層的數(shù)據(jù)封裝成UDP數(shù)據(jù)報數(shù)據(jù)報進(jìn)行發(fā)送。進(jìn)行發(fā)送。UDP數(shù)據(jù)報由數(shù)據(jù)報由首部首部和和數(shù)據(jù)數(shù)據(jù)構(gòu)構(gòu)成。成。UDP采用采用定長首部定長首部,長度為,長度為8個字節(jié)個字節(jié)。UDP數(shù)據(jù)報格式如圖數(shù)據(jù)報格式如圖8-13所示。所示。 源 端 口(16比特) 目 的 端 口(16比特) UDP總長度 (16比特) 校驗和(16比特) 數(shù) 據(jù)(必須填充
46、成16比特的整數(shù)倍) 首部 圖8-13 UDP數(shù)據(jù)報格式 0 16 31 41 UDP建立在建立在IP之上之上,整個,整個UDP數(shù)據(jù)報被數(shù)據(jù)報被封裝在封裝在IP數(shù)據(jù)報中傳輸。雖然數(shù)據(jù)報中傳輸。雖然16比特的比特的UDP總長度字段可以標(biāo)識總長度字段可以標(biāo)識65535字節(jié),字節(jié),但由于但由于IP數(shù)據(jù)報總長度數(shù)據(jù)報總長度65535的限制及的限制及IP數(shù)據(jù)報首部占用數(shù)據(jù)報首部占用20字節(jié),實際字節(jié),實際UDP最大最大長度為長度為65515字節(jié),字節(jié), UDP最大數(shù)據(jù)長度最大數(shù)據(jù)長度為為65507字節(jié)字節(jié)。(。(65506) UDP的的校驗和校驗和字段長度為字段長度為16比特,是比特,是可可選字段選字段
47、,置,置0時表明不對時表明不對UDP進(jìn)行校驗。進(jìn)行校驗。427.8.2 UDP偽首部偽首部 UDP數(shù)據(jù)報的校驗和用于實現(xiàn)數(shù)據(jù)報的校驗和用于實現(xiàn)有限的差錯控有限的差錯控制制。UDP校驗和的計算與校驗和的計算與TCP相同,計算校相同,計算校驗和時,除了驗和時,除了UDP數(shù)據(jù)報本身外,它還加上數(shù)據(jù)報本身外,它還加上一個一個偽首部偽首部。偽首部不是。偽首部不是UDP數(shù)據(jù)報的有效數(shù)據(jù)報的有效成分,只是驗證成分,只是驗證UDP數(shù)據(jù)報是否傳到正確的數(shù)據(jù)報是否傳到正確的信宿端的手段。信宿端的手段。 UDP偽首部的格式如圖偽首部的格式如圖8-14所示。所示。 源 IP 地 址(32 比特) 目 的 IP 地 址
48、(32 比特) 全 0(8 比特) 協(xié)議(8 比特) UDP 總長度 (16 比特) 圖 8-14 UDP 偽首部格式 0 8 31 16 43面向連接面向連接 無連接無連接高可靠高可靠 高效率高效率一次傳輸交換大量報文一次傳輸交換大量報文 一次傳輸交換少量信息一次傳輸交換少量信息復(fù)雜復(fù)雜 簡單簡單表表8-1 TCP和和UDP的特點比較的特點比較傳輸控制協(xié)議傳輸控制協(xié)議TCP 用戶數(shù)據(jù)報協(xié)議用戶數(shù)據(jù)報協(xié)議UDP44本章要點本章要點 傳輸層傳輸層承上啟下,屏蔽通信子網(wǎng)的細(xì)節(jié),向上提供通承上啟下,屏蔽通信子網(wǎng)的細(xì)節(jié),向上提供通用的進(jìn)程通信服務(wù)。用的進(jìn)程通信服務(wù)。傳輸層是對網(wǎng)絡(luò)層的加強(qiáng)與彌補傳輸層是
49、對網(wǎng)絡(luò)層的加強(qiáng)與彌補。TCP和和UDP是傳輸層的兩大協(xié)議是傳輸層的兩大協(xié)議。 端口分配端口分配有兩種基本的方式:全局端口分配和本地端有兩種基本的方式:全局端口分配和本地端口分配??诜峙洹?在因特網(wǎng)中采用一個在因特網(wǎng)中采用一個三元組三元組(協(xié)議,主機(jī)地址,端口(協(xié)議,主機(jī)地址,端口號)來全局惟一地標(biāo)識一個進(jìn)程。用一個號)來全局惟一地標(biāo)識一個進(jìn)程。用一個五元組五元組(協(xié)(協(xié)議議,本地主機(jī)地址本地主機(jī)地址,本地端口號本地端口號,遠(yuǎn)地主機(jī)地址遠(yuǎn)地主機(jī)地址,遠(yuǎn)地端口遠(yuǎn)地端口號)來描述兩個進(jìn)程的關(guān)聯(lián)。號)來描述兩個進(jìn)程的關(guān)聯(lián)。 TCP和和UDP都是提供進(jìn)程通信能力的傳輸層協(xié)議。它都是提供進(jìn)程通信能力的傳輸
50、層協(xié)議。它們各有一套們各有一套端口號端口號,兩套端口號相互獨立,都是從,兩套端口號相互獨立,都是從0到到65535。 TCP和和UDP在計算校驗和時引入在計算校驗和時引入偽首部偽首部的目的是為了的目的是為了能夠驗證數(shù)據(jù)是否傳送到了正確的信宿端。能夠驗證數(shù)據(jù)是否傳送到了正確的信宿端。45 為了實現(xiàn)數(shù)據(jù)的可靠傳輸,為了實現(xiàn)數(shù)據(jù)的可靠傳輸,TCP在應(yīng)用在應(yīng)用進(jìn)程間建立傳輸連接。進(jìn)程間建立傳輸連接。TCP在建立連接在建立連接時采用時采用三次握手方法解決重復(fù)連接的問三次握手方法解決重復(fù)連接的問題題。在拆除連接時采用。在拆除連接時采用四次握手方法解四次握手方法解決數(shù)據(jù)丟失問題決數(shù)據(jù)丟失問題。 建立連接前,
51、服務(wù)器端首先建立連接前,服務(wù)器端首先被動打開其被動打開其熟知的端口熟知的端口,對端口進(jìn)行監(jiān)聽。當(dāng)客戶,對端口進(jìn)行監(jiān)聽。當(dāng)客戶端要和服務(wù)器建立連接時,發(fā)出一個主端要和服務(wù)器建立連接時,發(fā)出一個主動打開端口的請求,客戶端一般使用臨動打開端口的請求,客戶端一般使用臨時端口。時端口。46 TCP采用的最基本的采用的最基本的可靠性技術(shù)可靠性技術(shù)包括流量控制、擁包括流量控制、擁塞控制和差錯控制。塞控制和差錯控制。 TCP采用采用滑動窗口協(xié)議實現(xiàn)流量控制滑動窗口協(xié)議實現(xiàn)流量控制,滑動窗口協(xié),滑動窗口協(xié)議通過發(fā)送方窗口和接收方窗口的配合來完成傳輸議通過發(fā)送方窗口和接收方窗口的配合來完成傳輸控制。控制。 TCP
52、的的擁塞控制擁塞控制利用發(fā)送方的窗口來控制注入網(wǎng)絡(luò)利用發(fā)送方的窗口來控制注入網(wǎng)絡(luò)的數(shù)據(jù)流的速度。發(fā)送窗口的大小取通告窗口和擁的數(shù)據(jù)流的速度。發(fā)送窗口的大小取通告窗口和擁塞窗口中小的一個。塞窗口中小的一個。 TCP通過通過差錯控制差錯控制解決數(shù)據(jù)的毀壞、重復(fù)、失序和解決數(shù)據(jù)的毀壞、重復(fù)、失序和丟失等問題。丟失等問題。 UDP在在IP協(xié)議上增加了進(jìn)程通信能力。此外協(xié)議上增加了進(jìn)程通信能力。此外UDP通通過可選的校驗和提供簡單的差錯控制。但過可選的校驗和提供簡單的差錯控制。但UDP不提不提供流量控制和數(shù)據(jù)報確認(rèn)供流量控制和數(shù)據(jù)報確認(rèn) 。返回返回47 作業(yè) 7.6 習(xí)題 3簡述TCP連接建立三次握手過
53、程。48 例、主機(jī)A向主機(jī)B連續(xù)發(fā)送了兩個TCP報文段,其序號分別是370和700。試問:1)第一個報文段攜帶了多少字節(jié)的數(shù)據(jù)?2)主機(jī)B收到第一個報文段后發(fā)回的確認(rèn)號應(yīng)是多少?3)主機(jī)B收到第二個報文段后發(fā)回的確認(rèn)號是880,試問A發(fā)送的第二個報文段中的數(shù)據(jù)有多少字節(jié)?4)如果A發(fā)送的第一個報文段丟了,但第二個報文段到達(dá)了B。B在第二個報文段到達(dá)后向A發(fā)送確認(rèn),試問這個確認(rèn)號應(yīng)為多少?49源端口目的端口長 度檢驗和數(shù) 據(jù)首 部IP 數(shù)據(jù)報2222字節(jié)發(fā)送在前數(shù) 據(jù)首 部UDP 用戶數(shù)據(jù)報用戶數(shù)據(jù)報 UDP 有兩個字段:數(shù)據(jù)字段和首部字段。首部字段有 8 個字節(jié),由 4 個字段組成,每個字段都
54、是兩個字節(jié)。 練習(xí)練習(xí)MAC地址地址08 00 20 1B 67 45 00 80 C8 34 B2 A7 08 0045 00 00 3E 59 27 00 00 80 11 80 0C 8C 8606 76 00 35 00 2A 5D EC 00 01 01 .00 01 數(shù)據(jù)數(shù)據(jù)34字節(jié)字節(jié) 24 6E 8C 86 24 01IP協(xié)議協(xié)議204820字節(jié)字節(jié)IP標(biāo)頭標(biāo)頭UDP標(biāo)頭標(biāo)頭UDP數(shù)據(jù)數(shù)據(jù)頭部長頭部長目的地址目的地址140.134.36.1源地址源地址140.134.36.110IP包長度包長度源端口源端口1654,目的端口目的端口53信息長度信息長度這是客戶發(fā)送給服務(wù)器還是服務(wù)器發(fā)給客戶的數(shù)據(jù)包?協(xié)議字段協(xié)議字段17,UDPUDP包分析512011考題 主機(jī)X向主
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 成都高爾夫球場租賃合同范本
- 電力公司入駐管理
- 酒店網(wǎng)絡(luò)營銷人員勞動合同模板
- 融資風(fēng)險防范確保企業(yè)資金安全
- 智能家居招投標(biāo)基本知識介紹
- 國有企業(yè)采購政策制定
- 電力工程鋼板租賃協(xié)議
- 市場營銷技能工資管理
- 環(huán)??萍脊救耸陆?jīng)理聘用合同
- 量身定制合同讓合作更放心
- 幼兒園 大班科學(xué)《神奇的動物世界》
- 上海市中考英語試卷及答案
- 智能建筑的通信網(wǎng)絡(luò)
- 言語理解與表達(dá)的真題全面
- 人體常見病 知到智慧樹網(wǎng)課答案
- SJG 164-2024 自密實混凝土應(yīng)用技術(shù)規(guī)程
- 2024年上海市中考語文一輪復(fù)習(xí):教材知識點歸納
- 臨床醫(yī)學(xué)職業(yè)生涯規(guī)劃
- 幼兒園課程故事開展培訓(xùn)
- 《電力建設(shè)施工技術(shù)規(guī)范 第3部分:汽輪發(fā)電機(jī)組》DLT 5190.3
- 重大版小學(xué)英語六年級上冊全冊教案
評論
0/150
提交評論