UDP通信協(xié)議簡(jiǎn)介_第1頁
UDP通信協(xié)議簡(jiǎn)介_第2頁
UDP通信協(xié)議簡(jiǎn)介_第3頁
UDP通信協(xié)議簡(jiǎn)介_第4頁
UDP通信協(xié)議簡(jiǎn)介_第5頁
免費(fèi)預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

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

文檔簡(jiǎn)介

1、一、UDP 概述1、UDP 是一種基本的通信協(xié)議,只在發(fā)送的報(bào)文中增加了端口尋址和可選的差錯(cuò)檢測(cè)功能。2、UDP 不是一種握手信息協(xié)議,不能確認(rèn)接收到的數(shù)據(jù)或交換其他流量控制信息。3、UDP 是一種非連接協(xié)議,計(jì)算機(jī)在使用 UDP 發(fā)送報(bào)文之前,不要求遠(yuǎn)程已聯(lián)網(wǎng)或指定的目的端口可用于通信。正因?yàn)槿绱?,?UDP 稱為不可靠協(xié)議,即如果只使用UDP,則發(fā)送方不知道目的主機(jī)何時(shí)是否接收到報(bào)文。4、定義 UDP 的文檔是 RFC0768:UserDatagramProtacal。在標(biāo)準(zhǔn) STD0006 中也獲得通過。5、使用 UDP 發(fā)送報(bào)文的計(jì)算機(jī)將報(bào)文置于 UDP 數(shù)據(jù)報(bào)中。UDP 數(shù)據(jù)報(bào)由報(bào)頭

2、及其后面包含報(bào)文的報(bào)文組成。6、發(fā)送計(jì)算機(jī)將 UDP 數(shù)據(jù)報(bào)置于 IP 數(shù)據(jù)報(bào)的數(shù)據(jù)字段中。在以太網(wǎng)中,IP 數(shù)據(jù)報(bào)存放在以太網(wǎng)幀的數(shù)據(jù)字段中。接收到以太網(wǎng)幀后,目的計(jì)算機(jī)網(wǎng)絡(luò)棧將 UDP 數(shù)據(jù)報(bào)的數(shù)據(jù)部分傳遞給數(shù)據(jù)報(bào)報(bào)頭指定的端口或進(jìn)程。7、 UDP 的大多數(shù)功能不如 TCP,所以 UDP 的實(shí)現(xiàn)要簡(jiǎn)單些, 更適合于特定的應(yīng)用場(chǎng)合。 如果需要, 則可在使用 UDP進(jìn)行通信時(shí)自定義握手協(xié)議。例如:接收接口在接收到報(bào)文之后,將返回包含確認(rèn)代碼或其他請(qǐng)求信息的響應(yīng)。如果發(fā)送方在合理的時(shí)間內(nèi)沒有接收到響應(yīng)信息,就會(huì)重新發(fā)送報(bào)文。但是,如果應(yīng)用程序需要的不僅僅是最基本的握手或流量控制,則應(yīng)該考慮使用

3、TCP 而不是 UDP 進(jìn)行重構(gòu)。8、UDP 有一個(gè) TCP 沒有的功能,就是可將報(bào)文發(fā)送到多個(gè)目的主機(jī),包括向局域網(wǎng)內(nèi)所有的 IP 地址以廣播方式發(fā)送,或者向指定的 IP 地址以組播方式發(fā)送。對(duì)于 TCP 而言,廣播和組播都不現(xiàn)實(shí),因?yàn)樵粗鳈C(jī)必須與所有目的主機(jī)握手。二、UDP 報(bào)頭UDP 報(bào)頭由 4 個(gè)字段組成,后面緊接著是要傳輸?shù)臄?shù)據(jù)。1、源端口號(hào):源端口號(hào)標(biāo)識(shí)發(fā)送報(bào)文的計(jì)算機(jī)端口或進(jìn)程。長(zhǎng)度 2 字節(jié),可選,如果接收進(jìn)程不需要知道發(fā)送數(shù)據(jù)報(bào)的進(jìn)程,則該字段可置為 0。2、目的端口號(hào):目的端口號(hào)標(biāo)識(shí)接收?qǐng)?bào)文的目的主機(jī)端口或進(jìn)程。2 字節(jié)。3、數(shù)據(jù)報(bào)長(zhǎng)度:指整個(gè)數(shù)據(jù)報(bào)的長(zhǎng)度,以字節(jié)為單位,包

4、括報(bào)頭,最大值為 65535o 該字段為 2 字節(jié)。4、UDP 檢驗(yàn)和:是根據(jù) UDP 數(shù)據(jù)報(bào)和偽報(bào)頭計(jì)算得到的差錯(cuò)檢測(cè)值,可選,該字段偽為 2 個(gè)字節(jié)。偽報(bào)頭包含源和目的 IP 地址,以及來自 IP 數(shù)據(jù)報(bào)報(bào)頭的協(xié)議值。IP 數(shù)據(jù)報(bào)在網(wǎng)絡(luò)中傳送時(shí)包含 UDP 數(shù)據(jù)報(bào)。偽報(bào)頭并不會(huì)在網(wǎng)絡(luò)中傳送,校驗(yàn)和中所包含的偽報(bào)頭內(nèi)容可以避免目的端錯(cuò)誤地接收錯(cuò)誤路由的數(shù)據(jù)報(bào)。校驗(yàn)和值的計(jì)算方法和 IP 報(bào)頭檢驗(yàn)和的計(jì)算方法類似。僅在局域網(wǎng)內(nèi)部傳輸報(bào)文不需要 UDP 校驗(yàn)和,因?yàn)橐蕴W(wǎng)幀的校驗(yàn)和已經(jīng)提供了差錯(cuò)控制。而對(duì)于那些需要通過不同的、也許未知網(wǎng)絡(luò)傳輸?shù)膱?bào)文而言,校驗(yàn)和可以讓目的主機(jī)能檢測(cè)到錯(cuò)誤數(shù)據(jù)。三、

5、UDP 數(shù)據(jù)1、一個(gè) UDP 數(shù)據(jù)報(bào)最大可達(dá)到 65535 個(gè)字節(jié),且報(bào)頭為 8 字節(jié),因此一個(gè)數(shù)據(jù)報(bào)最多可以攜帶 65527個(gè)字節(jié)的數(shù)據(jù)。2、實(shí)際上,源計(jì)算機(jī)常將數(shù)據(jù)報(bào)限制在較短的長(zhǎng)度內(nèi)。使用較短的數(shù)據(jù)報(bào)的一個(gè)原因是,過大的數(shù)據(jù)報(bào)可能不適合目的主機(jī)的接收緩沖器大??;或者因?yàn)榻邮諗?shù)據(jù)的應(yīng)用程序可能需要特定長(zhǎng)度的報(bào)文。3、較短數(shù)據(jù)報(bào)也許更高效。當(dāng)大的數(shù)據(jù)報(bào)經(jīng)過不同能力的網(wǎng)絡(luò)時(shí),網(wǎng)絡(luò)協(xié)議可能會(huì)將數(shù)據(jù)報(bào)拆分為報(bào)片,要求目的主機(jī)將這些報(bào)片重組。所有數(shù)據(jù)都會(huì)到達(dá)目的主機(jī),但一般來說,在源主機(jī)處拆分?jǐn)?shù)據(jù),然后在目的主機(jī)處重組,會(huì)比依賴 IP 進(jìn)行這項(xiàng)工作更高效。4、IP 標(biāo)準(zhǔn)要求主機(jī)能接收最大長(zhǎng)度為 57

6、6 字節(jié)的數(shù)據(jù)報(bào)。沒有可選項(xiàng)的 IP 報(bào)頭長(zhǎng)度為 20 字節(jié),UDP報(bào)頭為 8 字節(jié),因此一個(gè)最大長(zhǎng)度為 548 字節(jié)且沒有 IP 選項(xiàng)的 UDP 數(shù)據(jù)報(bào)不經(jīng)過拆分便可到達(dá)目的主機(jī)。UDPB議簡(jiǎn)介域源端口是可選域,當(dāng)其有意義時(shí),它指的是發(fā)送進(jìn)程的端口,這也就假定了在沒有其它信息的情況下,返回信息應(yīng)該向什么地方發(fā)送。如果不使用它,則在此域中填0。目的端口在有特定的目的網(wǎng)絡(luò)地址時(shí)有意義。長(zhǎng)度指的是此用戶數(shù)據(jù)報(bào)長(zhǎng)度的八進(jìn)制表示。(這表明最小的數(shù)據(jù)報(bào)長(zhǎng)度是8。)校驗(yàn)碼有16位,是對(duì)IP頭,UDP頭和數(shù)據(jù)中信息包頭的數(shù)位取反之和再取反得到的。包頭從概念上說是在UDP頭信息之前的,它包括有源地址,目的地地

7、址,所使用的協(xié)議和UDP長(zhǎng)度。這些信息使信息不能被錯(cuò)誤地接收。這個(gè)校驗(yàn)過程781516232431源地址目的地址0|協(xié)議|UDP長(zhǎng)度-斗-TCP 中使用的過程一致。如果計(jì)算出的校驗(yàn)碼為零,它將被全零發(fā)送。全零的校驗(yàn)值意味著發(fā)送者未產(chǎn)生校驗(yàn)碼。用戶接口用戶接口應(yīng)該允許創(chuàng)建新的接收端口,在接收端口的接收操作有:應(yīng)該返回一個(gè)八進(jìn)制數(shù)說明源端口和源地址,允許數(shù)據(jù)報(bào)傳送,指定數(shù)據(jù),源和目標(biāo)端口和目的地地址。IP 層接口UDP 模塊必須能夠決定源和目標(biāo)的網(wǎng)絡(luò)地址,而且必須能夠從包頭中得知所使用的協(xié)議。一個(gè)可能的接口方式是返回整個(gè)數(shù)據(jù)報(bào),包括接收操作返回的包頭。這樣的接口還應(yīng)該允許 UDP 向 IP 傳送完

8、整的帶包頭的數(shù)據(jù)報(bào)用于傳送。由 IP 來確定一致性并計(jì)算校驗(yàn)碼。協(xié)議應(yīng)用此協(xié)議的最主要的用途是網(wǎng)際名稱服務(wù)器和小文件傳輸協(xié)議。協(xié)議號(hào)在 IP 中使用它時(shí),它的協(xié)議號(hào)是 17(八進(jìn)制中是 21)。UDP 協(xié)議的標(biāo)題結(jié)構(gòu)UDP 信息包由UDP標(biāo)題和數(shù)據(jù)組成。UDP的標(biāo)題結(jié)構(gòu)如圖15-21所示,它由5個(gè)域組成:源端端口(SourcePort)、目的地端口(DestinationPort)、用戶數(shù)據(jù)包的長(zhǎng)度(Length)和檢查和(Checksum)。其中,前4個(gè)域組成UDP標(biāo)題(UDPheader),每個(gè)域由4個(gè)字節(jié)組成;檢查和域占據(jù)2個(gè)字節(jié),它用來檢測(cè)傳輸過程中是否出現(xiàn)了錯(cuò)誤;用戶數(shù)據(jù)包的長(zhǎng)度包括

9、所有5個(gè)域的字節(jié)數(shù)。源端端口(SourcePort)用畫搭包的長(zhǎng)底(Length)目的地端口(DestinationPort)檢查和(Checksum)數(shù)據(jù)(Date)UDP 信息包的標(biāo)題結(jié)構(gòu)檢查和的詳細(xì)計(jì)算可在 RFC1071 中找到,現(xiàn)舉一例說明使用檢查和檢測(cè)錯(cuò)誤的道理。例如,假設(shè)從源端 A 要發(fā)送下列 3 個(gè) 16 位的二進(jìn)制數(shù):word1,word2 和 word3到終端 B,檢查和計(jì)算如下:word10110011001100110word20101010101010101word30000111100001111sum=word1+word2+word311001010110010

10、10檢查和(sum 的反碼)0011010100110101從發(fā)送端發(fā)出的 4個(gè)(word1,2,3以及檢查和)16位二進(jìn)制數(shù)之和為 1111111111111111,如果接收端收到的這 4 個(gè) 16 位二進(jìn)制數(shù)之和也是全“1”,就認(rèn)為傳輸過程中沒有出差錯(cuò)。許多鏈路層協(xié)議都提供錯(cuò)誤檢查,包括流行的以太網(wǎng)協(xié)議,讀者也許想知道為什么 UDP 也要提供檢查和。 其原因是鏈路層以下的協(xié)議在源端和終端之間的某些通道可能不提供錯(cuò)誤檢測(cè)。雖然 UDP 提供有錯(cuò)誤檢測(cè),但檢測(cè)到錯(cuò)誤時(shí),UDP不做錯(cuò)誤校正,只是簡(jiǎn)單地把損壞的消息段扔掉,或者給應(yīng)用程序提供警告信息。讀者也可能會(huì)問,收發(fā)兩端的兩個(gè)進(jìn)程是否有可能通過

11、 UDP 提供可靠的數(shù)據(jù)傳輸?答案是可以的。但必需要把確認(rèn)和重傳措施加到應(yīng)用程序中,應(yīng)用程序不能指望 UDP 來提供可靠的數(shù)據(jù)傳輸。UDP 協(xié)議的幾個(gè)特性(1) UDP 是一個(gè)無連接協(xié)議,傳輸數(shù)據(jù)之前源端和終端不建立連接,當(dāng)它想傳送時(shí)就簡(jiǎn)單地去抓取來自應(yīng)用程序的數(shù)據(jù),并盡可能快地把它扔到網(wǎng)絡(luò)上。在發(fā)送07逐15162331端,UDP 傳送數(shù)據(jù)的速度僅僅是受應(yīng)用程序生成數(shù)據(jù)的速度、計(jì)算機(jī)的能力和傳輸帶寬的限制;在接收端,UDP 把每個(gè)消息段放在隊(duì)列中,應(yīng)用程序每次從隊(duì)列中讀一個(gè)消息段。(2) 由于傳輸數(shù)據(jù)不建立連接,因此也就不需要維護(hù)連接狀態(tài),包括收發(fā)狀態(tài)等,因此一臺(tái)服務(wù)機(jī)可同時(shí)向多個(gè)客戶機(jī)傳輸

12、相同的消息。(3) UDP 信息包的標(biāo)題很短,只有 8 個(gè)字節(jié),相對(duì)于 TCP 的 20 個(gè)字節(jié)信息包的額外開銷很小。(4) 吞吐量不受擁擠控制算法的調(diào)節(jié),只受應(yīng)用軟件生成數(shù)據(jù)的速率、傳輸帶寬、源端和終端主機(jī)性能的限制。雖然 UDP 是一個(gè)不可靠的協(xié)議,但它是分發(fā)信息的一個(gè)理想?yún)f(xié)議。例如,在屏幕上報(bào)告股票市場(chǎng)、在屏幕上顯示航空信息等等。UDP 也用在路由信息協(xié)議RIP(RoutingInformationProtocol)中修改路由表。在這些應(yīng)用場(chǎng)合下,如果有一個(gè)消息丟失,在幾秒之后另一個(gè)新的消息就會(huì)替換它。UDP 廣泛用在多媒體應(yīng)用中,例如,ProgressiveNetworks 公司開發(fā)的

13、 RealAudio 軟件,它是在因特網(wǎng)上把預(yù)先錄制的或者現(xiàn)場(chǎng)音樂實(shí)時(shí)傳送給客戶機(jī)的一種軟件,該軟件使用的RealAudioaudio-on-demandprotocol 協(xié)議就是運(yùn)行在 UDP 之上的協(xié)議, 大多數(shù)因特網(wǎng)電話軟件產(chǎn)品也都運(yùn)行在 UDP 之上。pageUDP 協(xié)議簡(jiǎn)介 UDP 協(xié)議是英文 UserDatagramProtocol 的縮寫,即用戶數(shù)據(jù)報(bào)協(xié)議,主要用來支持那些需要在計(jì)算機(jī)之間傳輸數(shù)據(jù)的網(wǎng)絡(luò)應(yīng)用。包括網(wǎng)絡(luò)視頻會(huì)議系統(tǒng)在內(nèi)的眾多的客戶/服務(wù)器模式的網(wǎng)絡(luò)應(yīng)用都需要使用 UDPW、議 oUDP議從問世至今已經(jīng)被使用了很多年,雖然其最初的光彩已經(jīng)被一些類似協(xié)議所掩蓋,但是即使

14、是在今天,UDP 仍然不失為一項(xiàng)非常實(shí)用和可行的網(wǎng)絡(luò)傳輸層協(xié)議。與我們所熟知的 TCP(傳輸控制協(xié)議)協(xié)議一樣,UDP議直接位于 IP(網(wǎng)際協(xié)議)協(xié)議的頂層。根據(jù) OSI(開放系統(tǒng)互連)參考模型,UD 所口 TCP 都屬于傳輸層協(xié)議。UDP 協(xié)議的主要作用是將網(wǎng)絡(luò)數(shù)據(jù)流量壓縮成數(shù)據(jù)報(bào)的形式。一個(gè)典型的數(shù)據(jù)報(bào)就是一個(gè)二進(jìn)制數(shù)據(jù)的傳輸單位。每一個(gè)數(shù)據(jù)報(bào)的前 8 個(gè)字節(jié)用來包含報(bào)頭信息,剩余字節(jié)則用來包含具體的傳輸數(shù)據(jù)。0UDP 報(bào)頭UDP 報(bào)頭由 4 個(gè)域組成,其中每個(gè)域各占用 2 個(gè)字節(jié),具體如下:源端口號(hào)目標(biāo)端口號(hào)數(shù)據(jù)報(bào)長(zhǎng)度校驗(yàn)值UDP 協(xié)議使用端口號(hào)為不同的應(yīng)用保留其各自的數(shù)據(jù)傳輸通道。UD

15、 濟(jì)口 TCP協(xié)議正是采用這一機(jī)制實(shí)現(xiàn)對(duì)同一時(shí)刻內(nèi)多項(xiàng)應(yīng)用同時(shí)發(fā)送和接收數(shù)據(jù)的支持。數(shù)據(jù)發(fā)送一方(可以是客戶端或服務(wù)器端)將 UDP 數(shù)據(jù)報(bào)通過源端口發(fā)送出去,而數(shù)據(jù)接收一方則通過目標(biāo)端口接收數(shù)據(jù)。有的網(wǎng)絡(luò)應(yīng)用只能使用預(yù)先為其預(yù)留或注冊(cè)的靜態(tài)端口;而另外一些網(wǎng)絡(luò)應(yīng)用則可以使用未被注冊(cè)的動(dòng)態(tài)端口。因?yàn)閁DP 報(bào)頭使用兩個(gè)字節(jié)存放端口號(hào),所以端口號(hào)的有效范圍是從 0 到 65535o 一般來說,大于 49151 的端口號(hào)都代表動(dòng)態(tài)端口。數(shù)據(jù)報(bào)的長(zhǎng)度是指包括報(bào)頭和數(shù)據(jù)部分在內(nèi)的總的字節(jié)數(shù)。因?yàn)閳?bào)頭的長(zhǎng)度是固定的,所以該域主要被用來計(jì)算可變長(zhǎng)度的數(shù)據(jù)部分(又稱為數(shù)據(jù)負(fù)載)。數(shù)據(jù)報(bào)的最大長(zhǎng)度根據(jù)操作環(huán)境

16、的不同而各異。從理論上說,包含報(bào)頭在內(nèi)的數(shù)據(jù)報(bào)的最大長(zhǎng)度為 65535 字節(jié)。不過,一些實(shí)際應(yīng)用往往會(huì)限制數(shù)據(jù)報(bào)的大小,有時(shí)會(huì)降低到 8192 字節(jié)。UDP 協(xié)議使用報(bào)頭中的校驗(yàn)值來保證數(shù)據(jù)的安全。校驗(yàn)值首先在數(shù)據(jù)發(fā)送方通過特殊的算法計(jì)算得出,在傳遞到接收方之后,還需要再重新計(jì)算。如果某個(gè)數(shù)據(jù)報(bào)在傳輸過程中被第三方篡改或者由于線路噪音等原因受到損壞,發(fā)送和接收方的校驗(yàn)計(jì)算值將不會(huì)相符,由此 UDP 協(xié)議可以檢測(cè)是否出錯(cuò)。這與 TCP 協(xié)議是不同的,后者要求必須具有校驗(yàn)值。UDPvs.TCPUDP 和 TCP 協(xié)議的主要區(qū)別是兩者在如何實(shí)現(xiàn)信息的可靠傳遞方面不同。TCP協(xié)議中包含了專門的傳遞保證

17、機(jī)制,當(dāng)數(shù)據(jù)接收方收到發(fā)送方傳來的信息時(shí),會(huì)自動(dòng)向發(fā)送方發(fā)出確認(rèn)消息;發(fā)送方只有在接收到該確認(rèn)消息之后才繼續(xù)傳送其它信息,否則將一直等待直到收到確認(rèn)信息為止。與 TCP 不同,UDP 協(xié)議并不提供數(shù)據(jù)傳送的保證機(jī)制。如果在從發(fā)送方到接收方的傳遞過程中出現(xiàn)數(shù)據(jù)報(bào)的丟失,協(xié)議本身并不能做出任何檢測(cè)或提示。因此,通常人們把 UDP 協(xié)議稱為不可靠的傳輸協(xié)議。相對(duì)于 TCP 協(xié)議,UDPW、議的另外一個(gè)不同之處在于如何接收突法性的多個(gè)數(shù)據(jù)報(bào)。不同于 TCP,UDP 并不能確保數(shù)據(jù)的發(fā)送和接收順序。 例如, 一個(gè)位于客戶端的應(yīng)用程序向服務(wù)器發(fā)出了以下 4 個(gè)數(shù)據(jù)報(bào)D1D22D333D4444但是 UDP 有可能按照以下順序?qū)⑺邮盏臄?shù)據(jù)提交到服務(wù)端的應(yīng)用:D333D1D4444D22事實(shí)上,UDP議的這種亂序性基本上很少出現(xiàn),通常只會(huì)在網(wǎng)絡(luò)非常擁擠的情況下才有可能發(fā)生。UDP 協(xié)議的應(yīng)用也許有的讀者會(huì)問,既然 UDP 是一種不可靠的網(wǎng)絡(luò)協(xié)議,那么還有什么使用價(jià)值或必要呢?其實(shí)不然,在有些情況下 UDP 協(xié)議可能會(huì)變得非常有用。因?yàn)閁DP 具有 TCP 所望塵莫及的速度優(yōu)勢(shì)。雖然 TCP 協(xié)議中植入了各種安全保障功能,但是在實(shí)際執(zhí)行的過程中會(huì)占用大量的系統(tǒng)開銷,無疑使速度受到嚴(yán)重的影響。反觀 UDP 由于排除了信息可靠

溫馨提示

  • 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)論