UDP(User Datagram Protocol)是一種無(wú)連接的、不可靠的網(wǎng)絡(luò)傳輸協(xié)議,通常用于在計(jì)算機(jī)網(wǎng)絡(luò)上發(fā)送較短的數(shù)據(jù)包。UDP協(xié)議由David P. Reed和Bob Kahn在1980年設(shè)計(jì)而成,屬于TCP/IP協(xié)議族中的一員。
1.UDP是什么
UDP是一種無(wú)連接的傳輸層協(xié)議,與TCP相對(duì)應(yīng),在互聯(lián)網(wǎng)上使用UDP的基本原因是,它比TCP更快、更簡(jiǎn)單。與TCP不同,UDP不需要建立連接、維護(hù)狀態(tài)或釋放連接。由于UDP不涉及握手和確認(rèn)過(guò)程,因此UDP較TCP具有更低的時(shí)延和更小的開(kāi)銷。但是,UDP無(wú)法保證消息傳遞的可靠性,也無(wú)法支持流量控制和擁塞控制,因此UDP主要用于一些實(shí)時(shí)性要求較高的應(yīng)用程序。
2.UDP的特點(diǎn)
- 無(wú)連接:發(fā)送方通過(guò)向目標(biāo)地址發(fā)送數(shù)據(jù)報(bào),而不需要為雙方之間建立連接;
- 不可靠:UDP沒(méi)有像TCP那樣提供數(shù)據(jù)包重傳機(jī)制和錯(cuò)誤恢復(fù)機(jī)制,如果丟失了一個(gè)數(shù)據(jù)包,它不會(huì)被自動(dòng)恢復(fù);
- 面向報(bào)文:UDP對(duì)各個(gè)應(yīng)用程序交給網(wǎng)絡(luò)層的數(shù)據(jù)報(bào),在添加首部后直接傳送,一次處理一個(gè)完整的報(bào)文;
- 簡(jiǎn)單高效:UDP頭部較TCP短,無(wú)需維護(hù)復(fù)雜的連接狀態(tài)表和擁塞控制算法,使其成為一種輕型傳輸協(xié)議。
3.UDP的應(yīng)用
UDP廣泛用于網(wǎng)絡(luò)游戲、流媒體、電話會(huì)議等實(shí)時(shí)性比較高的應(yīng)用中,這些應(yīng)用強(qiáng)調(diào)快速地發(fā)送一定量的數(shù)據(jù),并且對(duì)數(shù)據(jù)傳輸的可靠性要求不是非常高。例如:
- 音視頻播放時(shí),采用UDP的優(yōu)點(diǎn)在于,對(duì)于音頻或視頻來(lái)說(shuō),必須連貫傳送所需的數(shù)據(jù),而如果出現(xiàn)了延遲,就有可能發(fā)生卡頓;
- IP電話利用UDP,因?yàn)樗鼈冃枰⒓窗l(fā)送數(shù)據(jù)并確保低延遲,而不是等待TCP進(jìn)行錯(cuò)誤檢測(cè)和重傳;
- 域名系統(tǒng)(DNS)使用UDP來(lái)進(jìn)行名稱查找操作,這是因?yàn)橐话闱闆r下,一個(gè)UDP數(shù)據(jù)包足以傳遞DNS響應(yīng)信息,而TCP則太重;
- 網(wǎng)絡(luò)日志(syslog)也通常使用UDP,因?yàn)樗鼘?duì)當(dāng)前日志讀數(shù)沒(méi)有高度的可靠性要求,而且它的消息可以應(yīng)用于多個(gè)目的地。