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)注
128文章
8655瀏覽量
145422 -
UDP
+關(guān)注
關(guān)注
0文章
330瀏覽量
34632 -
UDP協(xié)議
+關(guān)注
關(guān)注
0文章
70瀏覽量
13131 -
數(shù)據(jù)包
+關(guān)注
關(guān)注
0文章
269瀏覽量
24986 -
傳輸層
+關(guān)注
關(guān)注
0文章
31瀏覽量
11080
發(fā)布評(píng)論請(qǐng)先 登錄

#硬聲創(chuàng)作季 #FPGA FPGA-64-02 UDP協(xié)議詳解-1

#硬聲創(chuàng)作季 #FPGA FPGA-64-02 UDP協(xié)議詳解-2



Linux下的UDP協(xié)議編程

UDP協(xié)議,UDP協(xié)議是什么意思
udp協(xié)議及包格式是什么

udp協(xié)議源碼詳解
tcp和udp協(xié)議的異同

什么是UDP協(xié)議?
udp協(xié)議的特性有哪些 udp的應(yīng)用原理
udp是什么協(xié)議 TCP與UDP的區(qū)別
UDP協(xié)議的原理

評(píng)論