UDP協(xié)議簡(jiǎn)介
掃描二維碼
隨時(shí)隨地手機(jī)看文章
用戶(hù)數(shù)據(jù)報(bào)協(xié)議 (User Datagram Protocol, UDP)是一個(gè)簡(jiǎn)單的面向無(wú)連接的,不可靠的數(shù)據(jù)報(bào)的傳輸層(transport layer)協(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應(yīng)用一般必須允許一定量的丟包、出錯(cuò)和復(fù)制。
用戶(hù)數(shù)據(jù)報(bào)協(xié)議(UDP,User Datagram Protocol)是IP上層的另一重要協(xié)議,它是面向無(wú)連接的、不可靠的數(shù)據(jù)報(bào)傳輸協(xié)議。它僅僅將要發(fā)送的數(shù)據(jù)報(bào)傳送至網(wǎng)絡(luò),并接收從網(wǎng)上傳來(lái)的數(shù)據(jù)報(bào),而不與遠(yuǎn)端的UDP模塊建立連接。UDP為用戶(hù)的網(wǎng)絡(luò)應(yīng)用程序提供服務(wù),例如網(wǎng)絡(luò)文件系統(tǒng)(NFS,Network File System)和簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議(SNMP,Simple Network Management Protocol)等。UDP保留應(yīng)用程序所定義的消息邊界,它既不會(huì)將兩個(gè)應(yīng)用程序的消息連接到一起,也不會(huì)把一個(gè)應(yīng)用程序的消息分成多個(gè)部分。UDP同樣有自己的校驗(yàn)和字段,但當(dāng)兩個(gè)UDP模塊之間僅通過(guò)以太網(wǎng)連接時(shí),也可以不需要校驗(yàn)和。
UDP首部字段由4個(gè)部分組成,其中兩個(gè)是可選的。各16-bit的源端口和目的端口用來(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)度,長(zhǎng)度最小值為8 (octets)。首部剩下地16-bit是用來(lái)對(duì)首部和數(shù)據(jù)部分一起做校驗(yàn)和的,這部分是可選的,但在實(shí)際應(yīng)用中一般都使用這一功能。由于缺乏可靠性,UDP應(yīng)用一般必須允許一定量的丟包、出錯(cuò)和復(fù)制。有些應(yīng)用,比如TFTP,如果需要?jiǎng)t必須在應(yīng)用層增加根本的可靠機(jī)制。但是絕大多數(shù)UDP應(yīng)用都不需要可靠機(jī)制,甚至可能因?yàn)橐肟煽繖C(jī)制而降低性能。流媒體Streaming media、實(shí)時(shí)多媒體游戲和voice over IP (VoIP)就是典型的UDP應(yīng)用。如果某個(gè)應(yīng)用需要很高的可靠性,那么可以用傳輸控制協(xié)議Transmission Control Protocol來(lái)代替UDP。由于缺乏擁塞避免和控制機(jī)制,需要基于網(wǎng)絡(luò)的機(jī)制來(lái)減小因失控和高速UDP流量負(fù)荷而導(dǎo)致的擁塞崩潰效應(yīng)。換句話(huà)說(shuō),因?yàn)閁DP發(fā)送者不能夠檢測(cè)擁塞,所以像使用包隊(duì)列和丟棄技術(shù)的路由器這樣的網(wǎng)絡(luò)基本設(shè)備往往就成為降低UDP過(guò)大通信量的有效工具。數(shù)據(jù)報(bào)擁塞控制協(xié)議Datagram Congestion Control Protocol (DCCP)設(shè)計(jì)成通過(guò)在諸如流媒體類(lèi)型的高速率UDP流中增加主機(jī)擁塞控制來(lái)減小這個(gè)潛在的問(wèn)題。典型網(wǎng)絡(luò)上的眾多使用UDP協(xié)議的關(guān)鍵應(yīng)用一定程度上是相似的。這些應(yīng)用包括域名系統(tǒng)Domain Name System (DNS)、簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議simple network management protocol (SNMP)、動(dòng)態(tài)主機(jī)配置協(xié)議Dynamic host configuration protocol (DHCP)和路由信息協(xié)議Routing Information Protocol (RIP)等等。
為了在給定的主機(jī)上能識(shí)別多個(gè)目的地址,同時(shí)允許多個(gè)應(yīng)用程序在同一臺(tái)主機(jī)上工作并能獨(dú)立地進(jìn)行數(shù)據(jù)報(bào)的發(fā)送和接收,設(shè)計(jì)用戶(hù)數(shù)據(jù)報(bào)協(xié)議UDP。使用UDP協(xié)議包括:TFTP、SNMP、NFS、DNSUDP使用底層的互聯(lián)網(wǎng)協(xié)議來(lái)傳送報(bào)文,同IP一樣提供不可靠的無(wú)連接數(shù)據(jù)報(bào)傳輸服務(wù)。它不提供報(bào)文到達(dá)確認(rèn)、排序、及流量控制等功能。