UDP協(xié)議簡(jiǎn)介及其應(yīng)用
UDP 是User Datagram Protocol的簡(jiǎn)稱, 中文名是用戶數(shù)據(jù)包協(xié)議,是OSI(Open System Interconnection,開放式系統(tǒng)互聯(lián)) 參考模型中一種無連接的傳輸層協(xié)議,提供面向事務(wù)的簡(jiǎn)單不可靠信息傳送服務(wù),IETF RFC 768 [1] 是UDP的正式規(guī)范。UDP在IP報(bào)文的協(xié)議號(hào)是17。UDP協(xié)議與TCP協(xié)議一樣用于處理數(shù)據(jù)包,在OSI模型中,兩者都位于傳輸層,處于IP協(xié)議的上一層。UDP有不提供數(shù)據(jù)包分組、組裝和不能對(duì)數(shù)據(jù)包進(jìn)行排序的缺點(diǎn),也就是說,當(dāng)報(bào)文發(fā)送之后,是無法得知其是否安全完整到達(dá)的。UDP用來支持那些需要在計(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é)議從問世至今已經(jīng)被使用了很多年,雖然其最初的光彩已經(jīng)被一些類似協(xié)議所掩蓋,但即使在今天UDP仍然不失為一項(xiàng)非常實(shí)用和可行的網(wǎng)絡(luò)傳輸層協(xié)議。許多應(yīng)用只支持UDP,如:多媒體數(shù)據(jù)流,不產(chǎn)生任何額外的數(shù)據(jù),即使知道有破壞的包也不進(jìn)行重發(fā)。當(dāng)強(qiáng)調(diào)傳輸性能而不是傳輸?shù)耐暾詴r(shí),如:音頻和多媒體應(yīng)用,UDP是最好的選擇。在數(shù)據(jù)傳輸時(shí)間很短,以至于此前的連接過程成為整個(gè)流量主體的情況下,UDP也是一個(gè)好的選擇。
UDP和TCP協(xié)議的主要區(qū)別是兩者在如何實(shí)現(xiàn)信息的可靠傳遞方面不同。TCP協(xié)議中包含了專門的傳遞保證機(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ù)包的丟失,協(xié)議本身并不能做出任何檢測(cè)或提示。因此,通常人們把UDP協(xié)議稱為不可靠的傳輸協(xié)議。
TCP 是面向連接的傳輸控制協(xié)議,而UDP 提供了無連接的數(shù)據(jù)報(bào)服務(wù);TCP 具有高可靠性,確保傳輸數(shù)據(jù)的正確性,不出現(xiàn)丟失或亂序;UDP 在傳輸數(shù)據(jù)前不建立連接,不對(duì)數(shù)據(jù)報(bào)進(jìn)行檢查與修改,無須等待對(duì)方的應(yīng)答,所以會(huì)出現(xiàn)分組丟失、重復(fù)、亂序,應(yīng)用程序需要負(fù)責(zé)傳輸可靠性方面的所有工作;UDP 具有較好的實(shí)時(shí)性,工作效率較 TCP 協(xié)議高;UDP 段結(jié)構(gòu)比 TCP 的段結(jié)構(gòu)簡(jiǎn)單,因此網(wǎng)絡(luò)開銷也小。TCP 協(xié)議可以保證接收端毫無差錯(cuò)地接收到發(fā)送端發(fā)出的字節(jié)流,為應(yīng)用程序提供可靠的通信服務(wù)。對(duì)可靠性要求高的通信系統(tǒng)往往使用 TCP 傳輸數(shù)據(jù)。
適用場(chǎng)合
在選擇UDP作為傳輸協(xié)議時(shí)必須要謹(jǐn)慎。在網(wǎng)絡(luò)質(zhì)量令人十分不滿意的環(huán)境下,UDP協(xié)議數(shù)據(jù)包丟失會(huì)比較嚴(yán)重。但是由于UDP的特性:它不屬于連接型協(xié)議,因而具有資源消耗小,處理速度快的優(yōu)點(diǎn),所以通常音頻、視頻和普通數(shù)據(jù)在傳送時(shí)使用UDP較多,因?yàn)樗鼈兗词古紶杹G失一兩個(gè)數(shù)據(jù)包,也不會(huì)對(duì)接收結(jié)果產(chǎn)生太大影響。比如我們聊天用的ICQ和QQ就是使用的UDP協(xié)議。
實(shí)際應(yīng)用
在現(xiàn)場(chǎng)測(cè)控領(lǐng)域,面向的是分布化的控制器、監(jiān)測(cè)器等,其應(yīng)用場(chǎng)合環(huán)境比較惡劣,這樣就對(duì)待傳輸數(shù)據(jù)提出了不同的要求,如實(shí)時(shí)、抗干擾性、安全性等?;诖?,現(xiàn)場(chǎng)通信中,若某一應(yīng)用要將一組數(shù)據(jù)傳送給網(wǎng)絡(luò)中的另一個(gè)節(jié)點(diǎn),可由UDP進(jìn)程將數(shù)據(jù)加上報(bào)頭后傳送給IP進(jìn)程,UDP協(xié)議省去了建立連接和拆除連接的過程,取消了重發(fā)檢驗(yàn)機(jī)制,能夠達(dá)到較高的通信速率。