UDP協(xié)議,UDP協(xié)議是什么意思
UDP協(xié)議,UDP協(xié)議是什么意思
UDP 是User Datagram Protocol的簡(jiǎn)稱, 中文名是用戶數(shù)據(jù)包協(xié)議,是 OSI 參考模型中一種無(wú)連接的傳輸層協(xié)議,提供面向事務(wù)的簡(jiǎn)單不可靠信息傳送服務(wù)。它是IETF RFC 768是UDP的正式規(guī)范。
UDP協(xié)議是英文UserDatagramProtocol的縮寫(xiě),即用戶數(shù)據(jù)報(bào)協(xié)議,主要用來(lái)支持那些需要在計(jì)算機(jī)之間傳輸數(shù)據(jù)的網(wǎng)絡(luò)應(yīng)用。包括網(wǎng)絡(luò)視頻會(huì)議系統(tǒng)在內(nèi)的眾多的客戶/服務(wù)器模式的網(wǎng)絡(luò)應(yīng)用都需要使用UDP協(xié)議。UDP協(xié)議從問(wèn)世至今已經(jīng)被使用了很多年,雖然其最初的光彩已經(jīng)被一些類似協(xié)議所掩蓋,但是即使是在今天,UDP仍然不失為一項(xiàng)非常實(shí)用和可行的網(wǎng)絡(luò)傳輸層協(xié)議。?
與我們所熟知的TCP(傳輸控制協(xié)議)協(xié)議一樣,UDP協(xié)議直接位于IP(網(wǎng)際協(xié)議)協(xié)議的頂層。根據(jù)OSI(開(kāi)放系統(tǒng)互連)參考模型,UDP和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é)用來(lái)包含報(bào)頭信息,剩余字節(jié)則用來(lái)包含具體的傳輸數(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ù)傳輸通道。UDP和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)通過(guò)源端口發(fā)送出去,而數(shù)據(jù)接收一方則通過(guò)目標(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到65535。一般來(lái)說(shuō),大于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)度是固定的,所以該域主要被用來(lái)計(jì)算可變長(zhǎng)度的數(shù)據(jù)部分(又稱為數(shù)據(jù)負(fù)載)。數(shù)據(jù)報(bào)的最大長(zhǎng)度根據(jù)操作環(huán)境的不同而各異。從理論上說(shuō),包含報(bào)頭在內(nèi)的數(shù)據(jù)報(bào)的最大長(zhǎng)度為65535字節(jié)。不過(guò),一些實(shí)際應(yīng)用往往會(huì)限制數(shù)據(jù)報(bào)的大小,有時(shí)會(huì)降低到8192字節(jié)。
UDP協(xié)議使用報(bào)頭中的校驗(yàn)值來(lái)保證數(shù)據(jù)的安全。校驗(yàn)值首先在數(shù)據(jù)發(fā)送方通過(guò)特殊的算法計(jì)算得出,在傳遞到接收方之后,還需要再重新計(jì)算。如果某個(gè)數(shù)據(jù)報(bào)在傳輸過(guò)程中被第三方篡改或者由于線路噪音等原因受到損壞,發(fā)送和接收方的校驗(yàn)計(jì)算值將不會(huì)相符,由此UDP協(xié)議可以檢測(cè)是否出錯(cuò)。這與TCP協(xié)議是不同的,后者要求必須具有校驗(yàn)值。
UDPvs.TCP
UDP和TCP協(xié)議的主要區(qū)別是兩者在如何實(shí)現(xiàn)信息的可靠傳遞方面不同。TCP協(xié)議中包含了專門的傳遞保證機(jī)制,當(dāng)數(shù)據(jù)接收方收到發(fā)送方傳來(lái)的信息時(shí),會(huì)自動(dòng)向發(fā)送方發(fā)出確認(rèn)消息;發(fā)送方只有在接收到該確認(rèn)消息之后才繼續(xù)傳送其它信息,否則將一直等待直到收到確認(rèn)信息為止。
與TCP不同,UDP協(xié)議并不提供數(shù)據(jù)傳送的保證機(jī)制。如果在從發(fā)送方到接收方的傳遞過(guò)程中出現(xiàn)數(shù)據(jù)報(bào)的丟失,協(xié)議本身并不能做出任何檢測(cè)或提示。因此,通常人們把UDP協(xié)議稱為不可靠的傳輸協(xié)議。
相對(duì)于TCP協(xié)議,UDP協(xié)議的另外一個(gè)不同之處在于如何接收突法性的多個(gè)數(shù)據(jù)報(bào)。不同于TCP,UDP并不能確保數(shù)據(jù)的發(fā)送和接收順序。例如,一個(gè)位于客戶端的應(yīng)用程序向服務(wù)器發(fā)出了以下4個(gè)數(shù)據(jù)報(bào)
D1
D22
D333
D4444
但是UDP有可能按照以下順序?qū)⑺邮盏臄?shù)據(jù)提交到服務(wù)端的應(yīng)用:
D333
D1
D4444
D22
事實(shí)上,UDP協(xié)議的這種亂序性基本上很少出現(xiàn),通常只會(huì)在網(wǎng)絡(luò)非常擁擠的情況下才有可能發(fā)生。
UDP協(xié)議的應(yīng)用
也許有的讀者會(huì)問(wèn),既然UDP是一種不可靠的網(wǎng)絡(luò)協(xié)議,那么還有什么使用價(jià)值或必要呢?其實(shí)不然,在有些情況下UDP協(xié)議可能會(huì)變得非常有用。因?yàn)閁DP具有TCP所望塵莫及的速度優(yōu)勢(shì)。雖然TCP協(xié)議中植入了各種安全保障功能,但是在實(shí)際執(zhí)行的過(guò)程中會(huì)占用大量的系統(tǒng)開(kāi)銷,無(wú)疑使速度受到嚴(yán)重的影響。反觀UDP由于排除了信息可靠傳遞機(jī)制,將安全和排序等功能移交給上層應(yīng)用來(lái)完成,極大降低了執(zhí)行時(shí)間,使速度得到了保證。
關(guān)于UDP協(xié)議的最早規(guī)范是RFC768,1980年發(fā)布。盡管時(shí)間已經(jīng)很長(zhǎng),但是UDP協(xié)議仍然繼續(xù)在主流應(yīng)用中發(fā)揮著作用。包括視頻電話會(huì)議系統(tǒng)在內(nèi)的許多應(yīng)用都證明了UDP協(xié)議的存在價(jià)值。因?yàn)橄鄬?duì)于可靠性來(lái)說(shuō),這些應(yīng)用更加注重實(shí)際性能,所以為了獲得更好的使用效果(例如,更高的畫(huà)面幀刷新速率)往往可以犧牲一定的可靠性(例如,會(huì)面質(zhì)量)。這就是UDP和TCP兩種協(xié)議的權(quán)衡之處。根據(jù)不同的環(huán)境和特點(diǎn),兩種傳輸協(xié)議都將在今后的網(wǎng)絡(luò)世界中發(fā)揮更加重要的作用.
[編輯本段]UDP報(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ù)傳輸通道。UDP和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)通過(guò)源端口發(fā)送出去,而數(shù)據(jù)接收一方則通過(guò)目標(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到65535。一般來(lái)說(shuō),大于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)度是固定的,所以該域主要被用來(lái)計(jì)算可變長(zhǎng)度的數(shù)據(jù)部分(又稱為數(shù)據(jù)負(fù)載)。數(shù)據(jù)報(bào)的最大長(zhǎng)度根據(jù)操作環(huán)境的不同而各異。從理論上說(shuō),包含報(bào)頭在內(nèi)的數(shù)據(jù)報(bào)的最大長(zhǎng)度為65535字節(jié)。不過(guò),一些實(shí)際應(yīng)用往往會(huì)限制數(shù)據(jù)報(bào)的大小,有時(shí)會(huì)降低到8192字節(jié)。
UDP協(xié)議使用報(bào)頭中的校驗(yàn)值來(lái)保證數(shù)據(jù)的安全。校驗(yàn)值首先在數(shù)據(jù)發(fā)送方通過(guò)特殊的算法計(jì)算得出,在傳遞到接收方之后,還需要再重新計(jì)算。如果某個(gè)數(shù)據(jù)報(bào)在傳輸過(guò)程中被第三方篡改或者由于線路噪音等原因受到損壞,發(fā)送和接收方的校驗(yàn)計(jì)算值將不會(huì)相符,由此UDP協(xié)議可以檢測(cè)是否出錯(cuò)。這與TCP協(xié)議是不同的,后者要求必須具有校驗(yàn)值。
許多鏈路層協(xié)議都提供錯(cuò)誤檢查,包括流行的以太網(wǎng)協(xié)議,也許想知道為什么UDP也要提供檢查和。其原因是鏈路層以下的協(xié)議在源端和終端之間的某些通道可能不提供錯(cuò)誤檢測(cè)。雖然UDP提供有錯(cuò)誤檢測(cè),但檢測(cè)到錯(cuò)誤時(shí),UDP不做錯(cuò)誤校正,只是簡(jiǎn)單地把損壞的消息段扔掉,或者給應(yīng)用程序提供警告信息。
[編輯本段]UDP協(xié)議的幾個(gè)特性
?。?) UDP是一個(gè)無(wú)連接協(xié)議,傳輸數(shù)據(jù)之前源端和終端不建立連接,當(dāng)它想傳送時(shí)就簡(jiǎn)單地去抓取來(lái)自應(yīng)用程序的數(shù)據(jù),并盡可能快地把它扔到網(wǎng)絡(luò)上。在發(fā)送端,UDP傳送數(shù)據(jù)的速度僅僅是受應(yīng)用程序生成數(shù)據(jù)的速度、計(jì)算機(jī)的能力和傳輸帶寬的限制;在接收端,UDP把每個(gè)消息段放在隊(duì)列中,應(yīng)用程序每次從隊(duì)列中讀一個(gè)消息段。
?。?) 由于傳輸數(shù)據(jù)不建立連接,因此也就不需要維護(hù)連接狀態(tài),包括收發(fā)狀態(tài)等,因此一臺(tái)服務(wù)機(jī)可同時(shí)向多個(gè)客戶機(jī)傳輸相同的消息。
?。?) UDP信息包的標(biāo)題很短,只有8個(gè)字節(jié),相對(duì)于TCP的20個(gè)字節(jié)信息包的額外開(kāi)銷很小。
?。?) 吞吐量不受擁擠控制算法的調(diào)節(jié),只受應(yīng)用軟件生成數(shù)據(jù)的速率、傳輸帶寬、源端和終端主機(jī)性能的限制。
?。?)UDP使用盡最大努力交付,即不保證可靠交付,因此主機(jī)不需要維持復(fù)雜的鏈接狀態(tài)表(這里面有許多參數(shù))。
?。?)UDP是面向報(bào)文的。發(fā)送方的UDP對(duì)應(yīng)用程序交下來(lái)的報(bào)文,在添加首部后就向下交付給IP層。既不拆分,也不合并,而是保留這些報(bào)文的邊界,因此,應(yīng)用程序需要選擇合適的報(bào)文大小?!?br> 雖然UDP是一個(gè)不可靠的協(xié)議,但它是分發(fā)信息的一個(gè)理想?yún)f(xié)議。例如,在屏幕上報(bào)告股票市場(chǎng)、在屏幕上顯示航空信息等等。UDP也用在路由信息協(xié)議RIP(Routing Information Protocol)中修改路由表。在這些應(yīng)用場(chǎng)合下,如果有一個(gè)消息丟失,在幾秒之后另一個(gè)新的消息就會(huì)替換它。UDP廣泛用在多媒體應(yīng)用中,例如,Progressive Networks公司開(kāi)發(fā)的RealAudio軟件,它是在因特網(wǎng)上把預(yù)先錄制的或者現(xiàn)場(chǎng)音樂(lè)實(shí)時(shí)傳送給客戶機(jī)的一種軟件,該軟件使用的RealAudio audio-on-demand protocol協(xié)議就是運(yùn)行在UDP之上的協(xié)議,大多數(shù)因特網(wǎng)電話軟件產(chǎn)品也都運(yùn)行在UDP之上。
UDP = uridine diphosphate,尿苷二磷酸,一種嘧啶核苷酸,由堿基、尿嘧啶與核糖組成,主要用途是RNA合成(轉(zhuǎn)錄)時(shí)的原料。 另外UDP也是DTP能量消耗后產(chǎn)物,功能類似ADP,但較ADP少見(jiàn)。參與微生物肽聚糖等的合成。
非常好我支持^.^
(0) 0%
不好我反對(duì)
(0) 0%
相關(guān)閱讀:
- [電子說(shuō)] 談?wù)剆ocket網(wǎng)絡(luò)編程的5大隱患 2023-10-07
- [電子說(shuō)] 開(kāi)放式用戶通訊TCP,ISO- on- TCP,UDP介紹 2023-09-08
- [電子說(shuō)] TCP和UDP協(xié)議的實(shí)現(xiàn)方法 2023-08-30
- [電子說(shuō)] 分享一個(gè)非常實(shí)用且強(qiáng)大的Linux nc命令 2023-08-16
- [電子說(shuō)] 教你一種實(shí)現(xiàn)異構(gòu)設(shè)備資源共享的方法 2023-08-11
- [電子說(shuō)] TCP和UDP分別是什么 TCP和UDP協(xié)議各有什么特點(diǎn) 2023-08-09
- [電子說(shuō)] YC8000-NAT-S可以實(shí)現(xiàn)NAT的地址轉(zhuǎn)換 2023-07-30
- [電子說(shuō)] Kubernetes Pod如何獲取IP地址呢? 2023-07-21
( 發(fā)表人:admin )