1. UDP報文封裝
一個典型的使用UDP協(xié)議封裝的數(shù)據(jù)包,包括以太網(wǎng)MAC頭+網(wǎng)絡(luò)層IP數(shù)據(jù)頭+傳輸層UDP頭+要傳輸?shù)臄?shù)據(jù)。詳見下圖所示:
2. UDP報文結(jié)構(gòu)
UDP(User Data Protocol,用戶數(shù)據(jù)報協(xié)議)是一個簡單的面向數(shù)據(jù)報的運(yùn)傳輸層協(xié)議。它不提供可靠性,只是把應(yīng)用程序傳給IP層的數(shù)據(jù)報發(fā)送出去,但是不能保證它們能到達(dá)目的地。由于UDP在傳輸數(shù)據(jù)報前不用再客戶和服務(wù)器之間建立一個連接,且沒有超時重發(fā)等機(jī)制,所以傳輸速度很快
UDP報文結(jié)構(gòu)如下圖示:
UDP報文結(jié)構(gòu)各字段功能如下示:
源端口號 :表示發(fā)送端端口號,字段長16位;在需要對方回信時選用,不需要時可設(shè)為0
目標(biāo)端口號 :表示接收端端口號,字段長16位;在終點(diǎn)交付報文時要使用到
總長度 :UDP用戶數(shù)據(jù)報的長度,其最小值是8(僅有首部),發(fā)送一個帶0字節(jié)數(shù)據(jù)的UDP數(shù)據(jù)報是允許的。值得注意的是,UDP長度字段是冗余的;IPV4頭部包含了數(shù)據(jù)報的總長度,同時IPV6頭部包含了負(fù)載長度。因此,一個UDP/IPV4數(shù)據(jù)報的長度等于IPV4數(shù)據(jù)報的總長度減去IPV4頭部的長度;一個UDP/IPV6數(shù)據(jù)報的長度等于包含在IPV6頭部中的負(fù)載長度(payload length)字段的值減去所有擴(kuò)展頭部(除非使用了超長數(shù)據(jù)報)的長度。這兩種情況下,UDP長度字段應(yīng)該與從IP層提供的信息計算得到的長度是一致的
校驗和 :檢測UDP用戶數(shù)據(jù)報在傳輸中是否有錯。有錯就丟棄
3. Wireshark抓包分析
將Socket API編程模型一文中的UDP Server工程源碼下載到開發(fā)板中,用網(wǎng)線將PC和開發(fā)板相連接,開啟一個UDP客戶端;打開wireshark軟件,監(jiān)聽IP地址192.168.1.10后,在UDP客戶端發(fā)送數(shù)據(jù)
wireshark抓取到相應(yīng)的UDP數(shù)據(jù)包,可以看到源端口號、目標(biāo)端口號、總長度、校驗和以及數(shù)據(jù)
-
封裝
+關(guān)注
關(guān)注
126文章
7873瀏覽量
142893 -
UDP
+關(guān)注
關(guān)注
0文章
325瀏覽量
33931 -
UDP協(xié)議
+關(guān)注
關(guān)注
0文章
69瀏覽量
12694 -
數(shù)據(jù)包
+關(guān)注
關(guān)注
0文章
260瀏覽量
24385 -
傳輸層
+關(guān)注
關(guān)注
0文章
29瀏覽量
10889
發(fā)布評論請先 登錄
相關(guān)推薦
評論