UDP
出自 MBA智库百科(https://wiki.mbalib.com/)
UDP(User Datagram Protocol,用戶數據報協議)
目錄 |
UDP是User Datagram Protocol的簡稱,是TCP/IP體繫結構中一種無連接的傳輸層協議,提供面向事務的簡單不可靠信息傳送服務。UDP協議是IP協議與上層協議的介面,用埠號分別為運行在同一設備上的多個應用程式提供服務。它定義在IETFRFC768中。
UDP是分發信息的理想協議,適用於追求效率且不需要額外可靠機制的情形,如音、視頻流媒體分發、高層協議或應用程式提供錯誤和流控制功能時的快速數據分發。UDP服務於很多知名應用,如網路文件系統(NFS)、簡單網路管理協}義(SNMP)、功能變數名稱系統(DNS)以及簡單文件傳輸系統(TFTP)、動態主機配置協議(DHCP)、路由信息協議(RIP)等。
每一個UDP報文稱為一個用戶數據報,分UDP報頭和UDP數據區兩部分。報頭由四個16位長的欄位組成,分別說明該報文的源埠、目的埠、報文長度以及校驗和。
源埠欄位和目的欄位包含了16位的UDP協議埠號。長度欄位記錄該數據報的長度。以8位為組計算,包括報頭和用戶數據區。校驗和欄位是可選擇的,如該欄位值為0表明不進行校驗。一般來說,使用校驗和欄位是必要的。
1、TCP基於連接,而UDP基於無連接;
2、TCP基於可靠的傳輸,而UDP基於不可靠的傳輸;
TCP的可靠保證,是它的三次握手機制,這一機制保證校驗了數據,保證了他的可靠性。而UDP就沒有了,UDP可能丟包、不能保證數據順序,所以不可靠。
3、對系統資源的要求(TCP較多,UDP少);
4、TCP報文是流模式,而UDP報文是數據報模式;
5、TCP適用於傳輸大量的數據,而UDP適用於少量數據的傳輸;
6、速度上的區別;由於不對數據進行校驗,且無需進行三次握手,因此UDP的速度是TCP比不了的。在我們日常的應用程式中老版QQ就是用UDP協議傳輸的,HTTP是用TCP協議傳輸的,它們在傳輸速度上的比較,讀者自己體驗一下就能發現區別了。
如果比較UDP包和TCP包的結構,很明顯UDP包不具備TCP包複雜的可靠性與控制機制。與TCP協議相同,UDP的源埠數和目的埠數也都支持一臺主機上的多個應用。一個16位的UDP包包含了一個位元組長的頭部和數據的長度,校驗碼域使其可以進行整體校驗。許多應用只支持UDP,如:多媒體數據流,不產生任何額外的數據,即使知道有破壞的包也不進行重發。很明顯,當數據傳輸的性能必須讓位於數據傳輸的完整性、可控制性和可靠性時,TCP協議是當然的選擇。當強調傳輸性能而不是傳輸的完整性時,如:音頻和多媒體應用,UDP是最好的選擇。在數據傳輸時問很短,以至於此前的連接過程成為整個流量主體的情況下,UDP也是一個好的選擇,如:DNS交換。把SNMP建立在UDP上的部分原因是設計者認為當發生網路阻塞時,UDP較低的開銷使其有更好的機會去傳送管理數據。TCP豐富的功能有時會導致不可預料的性能低下,但是TCP可靠的點對點連接越來越被絕大多數的網路應用系統所採用。