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