用戶數據協議(User Datagram Protocol,UDP)是一種不可靠的、無連接的數據報服務。源主機在傳送數據前不需要和目标主機建立連接。數據附加了源端口号和目标端口号等UDP報頭字段後,直接發往目的主機。這時,每個數據報的可靠性依靠上層協議來保證。在傳送數據較少且較小的情況下,UDP比TCP更加高效。
1、UDP報文
源端口字段:該字段長度為16位。作用與TCP數據段中的端口号字段相同,用來标識源端的應用進程。在需要對方回信時用,不需要時可用全0;
目标端口字段:該字段長度為16位。作用與TCP數據段中的端口号字段相同,用來标識目标端的應用進程。在目标交付報文時必須用到;
長度字段:該字段長為16位。标明UDP頭部和UDP數據的總長度字節;
校驗和字段:該字段長為16 。用來對UDP頭部和UDP數據進行校驗,有錯就丢棄。與TCP不同的是,對UDP來說,此字段是可選項,而TCP數據段中的校驗和字段是必須有的一項。
2、UDP校驗雖然UDP協議沒有提供任何差錯控制機制,但UDP通過使用校驗和來确保UDP報文被傳送到正确的目的端。
UDP校驗和計算有一個與衆不同的特點:校驗和除覆蓋UDP報文外,還覆蓋一個附加頭部,稱為僞頭部(Pseudo Header)。僞頭部有來自IP報文的4個字段(協議、源IP地址、目的IP地址、UDP長度)和填充字段,僞頭部格式如下所示:
其中填充字段為全0,其目的是使僞頭部的長度為32位的整數倍;協議字段就是IP報頭格式中的協議字段,為17(在IP報文格式的協議字段中17表示UDP協議);UDP長度字段表示UDP報文長度。
UDP計算校驗和加上僞頭部的目的就是為了驗證UDP報文是否在兩個端點之間正确傳輸。因為UDP報文包含源端口和目的端口,而僞頭部包含源IP地址和目的IP地址。假如UDP報文在通過因特網傳輸時,有人惡意篡改了源IP地址(IP源地址欺騙),則這種情況可以通過UDP的校驗和查詢出來。
需要注意的是,UDP計算校驗和的僞頭部信息中部分内容來源于IP報頭信息,也就是說,UDP在計算校驗和是,UDP必須從IP層獲取相關信息,否則無法形成僞頭部,也就計算不出UDP的校驗和。這一過程實際上違背了網絡體系中的分層原則,但這種違背是出于實際的需求而不得不做的折中。事實上,UDP(包括TCP)與IP 的聯系是非常緊密的,而且它們一般都在操作系統内核實現,因此無論是UDP還是TCP要獲取IP的相關信息都是非常容易和方便的。
3、UDP端口協議端口号是标識目标主機進程的方法。TCP/IP使用16位的端口号來标識端口,所以端口的取值範圍為[0,65535]。端口可以分為系統端口、等級端口、客戶端使用端口。
3.1 系統端口系統短開口的取值範圍是[0,1023],常見的如下表所示:
協議号 |
名稱 |
功能 |
20 |
FTP-DATA |
FTP數據傳輸 |
21 |
FTP |
FTP控制 |
22 |
SSH |
SSH登錄 |
23 |
TELNET |
遠程登錄 |
25 |
SNMP |
簡單郵件傳輸協議 |
53 |
DNS |
域名解析 |
67 |
DHCP |
DHCP服務器開啟,用來監聽和接收客戶請求消息 |
68 |
DHCP |
客戶端開啟,用來接收DHCP服務器的消息回複 |
69 |
TFTP |
簡單FTP |
80 |
HTTP |
超文本傳輸 |
110 |
POP3 |
郵局協議 |
143 |
IMAP |
交互式郵件存取協議 |
161 |
SNMP |
簡單網管協議 |
162 |
SNMP(Trap) |
SNMP Trap報文 |
登記端口是為沒有熟知端口号的應用程序所用的,端口範圍為[1024,49151]。這些端口必須在IANA(互聯網數字分配機構)上登記以避免重複。
3.3 客戶端使用端口客戶端使用端口僅在客戶進程運行時動态使用,使用完畢後,進程會釋放端口。該端口範圍為[49152,65535]。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!