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è)簡單的面向數(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)各字段功能如下示:
源端口號 :表示發(fā)送端端口號,字段長16位;在需要對方回信時(shí)選用,不需要時(shí)可設(shè)為0
目標(biāo)端口號 :表示接收端端口號,字段長16位;在終點(diǎn)交付報(bào)文時(shí)要使用到
總長度 :UDP用戶數(shù)據(jù)報(bào)的長度,其最小值是8(僅有首部),發(fā)送一個(gè)帶0字節(jié)數(shù)據(jù)的UDP數(shù)據(jù)報(bào)是允許的。值得注意的是,UDP長度字段是冗余的;IPV4頭部包含了數(shù)據(jù)報(bào)的總長度,同時(shí)IPV6頭部包含了負(fù)載長度。因此,一個(gè)UDP/IPV4數(shù)據(jù)報(bào)的長度等于IPV4數(shù)據(jù)報(bào)的總長度減去IPV4頭部的長度;一個(gè)UDP/IPV6數(shù)據(jù)報(bào)的長度等于包含在IPV6頭部中的負(fù)載長度(payload length)字段的值減去所有擴(kuò)展頭部(除非使用了超長數(shù)據(jù)報(bào))的長度。這兩種情況下,UDP長度字段應(yīng)該與從IP層提供的信息計(jì)算得到的長度是一致的
校驗(yàn)和 :檢測UDP用戶數(shù)據(jù)報(bào)在傳輸中是否有錯(cuò)。有錯(cuò)就丟棄
3. Wireshark抓包分析
將Socket API編程模型一文中的UDP Server工程源碼下載到開發(fā)板中,用網(wǎng)線將PC和開發(fā)板相連接,開啟一個(gè)UDP客戶端;打開wireshark軟件,監(jiān)聽IP地址192.168.1.10后,在UDP客戶端發(fā)送數(shù)據(jù)

wireshark抓取到相應(yīng)的UDP數(shù)據(jù)包,可以看到源端口號、目標(biāo)端口號、總長度、校驗(yàn)和以及數(shù)據(jù)

-
封裝
+關(guān)注
關(guān)注
128文章
9249瀏覽量
148634 -
UDP
+關(guān)注
關(guān)注
0文章
334瀏覽量
35421 -
UDP協(xié)議
+關(guān)注
關(guān)注
0文章
70瀏覽量
13705 -
數(shù)據(jù)包
+關(guān)注
關(guān)注
0文章
270瀏覽量
25600 -
傳輸層
+關(guān)注
關(guān)注
0文章
31瀏覽量
11219
發(fā)布評論請先 登錄
#硬聲創(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é)議源碼詳解
什么是UDP協(xié)議?
udp協(xié)議的特性有哪些 udp的應(yīng)用原理
udp是什么協(xié)議 TCP與UDP的區(qū)別
UDP協(xié)議的原理
UDP協(xié)議原理詳解
評論