




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第六章
端到端傳輸協(xié)議
6.1OSI/RM模型中的傳輸層
6.2TCP/IP參考模型中的傳輸層6.3傳輸控制協(xié)議(TCP)6.4用戶數(shù)據(jù)協(xié)議(UDP)本章小結(jié)
習題
6.1OSI/RM模型中的傳輸層
6.1.1傳輸層端口的概念傳輸層的任務(wù)是根據(jù)通信子網(wǎng)的特性最佳地利用網(wǎng)絡(luò)資源,為兩個端系統(tǒng)的會話層之間提供建立、維護和取消傳輸連接的功能,負責端到端的可靠數(shù)據(jù)傳輸。在該層,信息傳輸?shù)膮f(xié)議數(shù)據(jù)單元稱為段或報文。網(wǎng)絡(luò)層只是根據(jù)網(wǎng)絡(luò)地址將源節(jié)點發(fā)出的數(shù)據(jù)包傳輸?shù)侥康墓?jié)點,而傳輸層則負責將數(shù)據(jù)可靠地傳輸?shù)较鄳?yīng)的端口。計算機網(wǎng)絡(luò)中的資源子網(wǎng)是通信的發(fā)起者和接收者,其中的每個設(shè)備稱為端點;通信子網(wǎng)提供網(wǎng)絡(luò)中的通信服務(wù),其中的設(shè)備稱為節(jié)點。OSI參考模型中用于通信控制的有物理層、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層和傳輸層,但它們的控制對象不同。6.1.2傳輸層的基本功能傳輸層提供了主機應(yīng)用程序進程之間端到端的服務(wù),基本功能如下:
(1)分割與重組數(shù)據(jù)。
(2)按端口號尋址。
(3)連接管理。
(4)差錯控制和流量控制。傳輸層要向會話層提供可靠的通信服務(wù),避免報文出現(xiàn)出錯、丟失、延遲時間紊亂、重復(fù)、亂序等差錯。6.1.3傳輸層的服務(wù)類型及協(xié)議等級
1.服務(wù)類型傳輸層提供的服務(wù)可分為傳輸連接服務(wù)和數(shù)據(jù)傳輸服務(wù)。
傳輸連接服務(wù):通常,對會話層要求的每個傳輸連接,傳輸層都要在網(wǎng)絡(luò)層上建立相應(yīng)的連接。
數(shù)據(jù)傳輸服務(wù):強調(diào)提供面向連接的可靠服務(wù)(很晚OSI才開始制定無連接服務(wù)的有關(guān)標準),并提供流量控制、差錯控制和序列控制,以實現(xiàn)兩個終端系統(tǒng)間傳輸?shù)膱笪臒o差錯、無丟失、無重復(fù)、無亂序。
2.協(xié)議等級傳輸層服務(wù)通過協(xié)議體現(xiàn),因此傳輸層協(xié)議的等級與網(wǎng)絡(luò)服務(wù)質(zhì)量密切相關(guān)。根據(jù)差錯性質(zhì),網(wǎng)絡(luò)服務(wù)按質(zhì)量可分為以下三種類型:
A類服務(wù):低差錯率連接,即具有可接受的殘留差錯率和故障通知率。
C類服務(wù):高差錯率連接,即具有不可接受的殘留差錯率和故障通知率。
B類服務(wù):介于A類服務(wù)與C類服務(wù)之間。差錯率的接受與不可接受是取決于用戶的。因此,網(wǎng)絡(luò)服務(wù)質(zhì)量的劃分是以用戶要求為依據(jù)的。OSI根據(jù)傳輸層的功能特點,定義了以下五種協(xié)議級別:
0級:簡單連接。只建立一個簡單的端到端的傳輸連接,并可分段傳輸長報文。
1級:基本差錯恢復(fù)級。在網(wǎng)絡(luò)連接斷開、網(wǎng)絡(luò)連接失敗或收到一個未被認可的傳輸連接數(shù)據(jù)單元等基本差錯時,具有恢復(fù)功能。
2級:多路復(fù)用。允許多條傳輸共享同一網(wǎng)絡(luò)連接,并具有相應(yīng)的流量控制功能。
3級:差錯恢復(fù)和多路復(fù)用。是1級和2級協(xié)議的綜合。
4級:差錯檢測、恢復(fù)和多路復(fù)用。在3級協(xié)議的基礎(chǔ)上增加了差錯檢測功能。典型的傳輸層協(xié)議有以下兩種:
SPX:順序包交換協(xié)議,是NovellNetWare網(wǎng)絡(luò)的傳輸層協(xié)議。
TCP:傳輸控制協(xié)議,是TCP/IP參考模型的傳輸層協(xié)議。6.1.4傳輸層在OSI中的地位和作用傳輸層是整個協(xié)議層次結(jié)構(gòu)的核心,是惟一負責總體數(shù)據(jù)傳輸和控制的一層。因為網(wǎng)絡(luò)層不一定保證服務(wù)的可靠,而用戶也不能直接對通信子網(wǎng)加以控制,因此在網(wǎng)絡(luò)層之上加一層即傳輸層以改善傳輸質(zhì)量。傳輸層利用網(wǎng)絡(luò)層提供的服務(wù),并通過傳輸層地址提供給高層用戶傳輸數(shù)據(jù)的通信端口,使系統(tǒng)間高層資源的共享不必考慮數(shù)據(jù)通信方面和不可靠的數(shù)據(jù)傳輸方面的問題。它的主要功能是:對一個進行的對話或連接提供可靠的傳輸服務(wù),在通向網(wǎng)絡(luò)的單一物理連接上實現(xiàn)該連接的復(fù)用,在單一連接上提供端到端的序號與流量控制、差錯控制及恢復(fù)等服務(wù)。6.2TCP/IP參考模型中的傳輸層
6.2.1傳輸層協(xié)議
TCP/IP的傳輸層提供了兩個主要的協(xié)議,即傳輸控制協(xié)議(TCP)和用戶數(shù)據(jù)報協(xié)議(UDP)。在TCP/IP體系中,根據(jù)所使用的協(xié)議是TCP或UDP,將所傳輸?shù)臄?shù)據(jù)分別稱為TCP報文段(Segment)或UDP報文、用戶數(shù)據(jù)報。
UDP提供無連接的服務(wù),UDP在傳送數(shù)據(jù)之前不需要建立連接。遠程主機的傳輸層在收到UDP報文后,不需要給出任何確認。
CP則提供面向連接的服務(wù)。在傳送數(shù)據(jù)之前必須先建立連接,數(shù)據(jù)傳送結(jié)束后要釋放連接。TCP不提供廣播或多播服務(wù)。傳輸層的UDP用戶數(shù)據(jù)報與網(wǎng)絡(luò)層的IP數(shù)據(jù)報有很大的區(qū)別。IP數(shù)據(jù)報要經(jīng)過互聯(lián)網(wǎng)中許多路由器的存儲轉(zhuǎn)發(fā),但UDP用戶數(shù)據(jù)報是在傳輸層的端到端抽象的邏輯信道中傳送的。IP數(shù)據(jù)報經(jīng)過路由器進行轉(zhuǎn)發(fā),用戶數(shù)據(jù)報只是IP數(shù)據(jù)報中的數(shù)據(jù),路由器看不見有用戶數(shù)據(jù)報經(jīng)過它。
TCP是傳輸層的連接,它和網(wǎng)絡(luò)層的虛電路(如X.25使用的)完全不同。TCP報文段是在傳輸層抽象的端到端邏輯信道中傳送的,這種信道是可靠的全雙工信道。但這樣的信道卻不知道究竟經(jīng)過了多少路由器,而且這些路由器也根本不知道上面的傳輸層是否建立了TCP連接。然而在X.25建立的虛電路所經(jīng)過的交換節(jié)點中,都必須保存X.25虛電路的狀態(tài)信息。6.2.2端口和套接字傳輸層協(xié)議實現(xiàn)應(yīng)用進程間端到端的通信。計算機中的不同進程可能同時進行通信,這時它們會用端口號進行區(qū)別,通過網(wǎng)絡(luò)地址和端口號的組合,即套接字(Socket),達到惟一標識的目的。TCP和UDP都使用端口和套接字。套接字是由IP地址加上端口號組成的。發(fā)送套接字?=?源IP地址?+?源端口號接收套接字?=?目的IP地址?+?目的端口號每個端口都擁有一個名為端口號的整數(shù)描述符,用來標識不同的端口或進程。在TCP/IP傳輸層,定義一個16bit長度的整數(shù)作為端口標識,也就是說可定義216個端口,其端口號從0到216-1。由于TCP/IP傳輸層的TCP和UDP協(xié)議是兩個完全獨立的軟件模塊,因此各自的端口號也相互獨立,即各自可獨立擁有216個端口。如圖6-1所示,每種應(yīng)用層協(xié)議或應(yīng)用程序都具有與傳輸層惟一連接的端口,并且使用惟一的端口號將這些端口區(qū)分開來。當數(shù)據(jù)流從某一個應(yīng)用發(fā)送到遠程網(wǎng)絡(luò)的某一個應(yīng)用時,傳輸層根據(jù)這些端口號,就能夠判斷出數(shù)據(jù)來自于哪一個應(yīng)用,想要訪問另一臺網(wǎng)絡(luò)的哪一個應(yīng)用,從而將數(shù)據(jù)傳遞到相應(yīng)的應(yīng)用層協(xié)議或應(yīng)用程序。圖6-1應(yīng)用層與傳輸層之間的接口
1.保留端口這種端口的端口號一般都小于1024。它們基本上都被分配給了已知的應(yīng)用協(xié)議(如表6-1中的部分端口)。目前,這一類端口的端口號分配已經(jīng)被廣大網(wǎng)絡(luò)應(yīng)用者接受,形成了標準,在各種網(wǎng)絡(luò)的應(yīng)用中調(diào)用這些端口號就意味著使用它們所代表的應(yīng)用協(xié)議。這些端口由于已經(jīng)有了固定的使用者,所以不能被動態(tài)地分配給其他應(yīng)用程序。表6-1給出了一些常用的保留端口。表6-1TCP協(xié)議和UDP協(xié)議的一些常用保留端口UDP保留端口舉例端口號關(guān)鍵字應(yīng)用協(xié)議53DNS域名服務(wù)69TFTP簡單文件傳輸協(xié)議161SNMP簡單網(wǎng)絡(luò)管理協(xié)議520RIPRIP路由選擇協(xié)議TCP保留端口舉例21FTP文件傳輸協(xié)議23Telnet虛擬終端協(xié)議25SMTP簡單郵件傳輸協(xié)議53DNS域名服務(wù)80HTTP超文本傳輸協(xié)議119NNTP網(wǎng)絡(luò)新聞傳輸協(xié)議
2.動態(tài)分配的端口這種端口的端口號一般都大于1024。這一類端口沒有固定的使用者,它們可以被動態(tài)地分配給應(yīng)用程序。也就是說,在使用應(yīng)用軟件訪問網(wǎng)絡(luò)的時候,應(yīng)用軟件可以向系統(tǒng)申請一個大于1024的端口號臨時代表這個軟件與傳輸層交換數(shù)據(jù),并且使用這個臨時的端口與網(wǎng)絡(luò)上的其他主機通信。圖6-2顯示了使用動態(tài)分配的端口訪問網(wǎng)絡(luò)資源的情況。它顯示的是在使用微軟公司的IE瀏覽器上網(wǎng)時,在DOS窗口中使用netstat命令查看端口使用情況的畫面。IE瀏覽器使用了3693、3692等多個動態(tài)分配的端口號。圖6-2查詢動態(tài)分配的端口訪問網(wǎng)絡(luò)資源
3.注冊端口注冊端口比較特殊,它也是固定為某個應(yīng)用服務(wù)的端口,但是它所代表的不是已經(jīng)形成標準的應(yīng)用層協(xié)議,而是某個軟件廠商開發(fā)的應(yīng)用程序。某些軟件廠商通過使用注冊端口,使它的特定軟件享有固定的端口號,而不用向系統(tǒng)申請動態(tài)分配的端口號。一般情況下,這些特定的軟件要使用注冊端口,其廠商必須向端口的管理機構(gòu)注冊。大多數(shù)注冊端口的端口號大于1024。
TCP協(xié)議和UDP協(xié)議都允許16位的端口值,分別能夠提供65536個端口。不論端口號大于還是小于1024,以上三種端口都分別屬于TCP協(xié)議和UDP協(xié)議。當然,也有些端口既屬于TCP協(xié)議也屬于UDP協(xié)議。當網(wǎng)絡(luò)中的兩臺主機進行通信時,為了表明數(shù)據(jù)是由源端的哪一種應(yīng)用發(fā)出的,以及數(shù)據(jù)所要訪問的是目的端的哪一種服務(wù),TCP/IP協(xié)議會在傳輸層封裝數(shù)據(jù)段時,把發(fā)出數(shù)據(jù)的應(yīng)用程序的端口作為源端口,把接收數(shù)據(jù)的應(yīng)用程序的端口作為目的端口,添加到數(shù)據(jù)段的頭中,從而使主機能夠同時維持多個會話的連接,使不同應(yīng)用程序的數(shù)據(jù)不至于混淆。一臺主機上的多個應(yīng)用程序可同時與其他多臺主機上的多個對等進程進行通信,所以需要對不同的虛電路進行標識。對TCP虛電路連接采用發(fā)送端和接收端的套接字(Socket)組合來識別,形如Socket1、Socket2。所謂套接字實際上是一個通信端點,每個套接字都有一個套接字序號,包括主機的IP地址與一個16位的主機端口號。源端口與目的端口示意圖如圖6-3所示。圖6-3端口的示意圖6.3傳輸控制協(xié)議(TCP)
6.3.1TCP協(xié)議格式
1.
TCP報文段的格式
TCP的協(xié)議數(shù)據(jù)單元被稱為報文段(Segment),TCP通過報文段的交互來建立連接、傳輸數(shù)據(jù)、發(fā)出確認、進行差錯控制、流量控制及關(guān)閉連接。報文段分為兩部分,即報文段頭和數(shù)據(jù),所謂報文段頭就是TCP為了實現(xiàn)端到端可靠傳輸所加入的控制信息,而數(shù)據(jù)則是指由高層即應(yīng)用層來的數(shù)據(jù)。圖6-4給出了TCP報文段頭的格式。其中有關(guān)字段的說明如下。源端口:占16bit,報文段的源端口號。目標端口:占16bit,報文段的目的端口號。序號:占32bit。TCP是面向數(shù)據(jù)流的,TCP傳送的報文可看做連續(xù)的數(shù)據(jù)流。在TCP傳送的數(shù)據(jù)流中,每一個字節(jié)都有一個序號,報文段的序列號表示該報文段在發(fā)送方的數(shù)據(jù)流中的位置,用來保證數(shù)據(jù)到達的順序性。確認號:占32bit,是期望收到對方的下一個TCP報文段的數(shù)據(jù)的第一個字節(jié)的序號,相當于是對對方所發(fā)送的并已被己方所正確接收的報文段的確認。序號和確認號共同用于TCP服務(wù)中的確認、差錯控制。數(shù)據(jù)偏移:占4bit,它指出TCP報文段的數(shù)據(jù)起始處與TCP報文段的起始處的距離。這實際上就是TCP報文段首部的長度。由于首部長度不固定,因此數(shù)據(jù)偏移字段是必要的。保留:占6bit,為將來的應(yīng)用而保留,目前置為“0”。編碼位:占6bit,TCP報文段有多種應(yīng)用,如建立或關(guān)閉連接、傳輸數(shù)據(jù)、攜帶確認等,這些編碼位用于給出與報文段的作用及處理有關(guān)的控制信息。圖6-4TCP報文段頭的格式窗口:占32bit,窗口字段用來控制對方發(fā)送的數(shù)據(jù)量,單位為字節(jié)。使用可變大小的滑動窗口協(xié)議來進行流量控制。校驗和:占32bit,用于對報文段首部和數(shù)據(jù)進行校驗。緊急指針:占16bit,給出從當前順序號到緊急數(shù)據(jù)位置的偏移量。
任選項:長度可變。TCP只規(guī)定了一種選項,即最大報文段長度(MSS,MaximumSegmentSize)。MSS告訴對方TCP:“我的緩存所能接收的報文段的數(shù)據(jù)字段的最大長度是MSS個字節(jié)”。當沒有使用選項時,TCP的首部長度是20字節(jié)。填充:當任選項字段長度不足32位字長時,需要加以填充。數(shù)據(jù):來自高層即應(yīng)用層的協(xié)議數(shù)據(jù)。2.序號與確認TCP不是按傳送的報文段來編號的。TCP將所要傳送的整個報文(可能包括許多個報文段)看成一個個字節(jié)組成的數(shù)據(jù)流,然后對每一個數(shù)據(jù)流編一個序號。在連接建立時,雙方要商定初始序號。TCP就將每一次所傳送的報文段中的第一個數(shù)據(jù)字節(jié)的序號,放在TCP首部的序號字段中。TCP的確認是對接收到的數(shù)據(jù)的最高序號(即收到的數(shù)據(jù)流中的最后一個序號)表示確認,但返回的確認序號是已收到的數(shù)據(jù)的最高序號加1。也就是說,確認序號表示期望下次收到的第一個數(shù)據(jù)字節(jié)的序號。由于TCP能提供全雙工通信,因此通信中的每一方都不必專門發(fā)送確認報文段,而可以在傳送數(shù)據(jù)時順便把確認信息捎帶傳送。若發(fā)送方在規(guī)定的設(shè)置時間內(nèi)沒有收到確認,就要將未被確認的報文段重新發(fā)送。接收方若收到有差錯的報文段,則丟棄此報文段而并不發(fā)送否認信息。若收到重復(fù)的報文段,也要將其丟棄,但要發(fā)回(或捎帶發(fā)回)確認信息。這與數(shù)據(jù)鏈路層的情況相似。3.
TCP連接的建立和拆除TCP連接包括建立連接、數(shù)據(jù)傳輸和拆除連接三個過程。TCP通過TCP端口提供連接服務(wù),最后通過連接服務(wù)來接收和發(fā)送數(shù)據(jù)。TCP連接的申請、打開和關(guān)閉必須遵守TCP協(xié)議的規(guī)定。TCP使用三次握手協(xié)議來建立連接。連接可以由任何一方發(fā)起,也可以由雙方同時發(fā)起。一旦一臺主機上的TCP軟件已經(jīng)主動發(fā)起連接請求,運行在另一臺主機上的TCP軟件就被動地等待握手。圖6-5給出了三次握手建立TCP連接的簡單示意圖。圖6-5三次握手建立TCP連接1)建立連接在源主機想與目的主機通信時,目的主機必須同意,否則TCP連接無法建立。為了確保TCP連接的成功建立,TCP采用了一種稱為三次握手的方式,三次握手方式使得“序號/確認號”系統(tǒng)能夠正常工作,從而使它們的序號達成同步。如果三次握手成功,則連接建立成功,可以開始傳送數(shù)據(jù)信息。三次握手分別為:第一步:源主機A的TCP向主機B發(fā)出連接請求報文段,其首部中的SYN(同步)標志位應(yīng)置為1,表示想與目標主機B進行通信,并發(fā)送一個同步序列號x(例:SEQ?=?100)進行同步,表明在后面?zhèn)魉蛿?shù)據(jù)時第一個數(shù)據(jù)字節(jié)的序號是x?+
1(即101)。第二步:目標主機B的TCP收到連接請求報文段后,如同意,則發(fā)回確認。在確認報中應(yīng)將ACK位和SYN位置1。確認號應(yīng)為x?+?1(圖6-5中為101),同時也為自己選擇一個序號y。第三步:源主機A的TCP收到目標主機B的確認后要向目標主機B發(fā)出確認,其ACK置1,確認號為y?+?1,而自己的序號為x?+?1。TCP的標準規(guī)定,SYN置1的報文段要消耗掉一個序號。運行客戶進程的源主機A的TCP通知上層應(yīng)用進程,連接已經(jīng)建立。當源主機A向目標主機B發(fā)送第一個數(shù)據(jù)報文段時,其序號仍為x?+?1,因為前一個確認報文段并不消耗序號。當運行服務(wù)進程的目標主機B的TCP收到源主機A的確認后,也通知其上層應(yīng)用進程,連接已經(jīng)建立。至此建立了一個全雙工的連接。2)傳送數(shù)據(jù)位于TCP/IP分層模型較上層的應(yīng)用程序傳輸數(shù)據(jù)流給TCP。TCP接收到字節(jié)流并且把它們分解成段。假如數(shù)據(jù)流不能被分成一段,那么每一個段都被分給一個序列號。在目的主機端,這個序列號用來把接收到的段重新排序成原來的數(shù)據(jù)流。圖6-6給出了兩臺主機在成功建立連接后傳輸數(shù)據(jù)的示例。圖6-6發(fā)送四個數(shù)據(jù)段的過程(1)主機A使用滑動窗口發(fā)送全部的四個數(shù)據(jù)段到主機B,這是第一步。不幸的是,只有段l03、105和106成功地到達了主機B(參看②)。(2)因為段103和104是連續(xù)的,所以主機B返回一個確認給主機A,通知主機A它只成功地接收到了第103段,在它的確認中主機B使用它期待得到的下一個序列號作為確認(參看③通過給出序列號104)。(3)主機A接到主機B的報文后,重新發(fā)送數(shù)據(jù)104、105和106(參看④)。雖然主機B已經(jīng)成功地收到了段105和106,但是根據(jù)協(xié)議規(guī)定,也必須重新發(fā)送。(4)當主機2成功地收到這些段以后,主機B返回一個確認給主機A(參看⑥),并根據(jù)序列號把它們重組成原來的數(shù)據(jù)流。把它傳輸?shù)礁邔討?yīng)用程序。3)關(guān)閉連接一個TCP連接建立之后,即可發(fā)送數(shù)據(jù),一旦數(shù)據(jù)發(fā)送結(jié)束,就需要關(guān)閉連接。由于TCP連接是一個全雙工的數(shù)據(jù)通道,一個連接的關(guān)閉必須由通信雙方共同完成。當通信的一方?jīng)]有數(shù)據(jù)需要發(fā)送給對方時,可以使用FIN段向?qū)Ψ桨l(fā)送關(guān)閉連接請求。這時,它雖然不再發(fā)送數(shù)據(jù),但并不排斥在這個連接上繼續(xù)接收數(shù)據(jù)。只有當通信的對方也遞交了關(guān)閉連接的請求后,這個TCP連接才會完全關(guān)閉。在關(guān)閉連接時,既可以由一方發(fā)起而另一方響應(yīng),也可以雙方同時發(fā)起。無論怎樣,收到關(guān)閉連接請求的一方必須使用ACK段給予確認。實際上,TCP連接的關(guān)閉過程也是一個三次握手的過程。在關(guān)閉連接之前,為了確保數(shù)據(jù)正確傳遞完畢,仍然需要采用三次握手的方式來關(guān)閉連接,如圖6-7所示。圖6-7TCP連接釋放的過程其三次握手分別為:第一步:源主機A的應(yīng)用進程先向其TCP發(fā)出連接釋放請求,并且不再發(fā)送數(shù)據(jù)。TCP通知對方要釋放從A到B這個方向的連接,將發(fā)往主機B的TCP報文段首部的終止位FIN置1,其序號x等于前面已傳送過的數(shù)據(jù)的最后一個字節(jié)的序號加1。第二步:目標主機B的TCP收到釋放連接通知后即發(fā)出確認,其序號為y,確認號為x?+?1,同時通知高層應(yīng)用進程,如圖6-7中的箭頭①所示。這樣,從A到B的連接就釋放了,連接處于半關(guān)閉狀態(tài),相當于主機A向主機B說:“我已經(jīng)沒有數(shù)據(jù)要發(fā)送了,但如果還發(fā)送數(shù)據(jù),我仍接收?!贝撕螅鳈CB不再接收主機A發(fā)來的數(shù)據(jù)。但若主機B還有一些數(shù)據(jù)要發(fā)送主機A,則可以繼續(xù)發(fā)送。主機A只要正確收到數(shù)據(jù),仍應(yīng)向主機B發(fā)送確認。第三步:若主機B不再向主機A發(fā)送數(shù)據(jù),其應(yīng)用進程通知TCP釋放連接,如圖6-7中的箭頭②所示。主機B發(fā)出的連接釋放報文段必須將終止位FIN和確認位ACK置1,并使其序號仍為y,但還必須重復(fù)上次已發(fā)送過的ACK?=?x
+?1。主機A必須對此發(fā)出確認,將ACK置1,ACK?=?y?+?1,而自己的序號是x?+?1。這樣才把從B到A的反方向的連接釋放掉。主機A的TCP再向其應(yīng)用進程報告,整個連接已經(jīng)全部釋放。6.3.2TCP可靠數(shù)據(jù)傳輸技術(shù)TCP協(xié)議采用了許多與數(shù)據(jù)鏈路層類似的機制來保證可靠的數(shù)據(jù)傳輸,如采用序列號、確認、滑動窗口協(xié)議等。只不過TCP協(xié)議的目的是為了實現(xiàn)端到端節(jié)點之間的可靠數(shù)據(jù)傳輸,而數(shù)據(jù)鏈路層協(xié)議則是為了實現(xiàn)相鄰節(jié)點之間的可靠數(shù)據(jù)傳輸。首先,TCP要為所發(fā)送的每一個報文段加上序列號,保證每一個報文段能被接收方接收,并只被正確地接收一次。其次,TCP采用具有重傳功能的積極確認技術(shù)作為可靠數(shù)據(jù)流傳輸服務(wù)的基礎(chǔ)。這里,“確認”是指接收端在正確收到報文段之后向發(fā)送端回送一個確認(ACK)信息。發(fā)送方將每個已發(fā)送的報文段備份在自己的發(fā)送緩沖區(qū)里,而且在收到相應(yīng)的確認之前是不會丟棄所保存的報文段的?!胺e極”是指發(fā)送方在每一個報文段發(fā)送完畢的同時啟動一個定時器,假如定時器的定時期滿而關(guān)于報文段的確認信息尚未到達,則發(fā)送方認為該報文段已丟失并主動重發(fā)。為了避免由于網(wǎng)絡(luò)延遲引起遲到的確認和重復(fù)的確認,TCP規(guī)定在確認信息中捎帶一個報文段的序號,使接收方能正確地將報文段與確認聯(lián)系起來。第三,采用可變長的滑動窗口協(xié)議進行流量控制,以防止由于發(fā)送端與接收端之間的不匹配而引起數(shù)據(jù)丟失。這里所采用的滑動窗口協(xié)議與數(shù)據(jù)鏈路層的滑動窗口協(xié)議在工作原理上是完全相同的,惟一的區(qū)別在于滑動窗口協(xié)議用于傳輸層是為了在端到端節(jié)點之間實現(xiàn)流量控制,而用于數(shù)據(jù)鏈路層是為了在相鄰節(jié)點之間實現(xiàn)流量控制。TCP采用可變長的滑動窗口,使得發(fā)送端與接收端可根據(jù)自己的CPU和數(shù)據(jù)緩存資源對數(shù)據(jù)發(fā)送和接收能力來作出動態(tài)調(diào)整,從而靈活性更強,也更合理。6.3.3TCP流量控制與擁塞控制TCP初始連接一旦建立,兩端就能夠使用全雙工通信交換數(shù)據(jù)段,并緩存所發(fā)送和接收的報文段。緩存所發(fā)送的報文段是為了重傳的需要,以防止報文段不能到達或不能按順序到達接收端引起的差錯。1.流量控制TCP采用大小可變的滑動窗口機制實現(xiàn)流量控制功能。窗口大小的單位為字節(jié)。在TCP報文段首部的窗口字段寫入的數(shù)值就是當前給對方設(shè)置的發(fā)送窗口數(shù)據(jù)的上限。在數(shù)據(jù)傳輸過程中,TCP提供了一種基于滑動窗口協(xié)議的流量控制機制,用接收端接收能力(緩沖區(qū)的容量)的大小來控制發(fā)送端發(fā)送的數(shù)據(jù)量。在建立連接時,通信雙方使用SYN報文段或ACK報文段中的窗口字段捎帶著各自的接收窗口尺寸,即通知對方從而確定對方發(fā)送窗口的上限。在數(shù)據(jù)傳輸過程中,發(fā)送方按接收方通知的窗口尺寸和序號發(fā)送一定量的數(shù)據(jù),接收方根據(jù)接收緩沖區(qū)的使用情況動態(tài)調(diào)整接收窗口尺寸,并在發(fā)送TCP報文段或確認段時捎帶新的窗口尺寸和確認號通知發(fā)送方。如圖6-8所示。設(shè)主機A向主機B發(fā)送數(shù)據(jù)。雙方確定的窗口值是400。設(shè)一個報文段為100字節(jié)長,序號的初始值為1(即SEQ?=?1)。在圖6-8中,主機B進行了三次流量控制。第一次將窗口減小為300字節(jié),第二次將窗口又減為200字節(jié),最后一次減至零,即不允許對方再發(fā)送數(shù)據(jù)了。這種暫停狀態(tài)將持續(xù)到主機B重新發(fā)出一個新的窗口值為止。圖6-8利用可變滑動窗口進行流量控制
2.擁塞控制采用滑動窗口機制還可對網(wǎng)絡(luò)進行擁塞控制,將網(wǎng)絡(luò)中的分組(TCP報文段作為其數(shù)據(jù)部分)數(shù)量維持在一定的數(shù)量之下,當超過該數(shù)值時,網(wǎng)絡(luò)的性能會急劇惡化。傳輸層的擁塞控制有慢啟動(Slow-Start)、擁塞避免(CongestionAvoidance)、快重傳(FastRetransmit)和快恢復(fù)(FastRecovery)四種算法。
6.3.4重發(fā)機制重發(fā)機制是TCP中最重要、最復(fù)雜的問題之一。TCP每發(fā)送一個報文段,就設(shè)置一次定時器。只要定時器設(shè)置的重發(fā)時間到而還沒有收到確認,就要重發(fā)這一報文段。大家知道,TCP是在互聯(lián)網(wǎng)的環(huán)境下工作,發(fā)送的報文段可能只經(jīng)過一個高速率的局域網(wǎng),但也可能經(jīng)過多個低速率的廣域網(wǎng),報文段的端到端時延會相差很多倍。那么,定時器的重發(fā)時間究竟應(yīng)設(shè)置為多大?
TCP采用了一種自適應(yīng)算法。這種算法記錄每一個報文段發(fā)出的時間,以及收到相應(yīng)的確認報文段的時間,這兩個時間之差就是報文段的往返時延。將各個報文段的往返時延樣本加權(quán)平均,就得出報文段的平均往返時延T。6.4用戶數(shù)據(jù)協(xié)議(UDP)
UDP只在IP的數(shù)據(jù)報服務(wù)之上增加了很少的功能,即端口的功能(有了端口,傳輸層就能進行復(fù)用和分用)和差錯檢測的功能。UDP在某些方面有其特殊的優(yōu)點:
(1)發(fā)送數(shù)據(jù)之前不需要建立連接,減少了開銷和發(fā)送數(shù)據(jù)之前的時延。
(2)?UDP不使用擁塞控制,也不保證可靠交付,因此主機不需要維持具有許多參數(shù)而又復(fù)雜的連接狀態(tài)表。
(3)?UDP用戶數(shù)據(jù)報只有8個字節(jié)的首部。
(4)由于UDP沒有擁塞控制,因此網(wǎng)絡(luò)出現(xiàn)的擁塞不會使源主機的發(fā)送效率降低,這對某些實時應(yīng)用是很重要的。很多的實時應(yīng)用(如IP電話、實時視頻會議等)要求源主機以恒定的速度發(fā)送數(shù)據(jù),并且允許在網(wǎng)絡(luò)發(fā)生擁塞時丟失一些數(shù)據(jù),但卻不允許數(shù)據(jù)有太大的時延,UDP正好能滿足這種要求。
UDP常用于一次性傳輸數(shù)據(jù)量較小的網(wǎng)絡(luò)應(yīng)用,如SNMP、DNS等應(yīng)用數(shù)據(jù)的傳輸。因為對于這些一次性傳輸數(shù)據(jù)量較小的網(wǎng)絡(luò)應(yīng)用,若采用TCP服務(wù),則所付出的關(guān)于連接建立、維護和拆除的開銷是非常不合算的。表6-2列出了一些應(yīng)用和應(yīng)用層協(xié)議主要使用的傳輸層協(xié)議。表6-2應(yīng)用層協(xié)議使用的傳輸層協(xié)議6.4.1UDP數(shù)據(jù)報的首部格式
UDP有兩個字段:數(shù)據(jù)字段和首部字段。首部字段只有8個字節(jié),由4個字段組成,每個字段都是兩個字節(jié)。如圖6-9所示。各字段意義如下:源端口:占16bit,源端口號。目的端口:占16bit,目的端口號。
UDP報文長度:占16bit,UDP用戶數(shù)據(jù)報的長度。校驗和:占16bit,防止UDP用戶數(shù)據(jù)報在傳輸中出錯。在UDP協(xié)議中也采用與TCP中類似的端口概念來標識同一主機上的不同網(wǎng)絡(luò)進程,并且兩者在分配方式上也是類似的。UDP與應(yīng)用層之間的端口都是用報文隊列來實現(xiàn)的。圖6-9UDP數(shù)據(jù)報的首部6.4.2UDP報文的發(fā)送和接收如同TCP報文一樣,UDP報文也是通過IP協(xié)議來發(fā)送和接收的。在發(fā)送數(shù)據(jù)時,UDP實體構(gòu)造好UDP報文后,交付給IP協(xié)議,IP協(xié)議將整個UDP報文封裝在IP數(shù)據(jù)報中,形成IP數(shù)據(jù)報(如圖6-9所示)發(fā)送到網(wǎng)絡(luò)中。在接收數(shù)據(jù)時,UDP實體判斷UDP報文的目的端口是否與當前使用的某個端口匹配。若匹配,則將報文存入接收隊列;若不匹配,則向源端發(fā)送一個端口不可達的ICMP報文,同時丟棄UDP報文。6.4.3TCP與UDP的區(qū)別
TCP傳輸控制協(xié)議提供的是面向連接、可靠的字節(jié)流服務(wù)。當客戶和服務(wù)器彼此交換數(shù)據(jù)前,必須先在雙方之間建立一個TCP連接,之后才能傳輸數(shù)據(jù)。TCP提供超時重發(fā)、丟棄重復(fù)數(shù)據(jù)、檢驗數(shù)據(jù)、流量控制等功能,保證數(shù)據(jù)能從一端傳到另一端。
UDP用戶數(shù)據(jù)報協(xié)議是一個簡單的面向數(shù)據(jù)報的運輸層協(xié)議。UDP不提供可靠性,它只是把應(yīng)用程序傳給IP層的數(shù)據(jù)報發(fā)送出去,但是并不能保證它們能到達目的地。由于UDP在傳輸數(shù)據(jù)報前不用在客戶和服務(wù)器之間建立一個連接,且沒有超時重發(fā)等機制,故傳輸速度很快。
TCP協(xié)議和UDP協(xié)議的一些特性區(qū)別如下:
(1)?TCP協(xié)議在傳送數(shù)據(jù)段的時候要給段標號;UDP協(xié)議無需對數(shù)據(jù)段編號。
(2)?TCP協(xié)議可靠;UDP協(xié)議不可靠。
(3)?TCP協(xié)議是面向連接的;UDP協(xié)議面向無連接。
(4)?TCP協(xié)議負載較高,采用虛電路;UDP協(xié)議低負載。
(5)?TCP協(xié)議的發(fā)送方要確認接受方是否收到數(shù)據(jù)段(三次握手協(xié)議)。
(6)?TCP協(xié)議采用基于滑動窗口技術(shù)的流量控制機制。本章小結(jié)傳輸層是整個協(xié)議層次的核心,其功能是為源主機到目的主機提供可靠、價格低廉的數(shù)據(jù)傳輸,而與當前使用的網(wǎng)絡(luò)無關(guān)。本章主要介紹傳輸層的基本概念,包括:傳輸層提供給高層的服務(wù)、傳輸層的兩種連接方式,其中特別應(yīng)明確傳輸層的尋址與網(wǎng)絡(luò)層的尋址的區(qū)別。傳輸層協(xié)議的復(fù)雜程度取決于網(wǎng)絡(luò)傳輸質(zhì)量和網(wǎng)絡(luò)層服務(wù)的水平。傳輸層功能的實質(zhì)是最終完成端到端的可靠連接,在此,要特別明確“端”是指用戶應(yīng)用程序的“端口”,即傳輸層的“地址”要落實到端口號。本章重點介紹了因特網(wǎng)中的兩種傳輸層協(xié)議TCP和UDP,詳細分析了TCP中連接建立和釋放的過程及原理,比較了TCP和UDP各自的特點習題一、名詞解釋端口套接字二、填空題
1.在IP互聯(lián)網(wǎng)中,
和
是傳輸層最重要的兩種協(xié)議,它們?yōu)樯蠈佑脩籼峁┎煌墑e的通信可靠性。
2.?TCP可以提供
服務(wù)。UDP可以提供
服務(wù)。
3.在TCP/IP體系中,根據(jù)所使用的協(xié)議是TCP或UDP,將所傳輸?shù)臄?shù)據(jù)分別稱為
或
。
4.?TCP連接包括
、
和
三個過程。
5.?TCP采用
機制實現(xiàn)流量控制功能。
6.傳輸層的擁塞控制有
、
、
和
四種算法。
7.?TCP通過
提供連接服務(wù),最后通過連接服務(wù)來接收和發(fā)送數(shù)據(jù)。
8.在TCP協(xié)議報頭中包括
、
、
、
、
和
6個字段,其中
用于建立連接,
用于復(fù)位一個連接,
用于標志緊急數(shù)據(jù),而
確認是否有效。三、選擇題
1.為了保證連接的可靠性,TCP通常采用()。
A.三次握手法 B.窗口控制機制
C.端口機制 D.自動重發(fā)機制
2.在TCP/IP協(xié)議簇中,UDP協(xié)議工作在()。
A.應(yīng)用層 B.傳輸層
C.網(wǎng)絡(luò)互聯(lián)層 D.網(wǎng)絡(luò)接口層
3.關(guān)于TCP和UDP,下列說法中錯誤的是()。
A.?TCP和UDP的端口號是相互獨立的
B.?TCP和UDP的端口號是完全相同的,沒有本質(zhì)區(qū)別
C.在利用TCP發(fā)送數(shù)據(jù)前,需要與對方建立一條TCP連接
D.在利用UDP發(fā)送數(shù)據(jù)前,不需要與對方建立連接
4.三次握手方法用于()。
A.傳輸層連接的建立
B.數(shù)據(jù)鏈路層的流量控制
C.傳輸層的重復(fù)檢測
D.傳輸層的流量控制
5.傳輸層可以通過()標識不同的應(yīng)用。
A.物理地址 B.端口號
C.?IP地址 D.邏輯地址
6~10.基于TCP/IP的因特網(wǎng)服務(wù)中,IP協(xié)議提供主機之間的(6)分組傳輸服務(wù)。TCP協(xié)議提供端口之間的(7)報文傳輸服務(wù);為了實現(xiàn)可靠的服務(wù),采用超時重傳、確認捎帶技術(shù)。傳輸中的協(xié)議規(guī)定,在確認信息中捎帶(8)的序號以減少通信量。TCP使用三次握手協(xié)議來建立連接,設(shè)甲乙雙方發(fā)送報文的初始序號分別為x和y,甲方發(fā)送(9)的報文給乙方,乙方接收報文后發(fā)送(10)的報文給甲方,然后甲方發(fā)送一個確認報文給乙,從而建立了連接。
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度全國總代理合同:XX服裝品牌全國市場總代理權(quán)授權(quán)書
- 臺球館裝修合同模板及明細
- 2025年度塑膠顆粒行業(yè)人才培訓(xùn)與引進合作協(xié)議
- 2025年度房屋租賃房東合同-租賃合同風險防控指南
- 工廠水電安裝協(xié)議范本
- 2025年度多式聯(lián)運貨物保險合同樣本
- 2025年度醫(yī)療機構(gòu)執(zhí)業(yè)藥師聘用合同及藥品安全培訓(xùn)協(xié)議
- 2025年度手電動車轉(zhuǎn)讓協(xié)議書:手電動車品牌加盟連鎖經(jīng)營合同
- 2025年度互聯(lián)網(wǎng)干股合作協(xié)議范本
- 2025年度個人銀行卡領(lǐng)用與高端商務(wù)服務(wù)合同
- 精裝修施工圖深化內(nèi)容及要求
- 《克雷洛夫寓言》閱讀指導(dǎo)課件
- 《無人機載荷與行業(yè)應(yīng)用》 課件全套 第1-6章 無人機任務(wù)載荷系統(tǒng)概述- 未來展望與挑戰(zhàn)
- 《室內(nèi)照明設(shè)計》(熊杰)794-5 教案 第7節(jié) 綠色照明、節(jié)能照明與應(yīng)急照明
- 腦卒中后認知障礙的護理課件
- 《大學(xué)生國防教育教程》第四章
- 抑郁病診斷證明書
- mks robin nano主板使用手冊信息科技保留一切權(quán)利
- 幼兒教師口語(高職學(xué)前教育)PPT完整全套教學(xué)課件
- 婦產(chǎn)科運用PDCA降低產(chǎn)后乳房脹痛發(fā)生率品管圈成果報告書
- 第四章泵的汽蝕
評論
0/150
提交評論