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