tft每日頭條

 > 生活

 > udp具體是什麼

udp具體是什麼

生活 更新时间:2025-02-25 01:28:06
前言

上一篇說了路由協議相關知識點,包括如何通過路由規則選擇數據報出口,動态路由協議等信息。

今天是五一,那麼就來聊一下UDP相關的知識點,依然是八股文。

如果MAC層定義了本地局域網的傳輸行為, IP層定義了整個網絡端到端的傳輸行為, 這兩層基本定義了這樣的現象:網絡傳輸是以包為單位的,二層叫幀,網絡層叫包,傳輸層叫段。包單獨傳輸,自行選路,在不同的設備封裝解封裝,不保證到達。

UDP

UDP是一個簡單的面向數據包的運輸層協議

進程的每個輸出操作都正好産生一個UDP數據報,并組裝成一份待發送的IP數據報。

udp具體是什麼(UDP是什麼東西)1

UDP不提供可靠性,隻負責把應用程序傳給IP層的數據發送出去,但并不保證它們能到達目的地。

「UDP特點」

  • 溝通簡單
  • 随意傳輸,誰都可以傳輸數據到相應端口上
  • 不會根據網絡情況進行改變
1、UDP首部

udp具體是什麼(UDP是什麼東西)2

端口号表示發送進程和接收進程。

由于IP層已經把IP數據報分配給TCP或UDP(根據IP首部中協議字段值)

因此TCP端口号由TCP來查看,而UDP端口号由UDP來查看。

TCP端口号與UDP端口号是相互獨立的。

UDP長度字段值是UDP首部和UDP數據的字節長度。

最小值為8字節,也就是沒有數據

IP數據報長度值是數據報全長,因此UDP數據報長度是全長減去IP首部的長度。

2、UDP校驗和

UDP檢驗和覆蓋UDP首部和UDP數據,而IP檢驗和隻覆蓋IP的首部,不涉及到數據。

UDP的檢驗和是可選的,而TCP的檢驗和是必需的。

UDP檢驗和的基本計算方法與IP首部檢驗和計算方法類似,但存在不同點。

UDP數據報的長度可以為奇數字節,但檢驗和算法是把若幹個16bit字相加。解決方法是在必要時在最後增加填充字節0,這隻是為了檢驗和的計算。

UDP數據報和TCP端都包含一個12字節長的僞首部,為了計算檢驗和而設置的。

僞首部包含IP首部的一些字段,目的是讓UDP兩次檢查數據是否已經正确到達目的地。

udp具體是什麼(UDP是什麼東西)3

如果檢驗和的計算結果是0,則存入的值為全1(65535),這在二進制反碼計算中是等效的。

如果傳送的檢驗和為0,說明發送端沒有計算檢驗和。

如果發送端沒有計算檢驗和而接收端檢測到檢驗和有差錯,那麼UDP數據報就要被悄悄地丢棄。

3、IP分片

udp具體是什麼(UDP是什麼東西)4

「當需發送的數據包大小大于路徑MTU時,就需要進行IP數據報分片」

把一份IP數據報分片以後,隻有到達目的地才進行重新組裝。

重新組裝由目的端的IP層來完成,目的是使分片和重新組裝過程對運輸層(TCP和UDP)是透明的。

已經分片過的數據報有可能會再次進行分片,IP首部中包含的數據為分片和重新組裝提供了足夠的信息。

對于發送端發送的每份IP數據報來說,其标識字段都包含一個唯一值,在數據報分片時非複制到每個片中。

标志字段用其中一個比特來表示“更多的片”。

除了最後一片外,其他每個組成數據報的片都要把該比特置 1。

片偏移字段指的是該片偏移原始數據報開始處的位置。

當數據報被分片後,每個片的總長度值要改為該片的長度值。

标志字段中有一個比特稱作“不分片”位,如果這一比特為1,IP将不對數據報進行分片。相反把數據報丢棄并發送一個ICMP差錯報文。

當IP數據報分片後,每一片都成為一個分組,有自己的IP首部,并在選擇路由器時與其他分組獨立。固有可能在到達目的端時失序。

一片數據的丢失也要重傳整個數據報。因為對數據報分片的是中間路由器,而不是起始端系統,後者根本不知道數據報是如何分片的。

4、ICMP不可達報錯(需分片)

發生ICMP不可達差錯的另一種情況是,當路由器收到一份需要分片的數據報,而在IP首部又設置了不分片(DF)的标志比特。

udp具體是什麼(UDP是什麼東西)5

如果路由器沒有提供過這種新的ICMP差錯報文格式,那麼下一站的MTU就設為0.

5、Traceroute

能深入探索TCP/IP協議的方便可用的工具。

不能保證從源端發往目的端的兩份連續的IP數據報具有相同的路由。

開始時發送一個TTL字段為1的UDP數據報,然後将TTL字段每次加1,以确定路徑中的每個路由器。每個路由器在丢棄UDP數據報時都返回一個ICMP超時報文2,而最終目的主機則産生一個ICMP端口不可達的報文。

Traceroute除了能發現路由之外,還能用它來确定路徑MTU。

「确定路徑MTU:」 發送分組,設置“不分片”标志比特。發送的第一個分組長度正好與出口MTU相等,每次收到ICMP“不能分片”差錯是就減少分組的長度。

6、最大UDP數據報長度

理論上,IP數據報的最大長速度是65535字節,這是IP首部16比特總長度字段所限制的。

去除20字節的IP首部和8字節的UDP首部,UDP數據報中用戶數據的最長長度為65507字節。

但一般實現所提供的長度比這個最大值小。

兩個限制因素:

(1)應用程序可能會受到其程序接口的限制。例如socket API可以設置接收和發送緩存的長度。

(2)TCP/IP的内核實現。可能存在一些實現特性(或差錯),使IP數據報長度小于65535字節。

7、ICMP源站抑制報錯

當一個系統接收數據報的速度比其處理速度快時,可能會産生此報錯。

「可能」一詞是因為即使一個系統已經沒有緩存并丢棄數據報,也不要求它一定要發送源站抑制報文。

udp具體是什麼(UDP是什麼東西)6

UDP與TCP的區别

(1) TCP是面向連接的,UDP是面向無連接的。

「什麼是面向連接?」

面向連接的協議會先建立連接,例如,TCP會進行三次握手,UDP不會。

所謂的建立連接,是為了在客戶端和服務端維護連接,而建立一定的數據結構來維護雙方交互的狀态,用這樣的數據結構來保證所謂的面向連接的特性。

(2)TCP提供可靠交互,通過TCP連接傳輸的數據,無差錯、不丢失、不重複、按序到達。

而UDP繼承了IP包的特性,不保證不丢失,不保證按順序到達。

(3)TCP是面向字節流的,而UDP繼承了IP的特性,基于數據包的,一個一個發,一個一個收。

(4)TCP有擁塞控制,根據接收方的吞吐量控制發送速度,但UDP沒有。

(5)TCP是有狀态的服務,UDP是無狀态服務。

使用場景
  • 需要資源少,在網絡情況較好的内網,或者對于丢包不敏感的應用。
  • 不需要建立連接,而是可以廣播的應用DHCP就是一種廣播的形式,基于UDP協議。多播,D類地址,也即組播地址。使用此地址可将包組播給一批機器。
  • 需要處理速度快,時延低,可以容忍少數丢包,但是要求即便網絡擁塞,也不改變發送速度。

===============================

我是Liusy,一個喜歡健身的程序員。

獲取更多幹貨以及最新消息,請關注公衆号:上古僞神

如果對您有幫助,點個關注、轉發就是對我最大的支持!!!謝謝

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved