初學(xué)基礎(chǔ):UDP協(xié)議
網(wǎng)絡(luò)通信協(xié)議中,與TCP同樣重要的協(xié)議——UDP協(xié)議,我們今天就來(lái)簡(jiǎn)單介紹一下它。那么對(duì)于這個(gè)協(xié)議的使用,我們常會(huì)在一些網(wǎng)絡(luò)防火墻,或者是殺毒軟件中經(jīng)常見(jiàn)到。那么,這個(gè)協(xié)議的具體含義是什么呢?
UDP協(xié)議
UDP協(xié)議(User Datagram Protocol,用戶數(shù)據(jù)報(bào)文協(xié)議)與TCP協(xié)議一樣也是OSI傳輸層上的一個(gè)通信協(xié)議。不過(guò)UDP協(xié)議是一個(gè)面向無(wú)連接的協(xié)議(TCP是向面連接的協(xié)議)。一個(gè)UDP連接的建立,不必象TCP協(xié)議那樣需要服務(wù)器端偵聽(tīng),也不需要有客戶機(jī)端請(qǐng)求連接和服務(wù)器端建立連接后雙方才能通信。
UDP協(xié)議概述
用戶數(shù)據(jù)報(bào)協(xié)議(UDP)是一個(gè)簡(jiǎn)單的面向數(shù)據(jù)報(bào)的傳輸層協(xié)議,IETF RFC 768是UDP的正式規(guī)范。在TCP/IP模型中,UDP為網(wǎng)絡(luò)層(network layer)以下和應(yīng)用層(application layer)以上提供了一個(gè)簡(jiǎn)單的接口。
UDP只提供數(shù)據(jù)的不可靠交付,它一旦把應(yīng)用程序發(fā)給網(wǎng)絡(luò)層的數(shù)據(jù)發(fā)送出去,就不保留數(shù)據(jù)備份(所以UDP有時(shí)候也被認(rèn)為是不可靠的數(shù)據(jù)報(bào)協(xié)議)。UDP在IP數(shù)據(jù)報(bào)的頭部?jī)H僅加入了復(fù)用和數(shù)據(jù)校驗(yàn)(字段)。
UDP首部字段由4個(gè)部分組成,其中兩個(gè)是可選的。各16位的源端口和目的端口用來(lái)標(biāo)記發(fā)送和接受的應(yīng)用進(jìn)程。因?yàn)閁DP不需要應(yīng)答,所以源端口是可選的,如果源端口不用,那么置為零。在目的端口后面是長(zhǎng)度固定的以字節(jié)為單位的長(zhǎng)度字段,用來(lái)指定UDP數(shù)據(jù)報(bào)包括數(shù)據(jù)部分的長(zhǎng)度。
由于缺乏可靠性,UDP應(yīng)用一般必須允許一定量的丟包、出錯(cuò)和復(fù)制。由于UDP協(xié)議缺乏擁塞避免和控制機(jī)制,需要基于網(wǎng)絡(luò)的機(jī)制來(lái)減小因失控和高速UDP流量負(fù)荷而導(dǎo)致的擁塞崩潰效應(yīng)。
UDP協(xié)議只在IP的數(shù)據(jù)報(bào)服務(wù)之上增加了很少的功能,這就是端口的功能(有了端口,運(yùn)輸層就能進(jìn)行復(fù)用和分用)和差錯(cuò)檢測(cè)的功能。另外,UDP協(xié)議應(yīng)用程序可以是客戶機(jī),也可以是服務(wù)器程序,不必向TCP協(xié)議應(yīng)用程序那樣必須分別建立客戶機(jī)程序和服務(wù)器程序。在遠(yuǎn)程控制軟件中,如果在局域網(wǎng)內(nèi)部傳輸屏幕信息,則使用UDP協(xié)議比較容易實(shí)現(xiàn)。但UDP協(xié)議不提供可靠性,它的可靠性是交給其他網(wǎng)絡(luò)設(shè)備來(lái)解決。同時(shí)用UDP協(xié)議來(lái)傳輸?shù)臄?shù)據(jù)一般較小,它需要IP協(xié)議來(lái)為它對(duì)數(shù)據(jù)進(jìn)行分段。理論上IP協(xié)議數(shù)據(jù)報(bào)的***長(zhǎng)度為65535個(gè)字節(jié) 。
UDP數(shù)據(jù)報(bào)格式
在數(shù)據(jù)報(bào)格式中,源端口是可選域,當(dāng)其有意義時(shí),指的是發(fā)送應(yīng)用程序的UDP端口。如果不使用它,則在此域中填0。目的端口在有特定的目的網(wǎng)絡(luò)地址時(shí)有意義,指目標(biāo)應(yīng)用程序的UDP端口。長(zhǎng)度指的是此用戶數(shù)據(jù)報(bào)長(zhǎng)度的八進(jìn)制表示(這表明最小的數(shù)據(jù)報(bào)長(zhǎng)度是8)。校驗(yàn)和同樣是一種簡(jiǎn)單的數(shù)學(xué)運(yùn)算,用于檢查UDP消息中的位級(jí)錯(cuò)誤。是對(duì)IP頭、UDP頭和數(shù)據(jù)中信息包頭的數(shù)位取反之和,再取反得到的。UDP協(xié)議包不具備TCP協(xié)議包復(fù)雜的可靠性與控制機(jī)制,沒(méi)有“序列”和“確認(rèn)”兩個(gè)字段。