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