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