UDP協議與Wireshark實驗

2022-03-08 22:55:16 字數 3274 閱讀 3491

目錄參考資料

使用者資料報(udp)協議是運輸層提供的一種最低限度的復用/分解服務,可以在網路層和正確的使用者即程序間傳輸資料。udp 是一種不提供不必要服務的輕量級運輸協議,除了復用/分用功能和簡單的差錯檢測之外,幾乎就是 ip 協議了,也可以說它僅提供最小服務。udp 是無連線的,因此在兩個程序通訊前沒有握手過程。udp 協議提供一種不可靠資料傳輸服務,也就是說,當乙個程序講乙個報文傳送進 udp 套接字時,udp 協議並不保證該報文將到達接收程序。也正是由於 udp 不修復錯誤,因此到達接收程序的報文也可能是亂序到達的。udp 是面向報文的,這是因為 udp 並不會對應用層傳遞下來的報文進行任何處理,對於報文的邊界資訊都會儲存,向下交付時交付的是完整報文。

相比於 tcp 協議,udp 協議什麼都不提供,那麼為什麼還需要 udp 協議呢?udp 在以下 4 個方面具有一定的優勢,對於某些應用來說更為合適。

應用層傳送什麼資料以及何時傳送的問題,使用 udp 協議更為精細。tcp 的傳輸有擁塞控制機制,會限制傳送方的傳送思路,同時還需要 ack 確認。而 udp 沒有包括擁塞控制機制,只需要把資料封裝好放進 udp 報文就能進行傳送,所以 udp 的傳送端可以用它選定的任何速率向其下層(網路層)注入資料。值得注意的是實際端到端吞吐量可能小於該速率,這可能是因為中間鏈路的頻寬受限或因為擁塞而造成的。

無需建立連線。udp 不需要像 tcp 那樣進行 3 次握手,因此 udp 並不會產生連線建立帶來的時延。例如 dns 執行在 tcp 上的話,就會使得效率受到影響,因此使用 udp 協議更合適。

無連線狀態。udp 不需要建立連線,也就不需要為了維持連線產生其他的開銷。而 tcp 由於需要維護連線的傳送快取、擁塞控制引數、序號和確認號引數等資訊,需要對這些資訊進行跟蹤和審計,就需要更多的開銷。

分組首部開銷小,udp 的首部開銷僅有 8 位元組,tcp 則需要 20 位元組。

udp 首部只有 4 個字段:源埠號、目的埠號、長度、校驗和,其中每個欄位由 2 個位元組組成。

接下來我們著重討論一下校驗和,校驗和進行差錯檢驗的乙個例子如下:

我們想要**的問題是,鏈路層已經有一定的差錯檢測機制了,為什麼在傳輸層也要?這是因為我們不能保證源主機和目的主機之間的所有鏈路使用的鏈路層協議,都具備差錯檢驗的機制,有可能中間的某一跳的鏈路不支援。而且當報文段儲存在某一台路由器的記憶體時,也有可能發生位元差錯。當端到端的資料傳輸需要差錯檢測時,那麼 udp 也要在運輸層提供這個功能,也就是端到端原則。不過雖然 udp 可以進行差錯檢驗,但是它對錯誤的恢復無能為力。

在 wireshark 中捕獲資料報,然後執行一些會導致主機傳送和接收多個 udp 資料報的操作。也可以什麼也不做,僅執行 wireshark 捕獲以便獲取其他程式發給您的 udp 資料報。有一種特殊情況:簡單網路管理協議(snmp)在 udp 內部傳送 snmp 訊息,因此您可能會在跟蹤中找到一些 snmp 訊息(以及 udp 資料報)。

停止資料報捕獲後,設定資料報篩選器,以便 wireshark 僅顯示在主機上傳送和接收的 udp 資料報。 選擇其中乙個 udp 資料報並在詳細資訊視窗中展開 udp 字段。

1.從跟蹤中選擇乙個 udp 資料報。從此資料報中,確定 udp 標頭中有多少字段,並為這些字段命名。

udp 的標頭有 4 個字段,一共 8 byte,各欄位分別為:

source port:源埠號

destination port:目的埠號

length:長度

checksum:校驗和

2. 通過查詢 wireshark 的資料報內容欄位中顯示的資訊,確定每個 udp 報頭欄位的長度。

每個部分都是 2 byte,因此 udp 報頭為 8 byte = 64 bit。

3. 長度欄位中的值是指的是什麼?使用捕獲的 udp 資料報驗證您的宣告。

長度字段指示了在 udp 報文段中的位元組數(首部 + 資料),這是因為資料字段的長度在乙個 udp 段中不同於在另乙個段中,因此需要乙個明確的長度。

如圖所示,報文的長度是 778 byte,加上首部的 8 byte 為 786 byte 剛好是 length 欄位的長度。

4. udp 有效負載中可包含的最大位元組數是多少?

首先先認識下有效負載

簡單地說,有效負載就是可變長度的資料部分。由於length 字段佔 2byte = 65536 bit,並且其中 8 byte 是 udp 首部資訊。因此有效載荷 = 65536 - 8 = 65528 bit。

5. 最大可能的源埠號是多少?

兩個port欄位佔 2 byte = 65536 bit,同時埠號從 0 開始算,因此最大埠號 = 216 - 1 = 65535。

6. udp 的協議號是什麼? 以十六進製制和十進位制表示法給出答案。

傳送 udp 資料報:

接收 udp 資料報:

《計算機網路 自頂向下方法》 [美] james f.kurose,keith w.ross 著,陳鳴 譯,機械工業出版社

udp有效載荷

tcp/ip協議號大全

WireShark 分析 UDP 協議

udp協議主要包括如下 源埠和目的埠 埠是用來指明資料的 應用程式 以及資料發往的目的地 同樣是應用程式 字段包含了16位元的udp協議埠號,它使得多個應用程式可以多路復用同乙個傳輸層協議及udp協議,僅通過埠號來區分不同的應用程式。長度 length 字段記錄了該udp資料報的總長度 以位元組為單...

wireshark分析UDP協議

使用者資料報協議 user datagram protocol,udp 是開放系統互聯模型 open system interconnection,osi 中傳輸層協議的一種,是一種保留訊息邊界的簡單的面向資料報的協議。udp不提供差錯糾正 佇列管理 重複消除 流量控制和擁塞控制,但提供差錯檢測。這...

UDP協議與UDP通訊

1 udp協議 udp是無連線通訊協議,即在資料傳輸時,資料的傳送端和接收端不建立邏輯連線。簡單來說,當一台計算機向另外一台計算機傳送資料時,傳送端不會確認接收端是否存在,就會發出資料,同樣接收端在收到資料時,也不會向傳送端反饋是否收到資料。但是在使用udp協議傳送資料時,由於udp的面向無連線性,...