UDP
1.什么是UDP
UDP是User Datagram Protocol的簡稱,是TCP/IP體系結(jié)構(gòu)中一種無連接的傳輸層協(xié)議,提供面向事務(wù)的簡單不可靠信息傳送服務(wù)。UDP協(xié)議是IP協(xié)議與上層協(xié)議的接口,用端口號分別為運行在同一設(shè)備上的多個應(yīng)用程序提供服務(wù)。它定義在IETFRFC768中。
UDP是分發(fā)信息的理想?yún)f(xié)議,適用于追求效率且不需要額外可靠機制的情形,如音、視頻流媒體分發(fā)、高層協(xié)議或應(yīng)用程序提供錯誤和流控制功能時的快速數(shù)據(jù)分發(fā)。UDP服務(wù)于很多知名應(yīng)用,如網(wǎng)絡(luò)文件系統(tǒng)(NFS)、簡單網(wǎng)絡(luò)管理協(xié)}義(SNMP)、域名系統(tǒng)(DNS)以及簡單文件傳輸系統(tǒng)(TFTP)、動態(tài)主機配置協(xié)議(DHCP)、路由信息協(xié)議(RIP)等。
2.UDP報文格式
每一個UDP報文稱為一個用戶數(shù)據(jù)報,分UDP報頭和UDP數(shù)據(jù)區(qū)兩部分。報頭由四個16位長的字段組成,分別說明該報文的源端口、目的端口、報文長度以及校驗和。
源端口字段和目的字段包含了16位的UDP協(xié)議端口號。長度字段記錄該數(shù)據(jù)報的長度。以8位為組計算,包括報頭和用戶數(shù)據(jù)區(qū)。校驗和字段是可選擇的,如該字段值為0表明不進行校驗。一般來說,使用校驗和字段是必要的。
3.TCP和UDP的比較
1、TCP基于連接,而UDP基于無連接;
2、TCP基于可靠的傳輸,而UDP基于不可靠的傳輸;
TCP的可靠保證,是它的三次握手機制,這一機制保證校驗了數(shù)據(jù),保證了他的可靠性。而UDP就沒有了,UDP可能丟包、不能保證數(shù)據(jù)順序,所以不可靠。
3、對系統(tǒng)資源的要求(TCP較多,UDP少);
4、TCP報文是流模式,而UDP報文是數(shù)據(jù)報模式;
5、TCP適用于傳輸大量的數(shù)據(jù),而UDP適用于少量數(shù)據(jù)的傳輸;
6、速度上的區(qū)別;由于不對數(shù)據(jù)進行校驗,且無需進行三次握手,因此UDP的速度是TCP比不了的。在我們?nèi)粘5膽?yīng)用程序中老版QQ就是用UDP協(xié)議傳輸?shù)模琀TTP是用TCP協(xié)議傳輸?shù)?,它們在傳輸速度上的比較,讀者自己體驗一下就能發(fā)現(xiàn)區(qū)別了。
4.TCP與UDP的選擇
如果比較UDP包和TCP包的結(jié)構(gòu),很明顯UDP包不具備TCP包復(fù)雜的可靠性與控制機制。與TCP協(xié)議相同,UDP的源端口數(shù)和目的端口數(shù)也都支持一臺主機上的多個應(yīng)用。一個16位的UDP包包含了一個字節(jié)長的頭部和數(shù)據(jù)的長度,校驗碼域使其可以進行整體校驗。許多應(yīng)用只支持UDP,如:多媒體數(shù)據(jù)流,不產(chǎn)生任何額外的數(shù)據(jù),即使知道有破壞的包也不進行重發(fā)。很明顯,當數(shù)據(jù)傳輸的性能必須讓位于數(shù)據(jù)傳輸?shù)耐暾浴⒖煽刂菩院涂煽啃詴r,TCP協(xié)議是當然的選擇。當強調(diào)傳輸性能而不是傳輸?shù)耐暾詴r,如:音頻和多媒體應(yīng)用,UDP是最好的選擇。在數(shù)據(jù)傳輸時問很短,以至于此前的連接過程成為整個流量主體的情況下,UDP也是一個好的選擇,如:DNS交換。把SNMP建立在UDP上的部分原因是設(shè)計者認為當發(fā)生網(wǎng)絡(luò)阻塞時,UDP較低的開銷使其有更好的機會去傳送管理數(shù)據(jù)。TCP豐富的功能有時會導(dǎo)致不可預(yù)料的性能低下,但是TCP可靠的點對點連接越來越被絕大多數(shù)的網(wǎng)絡(luò)應(yīng)用系統(tǒng)所采用。