《計算機網(wǎng)絡(luò)與通信》課件-項目11 了解TCP、UDP協(xié)議_第1頁
《計算機網(wǎng)絡(luò)與通信》課件-項目11 了解TCP、UDP協(xié)議_第2頁
《計算機網(wǎng)絡(luò)與通信》課件-項目11 了解TCP、UDP協(xié)議_第3頁
《計算機網(wǎng)絡(luò)與通信》課件-項目11 了解TCP、UDP協(xié)議_第4頁
《計算機網(wǎng)絡(luò)與通信》課件-項目11 了解TCP、UDP協(xié)議_第5頁
已閱讀5頁,還剩45頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

學習目標知識目標:UDP和TCP協(xié)議知識技能目標:能夠分辨應(yīng)用程序使用的是那個傳輸層協(xié)議素質(zhì)目標:工程素質(zhì)概述在DoD模型中,傳輸層位于網(wǎng)絡(luò)層與應(yīng)用層之間,主要的功能是負責應(yīng)用程序之間的通訊。連接端口管理、流量控制、錯誤處理與數(shù)據(jù)重發(fā)都是傳輸層的工作。本章將介紹TCP/IP協(xié)議組合在傳輸層的兩個協(xié)議:UDP與TCP,借此說明傳輸層的各項功能。11.1UDP信息包的結(jié)構(gòu)和特性

11.1.1UDP信息包的結(jié)構(gòu)UDP信息包是由UDP報頭和UDP數(shù)據(jù)兩部分所組成:UDP報頭的結(jié)構(gòu)11.1.2UDPUDP(UserDatagramProtocol)是一個相當常用的協(xié)議,僅提供連接端口(Port)處理的功能。UDP具有以下特性:1.UDP報頭可記錄信息包來源端與目的端的連接端口信息,讓信息包能夠正確地送達目的端的應(yīng)用程序。2.無連接(Connectionless)的傳送特性。UDP與IP雖然是在不同層運作,但都是以非連接式的方式來傳送信息包。出于此特性,使得UDP的傳送過程比較簡單,但是相對地可靠性較差,在傳送過程中若發(fā)生問題,UDP并不具有確認、重送等機制,而是必須靠上層(應(yīng)用層)的協(xié)議來處理這些問題。使用UDP的應(yīng)用程序,通常是基于以下的考慮:1.為了要降低對計算機資源的需求。以DNS服務(wù)為例,由于可能要面對大量客戶端的詢問,若是使用TCP可能會耗費許多計算機資源,因此使用資源需求較低的UDP。2.應(yīng)用程序本身已提供數(shù)據(jù)完整性的檢查機制,因此毋須依賴傳輸層的協(xié)議來執(zhí)行此工作。此外,若應(yīng)用程序傳輸?shù)牟⒎顷P(guān)鍵性的數(shù)據(jù),例如:路由器會周期性地交換路由信息,若這次傳送失敗,下次仍有機會將信息重送。在這種情況下,也會使用UDP作為傳輸層的協(xié)議。3.要使用多點傳送(Multicast)或廣播傳送(Broadcast)等一對多的傳送方式時,必須使用UDP。這是因為使用面向連接(Connection-Oriented)傳送方式的TCP,僅限于一對一的傳送方式。11.1.3連接端口

UDP最重要的功能是管理連接端口。從先前介紹IP的章節(jié)中,我們已經(jīng)知道IP的功能是要將信息包正確地傳送至目的地。不過,當IP信息包送達目的地時,接下來便立即面臨一個問題,計算機上可能同時執(zhí)行多個應(yīng)用程序,例如:用戶同時打開IntemetExplorer與OutlookExpress,那么收到的IP信息包應(yīng)該送至哪一個應(yīng)用程序呢?UDP便是利用連接端口來解決上述的問題。連接端口的英文為Port,但它并非像是計算機并行口或串行口等實體的接頭,而是屬于一種邏輯上的概念。每一部使用TCP/IP的計算機,都會有許多連接端口,并使用編號以區(qū)分。應(yīng)用程序若通過TCP/IP存取數(shù)據(jù),就必須獨占一個連接端口編號。因此,當主機收到IP信息包后,可以憑此連接端口號,判斷要將信息包送給哪一個應(yīng)用程序來處理。連接端口號與IP地址兩者合起來稱為SocketAddress(簡稱為Socket),可用來定義IP信息包最后送達的終點,亦即目的地應(yīng)用程序。以現(xiàn)實生活為例,IP地址就如同某棟建筑物的地址,而連接端口號就如同建筑物內(nèi)的房間或窗口的號碼。假設(shè)您要去郵政總局聯(lián)系業(yè)務(wù),若只知道其地址為“雨花區(qū)韶山南路12號”,您只能找到該棟大樓。但是,郵政總局里面可能有許多個窗口,因此,只知道地址是不夠的,您還必須知道要去哪個窗口辦理。如果您能事先知道“雨花區(qū)韶山南路12號第8號窗口”這樣的信息,便能迅速正確地找到要去的部門。IP地址與連接端口號也是同樣的道理。一部計算機或許只有一個IP地址,但可能同時執(zhí)行許多個應(yīng)用程序。應(yīng)用程序彼此之間以連接端口號來區(qū)分。當計算機收到IP信息包時,便可根據(jù)其連接端口號(記錄在傳輸層協(xié)議的報頭中)判斷要交由哪個應(yīng)用程序來處理。當然,每個信息包除了要記錄目的端的連接端口號外,也會記錄來源端的連接端口號,以便相互傳遞信息包。所有與連接端口相關(guān)的工作,都是由傳輸層的協(xié)議來負責。連接端口號為16Bits長度的數(shù)字,可從0至65535。按照IANA(IntemetAssignedNumbersAuthority)的規(guī)定,0-1023的連接端口號稱為“Well-Known”(知名的)連接端口,主要給提供服務(wù)的應(yīng)用程序使用。凡是在IANA登記有檔案的應(yīng)用程序,都會分配到一個介于0-1023之間的固定連接端口號。例如:DNS為53,代表DNS服務(wù)都應(yīng)使用53的連接端口號。至于1024-65535的連接端口號則稱為“Registered/Dynamic”(動態(tài))連接端口,由客戶端自行使用。例如:客戶端使用IntemetExplorer連上網(wǎng)站時,系統(tǒng)會隨機分配一個連接端口號供InternetExplore使用。表11-1常見的Well-Known連接端口協(xié)議連接端口號應(yīng)用程序UDP53DNSUDP67BOOTPClientUDP68BOOTPServerUDP520RIPTCP19NNTPTCP20FTPDataTCP21FTPControlTCP23TelnetTCP25SMTPTCP80HTTP為什么服務(wù)器應(yīng)用程序必須使用Well-Known連接端口,而客戶端應(yīng)用程序可使用Registered/Dynamic連接端口呢?這是因為在—般網(wǎng)絡(luò)的應(yīng)用中,兩部計算機若要互傳信息包,一開始都是由客戶端主動送出信息包給服務(wù)器。換言之客戶端必須在送出信息包前便知道服務(wù)器應(yīng)用程序的連接端口號。因此服務(wù)器應(yīng)用程序所使用的連接端口號勢必遵循—套大家公認的規(guī)則,例如:Telnet服務(wù)應(yīng)該固定使用編號為23的連接端口,Web服務(wù)應(yīng)該固定使用編號為80的連接端口等。這些規(guī)則即形成了Well-Known的連接端口。至于客戶端應(yīng)用程序的連接端口號,由于服務(wù)器收到來自客戶端的信息包后,從報頭中便可得知客戶端應(yīng)用程序的連接端口號。因此,客戶端應(yīng)用程序不必像服務(wù)器樣必須硬性規(guī)定連接端口號。11.2TCP報頭及TCP的特性

11.2.1TCP信息包的結(jié)構(gòu)TCP報頭結(jié)構(gòu)TCP報頭結(jié)構(gòu)如圖11.4所示。其中主要字段的含義先簡單例在下面,以后用到時再詳細介紹其用途。

源端口:來源連接端口號,記錄來源端主機(A)上層應(yīng)用程序所用的TCP連接端口號。

目的端口:目的連接端口號,記錄目的端主機(B)上層應(yīng)用程序所用的TCP連接端口號。

順序號:記錄TCP數(shù)據(jù)的第1Byte在A→B傳輸通道字節(jié)流(BytesStream)中的位置。單位為Byte。

確認號:也稱為響應(yīng)序號,記錄A→B傳輸通道中,已收到連續(xù)性數(shù)據(jù)在A→BBytesStream中的位置,單位為Byte。

標志位可用來通知對方報頭中記錄了哪些有用的信息。以下為TCP報頭中常用的標志位。SYN:Synchronize(同步),代表序號字段記載的是初始序號ISN,換言之,此信息包為連接建立時第1或第2步驟的信息包。ACK:Acknowledge(響應(yīng)),代表響應(yīng)序號字段包含了確認的信息。FIN:Finish(完成),代表A→B已傳送完畢。只有在中止連線的第2或第4步驟,才會設(shè)置此標志位。窗口大小:設(shè)置來源端的發(fā)送窗口的大小11.2.2TCP的特性TCP為傳輸層的協(xié)議,與UDP同樣地具備處理連接端口的功能。除了連接端口功能外,更重要的是TCP提供了一種“可靠”的傳送機制。所謂“可靠”的傳輸方式,大致上可以歸納出TCP具有以下幾種特性:1.數(shù)據(jù)確認與重送當TCP來源端在傳送數(shù)據(jù)時,通過與目的端的相互溝通,可以確認目的端已收到送出的數(shù)據(jù)。如果目的端未收到某一部分數(shù)據(jù),來源端便可用重送的機制,重新傳送該數(shù)據(jù)。2.流量控制由于軟、硬件上的差異,每一部計算機處理數(shù)據(jù)的速度各不相同,因此TCP具有流量控制的功能,能夠視情況調(diào)整數(shù)據(jù)傳輸?shù)乃俣?,盡量減少數(shù)據(jù)流失的狀況。3.面向連接TCP為面向連接(Connection-Oriented)的通訊協(xié)議。所謂“面向連接”,是指應(yīng)用程序利用TCP傳輸數(shù)據(jù)時,首先必須建立TCP連接,彼此協(xié)調(diào)必要的參數(shù)(用于上述數(shù)據(jù)重發(fā)與確認、流量控制等功能),然后以連接為基礎(chǔ)來傳送數(shù)據(jù)。11.3TCP傳送機制

11.3.1確認與重發(fā)以下我們就利用一個簡單的模型,解釋如何以“確認與重發(fā)”的機制,可靠地傳送信息包。假設(shè)A要傳送信息包給B,通過下列步驟,A便可確認B已收到信息包:(1)A首先傳送Packet1信息包給B,然后開始計時,并等待B的響應(yīng)。(2)B收到Packet1信息包后,傳送ACK1信息包給A。ACK1信息包的內(nèi)容為“我已經(jīng)收到Packet1信息包了”。(3)A如果在預定的時間內(nèi)收到ACK1信息包,便可確認Packet1正常地到達目的地。接著即可傳送Packet2信息包給B,然后開始計時,并等待B的響應(yīng)。(4)B收到Packet2信息包后,傳送ACK2信息包給A。ACK2信息包的內(nèi)容為“我已經(jīng)收到Packet2信息包了”(如圖11.5)。至于在信息包傳送的過程中若出現(xiàn)錯誤,例如:Packet2在傳送途中失蹤了,此時B便不會發(fā)出ACK2給A。A若在預定的時間內(nèi)沒有收到ACK2,即判定B未收到Packet2,因此便重新傳送Packet2給B(見圖11.6)。11.3.2滑動窗口技術(shù)

上述信息包傳送的過程,雖然具有確認與重送的功能,但在性能方面卻造成很大的問題。這是因為當A每傳送出去一個信息包后,便只能耐心等,—直等到收到對應(yīng)的ACK信息包后,才能傳送下—個信息包。如果真的操作出這樣的協(xié)議,在整個傳送過程中,絕大部分時間勢必都浪費在等待ACK信息包。為了解決這個問題,就有聰明人想出一種叫做“SlidingWindow”的技術(shù)。讀者可以想象用一張中間挖空的厚紙板,挖空的部分即是所謂的Window,我們可從挖空的部分去查看來源端傳送出去的信息包。接著仍舊以A為來源端、B為目的端,說明如何利用SlidingWindow的機制來傳送信息包。在傳送—開始時,A的SlidingWindow應(yīng)該如圖11.7所示。圖11.7開始傳送時,A的滑動窗口A首先將Window內(nèi)看得見的所有信息包送出,也就是送出Packetl、Packet2和Packet3信息包,然后分別對這些信息包計時,并等候B響應(yīng)。B收到信息包后,會按信息包編號送回對應(yīng)的ACK信息包給A。例如,B收到Packet1,便會送回ACK1給A,假設(shè)一切正常,A首先會收到ACK1,接著便執(zhí)行以下操作:(1)將Packet1標示為“完成”(見圖11.8)。(2)將SlidingWindows往右滑動一格(如圖11.9)(3)將新進入SlidingWindow的Packet4(位于窗口的最右邊)送出。接下來當A收到ACK2與ACK3信息包時,仍重復上述步驟。整個過程如圖11.10所示。通過SlidingWindow方式,A可以迅速送出多個信息包。相對于每送出一個信息包便等待響應(yīng)ACK的信息,SlidingWindow顯然具有較佳的傳輸效率。這個問題在項目1中就分析過。11.3.3發(fā)送與接收窗口

先前說明SlidingWindow所舉的例子中,僅A具有SlidingWindow。不過,實際上TCP的來源端與目的端會有各自的SlidingWindow。為了方便區(qū)分,我們將來源端的SlidingWindow稱為SendWindow(發(fā)送窗口),目的端的SlidingWindow稱為ReceiveWindow(接收窗口)。我們?nèi)耘f以A為來源端、B為目的端,在傳送—開始時,B的接收窗口應(yīng)該如圖11.12所示。假設(shè)B是以Packet3、Packet1、Packet2的順序收到信息包,則B的ReceiveWindow會進行如下的操作:(1).B最先收到Packet3,這時候只要將Packet3標示為“收到”。由丁Packet3并非Window最左邊的信息包,因此不必送出ACK,也不用移動ReceiveWindow(見圖11-13)。(2)收到Packet1,這時候B除了將Packet1標示為“收到”外,因為Packet1為window最左邊的信息,因此必須送出ACK1,并將接收窗口向右移動一格(如圖11-14)(3)收到Packet2,這時候B除了將Packet2示為“收到”外,將接收窗口向右移動。因為Packet2后面的Packet3已標示為“收到”,因此會送出ACK2與ACK3,然后將接收窗口向右移動2格(如圖11-15)。下圖11-16總結(jié)發(fā)送與接收窗口在上述步驟中的變化。在接收窗口中,當信息包從窗口的最左邊出去后,即已送出對應(yīng)的ACK后,接著就應(yīng)該交給上層應(yīng)用程序了。不過,為了提高性能,B不會將這些信息包逐一轉(zhuǎn)交給上層應(yīng)用程序,而是先將它們放在緩沖區(qū),緩沖區(qū)滿了后再一次送給上層應(yīng)用程序。11.3.4窗口大小與流量控制

TCP具有一項重要的功能,便是流量控制(FlowControl),TCP能夠視情況需要隨時調(diào)整數(shù)據(jù)傳送速度。流量控制主要是靠滑動窗口的大小(稱為WindowSize)來調(diào)整:當WindowSize變小時,流量會變慢;當WindowSize變大時,流量會變快,但是相對地,較大的WindowSize會耗費較多的計算機資源。在決定WindowSize時,必須衡量上述兩種因素,從中取得平衡點。例如當計算機因為配備不夠好,或太忙時,會盡量使用較小的Window來傳輸信息。那么,WindowSize是由誰來決定的呢?答案是目的端。以先前的例子來說,B根據(jù)本身的狀況決定ReceiveWindow大小,然后將此信息放在ACK信息包中通知A,A再將發(fā)送窗口調(diào)整為相同的大小。11.3.6

溫馨提示

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

提交評論