UDP協(xié)議
UDP是傳輸層的重要協(xié)議之一,另一重要協(xié)議為TCP協(xié)議。兩者對(duì)比:TCP協(xié)議復(fù)雜,但傳輸可靠。UDP協(xié)議簡(jiǎn)單,但傳輸不可靠。
UDP協(xié)議全稱為:User Datagram Protocol(用戶數(shù)據(jù)報(bào)協(xié)議)。
它是一個(gè)簡(jiǎn)單的面向數(shù)據(jù)報(bào)的傳輸層協(xié)議。提供的是無(wú)連接的、不可靠的數(shù)據(jù)流傳輸。它只是把應(yīng)用程序傳給IP層的數(shù)據(jù)報(bào)發(fā)送出去,但是并不能保證它們能到達(dá)目的地。因此報(bào)文可能會(huì)丟失、重復(fù)以及亂序等。但由于UDP在傳輸數(shù)據(jù)報(bào)前不用在客戶和服務(wù)器之間建立一個(gè)連接,且沒(méi)有超時(shí)重發(fā)等機(jī)制,故而傳輸速度很快。
UDP是傳輸層協(xié)議,這意味著UDP的數(shù)據(jù)包需要經(jīng)過(guò)IP協(xié)議的封裝,然后通過(guò)IP協(xié)議傳輸?shù)侥康碾娔X。隨后UDP包在目的電腦拆封,并將信息送到相應(yīng)端口的緩存中。
UDP的特點(diǎn)
UDP傳輸?shù)倪^(guò)程類似于寄信。
無(wú)連接
無(wú)連接指的是:UDP傳輸知道對(duì)應(yīng)的IP和端口號(hào)就可以直接進(jìn)行傳輸,不需要建立連接。
理解“無(wú)連接”特性:
因?yàn)槭褂肬DP協(xié)議的發(fā)送方和接受方之間不需要存在長(zhǎng)期的聯(lián)系。它們沒(méi)有建立連接這個(gè)過(guò)程,整個(gè)消息傳輸過(guò)程簡(jiǎn)單來(lái)說(shuō)就是“發(fā)送即結(jié)束”。在UDP協(xié)議傳輸?shù)倪^(guò)程中,可以向某一個(gè)服務(wù)器端口發(fā)起接收數(shù)據(jù)申請(qǐng),然后在下一次再向另外一個(gè)端口發(fā)起申請(qǐng)。
這樣一來(lái),一個(gè)UDP服務(wù)器接口可以在一段時(shí)間內(nèi)接受多個(gè)客戶端發(fā)送的請(qǐng)求,同樣的一個(gè)UDP服務(wù)器可以從若干個(gè)不同的客戶接收數(shù)據(jù)報(bào)。
不可靠
不可靠指的是UDP協(xié)議沒(méi)有任何安全機(jī)制,發(fā)送端發(fā)送數(shù)據(jù)報(bào)后,如果出現(xiàn)丟包等現(xiàn)象,UDP協(xié)議層也不會(huì)給應(yīng)用層返回任何錯(cuò)誤信息。
只是把應(yīng)用程序傳給IP層的數(shù)據(jù)報(bào)發(fā)送出去,但是并不能保證它們能到達(dá)目的地。因此報(bào)文可能會(huì)丟失、重復(fù)以及亂序等。
面向數(shù)據(jù)報(bào)
應(yīng)用層交給UDP多長(zhǎng)的報(bào)文,UDP會(huì)將其原樣發(fā)送,既不會(huì)拆分,也不會(huì)將其合并。
如果,發(fā)送端一次性發(fā)送1000個(gè)字節(jié),那么接收端也必須一次性接收1000個(gè)字節(jié),不能將其拆為100份,每份10字節(jié),每次接收一份。
緩沖區(qū)
UDP只有接收緩沖區(qū),沒(méi)有發(fā)送緩沖區(qū)。
UDP沒(méi)有真正意義上的發(fā)送緩沖區(qū)。發(fā)送的數(shù)據(jù)會(huì)直接交給內(nèi)核,由內(nèi)核將數(shù)據(jù)傳給網(wǎng)絡(luò)層協(xié)議進(jìn)行后續(xù)的傳輸動(dòng)作。
UDP具有接收緩沖區(qū),但是這個(gè)接收緩沖區(qū)不能保證收到的UDP數(shù)據(jù)報(bào)的順序和發(fā)送UDP報(bào)的順序一致;如果緩沖區(qū)滿了,再達(dá)到的UDP數(shù)據(jù)就會(huì)被丟棄。
大小受限
UDP協(xié)議首部中有一個(gè)16位的最大長(zhǎng)度,也就是說(shuō)一個(gè)UDP能傳輸?shù)臄?shù)據(jù)的最大長(zhǎng)度是64K(包含了UDP的首部)。
這是UDP在使用中的一個(gè)致命缺陷,也就是說(shuō)UDP無(wú)法直接表示一個(gè)比較大的數(shù)據(jù)報(bào)。
解決方法:
可以在應(yīng)用層,針對(duì)大的數(shù)據(jù)報(bào)進(jìn)行分包(拆分成多個(gè)部分),然后再通過(guò)多個(gè)UDP數(shù)據(jù)報(bào)分別發(fā)送(但是這樣子無(wú)法保證順序)接收方再將收到的幾個(gè)包拼接成完整的數(shù)據(jù)。
上述這種方式是下策。
上策是:將其改成TCP協(xié)議,TCP協(xié)議沒(méi)有這樣的長(zhǎng)度限制。
基于UDP的應(yīng)用層協(xié)議
NFS:網(wǎng)絡(luò)文件系統(tǒng)
TFTP:簡(jiǎn)單文件傳輸協(xié)議
DHCP:動(dòng)態(tài)主機(jī)配置協(xié)議
BOOTP:啟動(dòng)協(xié)議
DNS:域名解析協(xié)議
......
UDP協(xié)議報(bào)文格式

實(shí)際格式:

源端口號(hào)和目的端口號(hào)
用來(lái)標(biāo)記發(fā)送和接受的應(yīng)用進(jìn)程。因?yàn)閁DP不需要應(yīng)答,所以源端口是可選的,如果源端口不用,那么置為零。
當(dāng)運(yùn)輸層從IP層收到UDP數(shù)據(jù)報(bào)時(shí),就是根據(jù)首部中的目的端口,把UDP數(shù)據(jù)報(bào)通過(guò)相應(yīng)的端口,上交最后的終點(diǎn)--應(yīng)用程序。
UDP長(zhǎng)度
16位UDP長(zhǎng)度,表示整個(gè)數(shù)據(jù)報(bào)(UDP首部+UDP數(shù)據(jù))的最大長(zhǎng)度
UDP校驗(yàn)和
校驗(yàn)和用來(lái)驗(yàn)證網(wǎng)絡(luò)傳輸?shù)倪@個(gè)數(shù)據(jù)是否是正確的,本質(zhì)上是光信號(hào)和電信號(hào)(會(huì)被外界因素干擾,導(dǎo)致信號(hào)出錯(cuò))。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-818572.html
校驗(yàn)和正確,不能保證數(shù)據(jù)100%是對(duì)的,但校驗(yàn)和不正確,數(shù)據(jù)100%是不對(duì)的。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-818572.html
UDP網(wǎng)絡(luò)編程模型

到了這里,關(guān)于計(jì)算機(jī)網(wǎng)絡(luò) — UDP協(xié)議(看這一篇就可以的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!