傳輸層協議:UDP

目錄

1、概念

2、報文結構

3、核心特性

3.1 無連接

3.2 不可靠交付

3.3 面向數據報

3.4 輕量級&高效

3.5 支持廣播和組播

4、典型應用場景

5、優缺點分析

6、與TCP的區別


1、概念

UDP(User Datagram Protocol,用戶數據報協議)

主要目的:供一種簡單、高效、無連接的數據傳輸服務。

2、報文結構

UDP 頭部:?(8 字節)

  • 源端口:?(2 字節) 發送方應用程序的端口號。可選(可置為 0),用于接收方回復時知道發給誰。

  • 目的端口:?(2 字節) 接收方應用程序的端口號。必需

  • 長度:?(2 字節) UDP 數據報的總長度(頭部 + 數據),以字節為單位。最小值是 8(只有頭部)。

  • 校驗和:?(2 字節) 用于檢測頭部和數據在傳輸過程中是否出錯(可選,但強烈推薦使用)。覆蓋頭部、數據和偽頭部(包含源/目標IP地址、協議號等)。如果接收方計算校驗和不匹配,數據報會被靜默丟棄(不通知發送方)。

數據:?(長度可變) 應用程序要發送的有效載荷。

3、核心特性

3.1 無連接

這是 UDP 最顯著的特點。在發送數據之前,不需要像 TCP 那樣先建立連接(三次握手)。

應用程序只需構造好數據報(Datagram),指定目標 IP 地址和端口號,就可以直接發送出去。

同樣,接收方也不需要事先同意或準備好接收連接。它只是監聽某個端口,等待數據報的到來。(雖然UDP可以有校驗和檢查錯誤,但不保證送達

3.2 不可靠交付

UDP?不保證數據報一定能到達目的地。

不提供以下 TCP 具有的可靠性機制:

  • 數據包確認:?接收方不會發送 ACK 確認收到數據。

  • 超時重傳:?發送方在超時后不會自動重發丟失的數據包。

  • 數據包排序:?接收到的數據包順序可能與發送順序不同,UDP 不會重新排序。

  • 重復數據檢測:?可能會收到重復的數據包(例如,網絡路徑變化導致),UDP 不會去重。

  • 流量控制:?不會根據接收方的處理能力調整發送速率。

  • 擁塞控制:?不會主動檢測和避免網絡擁塞。

結果:?數據包可能丟失、重復、亂序到達,或者被網絡設備(如路由器)靜默丟棄(例如在擁塞時)。應用程序需要自己處理這些問題(如果需要)。

3.3 面向數據報

數據是以離散的、獨立的?“數據報”?為單位發送和接收的(完整的)。

  • 發送方應用程序的每次寫操作(例如一個?sendto()?調用)通常會產生一個獨立的 UDP 數據報。

  • 接收方應用程序的每次讀操作(例如一個?recvfrom()?調用)通常接收一個完整的 UDP 數據報。

關鍵:?UDP?不會像 TCP 那樣將應用層的數據流拆分成多個段(Segments)或重新組裝成流。它保留消息邊界。

3.4 輕量級&高效

  • 協議頭非常小(只有 8 字節),開銷遠低于 TCP(通常 20 字節,帶選項更多)。

  • 沒有連接建立/拆除的開銷(三次握手、四次揮手)。

  • 沒有復雜的確認、重傳、排序、流量控制、擁塞控制邏輯。這使得 UDP 的協議棧處理非常快,消耗的 CPU 和網絡資源更少。

結果:?延遲更低,傳輸速度理論上可以更快(尤其是在低丟包率的網絡上)。

3.5 支持廣播和組播

UDP 可以將數據報發送到:

  • 單播:?單個目標主機。

  • 廣播:?同一局域網內的所有主機(例如?255.255.255.255?或子網廣播地址)。

  • 組播:?加入特定組播組的所有主機。

TCP 是嚴格的一對一連接,只支持單播。

4、典型應用場景

1> 對延遲極其敏感,能容忍少量丟包:

  • 實時音視頻傳輸:?VoIP (如 Skype, Zoom 的部分傳輸)、視頻會議、在線直播。偶爾丟幀或短暫聲音中斷比延遲高導致卡頓更可接受。

  • 在線游戲:?特別是快節奏的 FPS、MOBA 等。玩家位置、動作指令需要極快送達,丟失個別數據包(如非關鍵位置更新)影響相對較小,而延遲高(Lag)會嚴重影響體驗。

  • 實時流媒體:?部分直播協議(如某些 RTP 實現)。

2> 簡單查詢/響應模型,且請求/響應本身很小:

  • DNS(域名系統):?查詢域名對應的 IP 地址。請求和響應通常很小,一次查詢一個響應,重試成本低且快速(客戶端負責超時重試)。

  • DHCP(動態主機配置協議):?獲取 IP 地址、網關等信息。使用廣播/組播,且過程本身包含重試機制。

  • SNMP(簡單網絡管理協議):?網絡設備監控和管理。查詢和陷阱(Trap)消息。

  • TFTP(簡單文件傳輸協議):?輕量級文件傳輸(如路由器固件升級),協議簡單,自帶簡單的確認機制(ACK)。

3> 廣播/組播應用:

  • 服務發現:?設備在局域網內廣播宣告自身服務(如 Bonjour/mDNS)。

  • 路由協議:?如 RIP。

  • 多媒體分發:?組播視頻流。

4> 在可靠傳輸之上構建自定義協議:

  • 應用層可以在 UDP 基礎上實現自己需要的、更貼合應用特性的可靠性、順序、擁塞控制邏輯。這提供了極大的靈活性:

    • QUIC:?HTTP/3 的底層傳輸協議,基于 UDP,整合了 TLS 加密,并實現了更快速、更靈活的連接建立、可靠傳輸和擁塞控制。

    • DTN(容斷網)協議:?用于高延遲、易中斷的網絡環境(如太空通信)。

    • 特定游戲網絡協議:?針對游戲狀態同步特性優化的可靠性和順序機制。

5、優缺點分析

優點

  • 低延遲:?無連接建立開銷,無等待確認的延遲。

  • 低開銷:?頭部小,協議邏輯簡單,節省帶寬和計算資源。

  • 高效率:?在低丟包率網絡中,吞吐量可以非常高。

  • 簡單:?協議本身簡單,API 也相對簡單。

  • 支持廣播/組播:?實現一對多通信的基礎。

  • 無連接狀態:?服務器端無需為每個客戶端維護連接狀態,能支持更多并發“連接”(實際是無連接的會話)。

  • 靈活性:?為應用層提供基礎傳輸,允許在其上構建自定義的可靠性等機制。

缺點

  • 不可靠:?數據可能丟失、重復、亂序。應用程序必須自行處理(如果需要可靠性)。

  • 無擁塞控制:?發送方可能以過高速度發送數據淹沒網絡,導致擁塞崩潰。應用層需要謹慎設計發送速率。

  • 數據報大小限制:?單個 UDP 數據報的有效載荷通常不能超過 64KB(減去 IP 和 UDP 頭部)。更大的數據需要應用層分片和重組(易丟失)。

  • 易受 DDoS 攻擊:?偽造源 IP 地址發送大量 UDP 數據報進行反射放大攻擊(如 DNS/NTP反射攻擊)非常容易。

6、與TCP的區別

特性UDPTCP
連接無連接面向連接?(需三次握手)
可靠性不可靠?(不保證送達、順序、不重復)可靠?(保證送達、順序、無重復)
傳輸單位數據報?(保留消息邊界)字節流?(無消息邊界)
速度更快?(低延遲、低開銷)相對較慢?(連接管理、確認、控制機制)
開銷?(頭部小,8字節)?(頭部大,通常20字節+)
流量控制?(滑動窗口)
擁塞控制?(多種算法)
廣播/組播支持不支持?(僅單播)
復雜性簡單復雜
典型應用實時音視頻、游戲、DNS、廣播、QUIC/HTTP3Web瀏覽(HTTP/HTTPS)、文件傳輸(FTP)、郵件(SMTP/POP/IMAP)、遠程登錄(SSH)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/86532.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/86532.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/86532.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

JVM虛擬機:內存結構、垃圾回收、性能優化

1、JVM虛擬機的簡介 Java 虛擬機(Java Virtual Machine 簡稱:JVM)是運行所有 Java 程序的抽象計算機,是 Java 語言的運行環境,實現了 Java 程序的跨平臺特性。JVM 屏蔽了與具體操作系統平臺相關的信息,使得 Java 程序只需生成在 JVM 上運行的目標代碼(字節碼),就可以…

c++ 面試題(1)-----深度優先搜索(DFS)實現

操作系統:ubuntu22.04 IDE:Visual Studio Code 編程語言:C11 題目描述 地上有一個 m 行 n 列的方格,從坐標 [0,0] 起始。一個機器人可以從某一格移動到上下左右四個格子,但不能進入行坐標和列坐標的數位之和大于 k 的格子。 例…

【匯編逆向系列】七、函數調用包含多個參數之浮點型- XMM0-3寄存器

目錄 1. 匯編代碼 1.1 debug編譯 1.2 release編譯 2. 匯編分析 2.1 浮點參數傳遞規則 2.2 棧幀rsp的變化時序 2.3 參數的訪問邏輯 2.4 返回值XMM0寄存器 3. 匯編轉化 3.1 Debug編譯 3.2 Release 編譯 3.3 C語言轉化 1. 匯編代碼 上一節介紹了整型的函數傳參&#x…

華為云Flexus+DeepSeek征文 | 從零到一:用Flexus云服務打造低延遲聯網搜索Agent

作者簡介 我是摘星,一名專注于云計算和AI技術的開發者。本次通過華為云MaaS平臺體驗DeepSeek系列模型,將實際使用經驗分享給大家,希望能幫助開發者快速掌握華為云AI服務的核心能力。 目錄 作者簡介 前言 1. 項目背景與技術選型 1.1 項目…

【多智能體】受木偶戲啟發實現多智能體協作編排

😊你好,我是小航,一個正在變禿、變強的文藝傾年。 🔔本專欄《人工智能》旨在記錄最新的科研前沿,包括大模型、具身智能、智能體等相關領域,期待與你一同探索、學習、進步,一起卷起來叭&#xff…

Java八股文——Spring篇

文章目錄 Java八股文專欄其它文章Java八股文——Spring篇SpringSpring的IoC和AOPSpring IoC實現機制Spring AOP實現機制 動態代理JDK ProxyCGLIBByteBuddy Spring框架中的單例Bean是線程安全的嗎?什么是AOP,你們項目中有沒有使用到AOPSpring中的事務是如…

NineData數據庫DevOps功能全面支持百度智能云向量數據庫 VectorDB,助力企業 AI 應用高效落地

NineData 的數據庫 DevOps 解決方案已完成對百度智能云向量數據庫 VectorDB 的全鏈路適配,成為國內首批提供 VectorDB 原生操作能力的服務商。此次合作聚焦 AI 開發核心場景,通過標準化 SQL 工作臺與細粒度權限管控兩大能力,助力企業安全高效…

開源技術驅動下的上市公司財務主數據管理實踐

開源技術驅動下的上市公司財務主數據管理實踐 —— 以人造板制造業為例 引言:財務主數據的戰略價值與行業挑戰 在資本市場監管日益嚴格與企業數字化轉型的雙重驅動下,財務主數據已成為上市公司財務治理的核心基礎設施。對于人造板制造業而言&#xff0…

借助它,普轉也能獲得空轉信息?

在生命科學研究領域,轉錄組技術是探索基因表達奧秘的有力工具,在疾病機制探索、生物發育進程解析等諸多方面取得了顯著進展。然而,隨著研究的深入,研究人員發現普通轉錄組只能提供整體樣本中的基因表達水平信息,卻無法…

synchronized 學習

學習源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.應用場景 不超賣,也要考慮性能問題(場景) 2.常見面試問題: sync出…

Java事務回滾詳解

一、什么是事務回滾? 事務回滾指的是:當執行過程中發生異常時,之前對數據庫所做的更改全部撤銷,數據庫狀態恢復到事務開始前的狀態。這是數據庫“原子性”原則的體現。 二、Spring 中的 Transactional 默認行為 在 Spring 中&am…

云災備數據復制技術研究

云災備數據復制技術:數字時代的“安全氣囊” 在當今信息化時代,數據就像城市的“生命線”,一旦中斷,后果不堪設想。想象一下,如果政務系統突然崩潰,成千上萬的市民服務將陷入癱瘓。這就是云災備技術的重要…

如何處理Shopify主題的顯示問題:實用排查與修復指南

在Shopify店鋪運營過程中,主題顯示問題是影響用戶體驗與品牌形象的常見痛點。可能是字體錯位、圖片無法加載、移動端顯示混亂、功能失效等,這些都可能造成客戶流失和轉化下降。 本文將從問題識別、原因分析、修復方法到開發者建議全方位解讀如何高效解決…

前端監控方案詳解

一、前端監控方案是什么? 前端監控方案是一套系統化的工具和流程,用于收集、分析和報告網站或Web應用在前端運行時的各種性能指標、錯誤日志、用戶行為等數據。它通常包括以下幾個核心模塊: 性能監控:頁面加載時間、資源加載時間…

Camera相機人臉識別系列專題分析之十二:人臉特征檢測FFD算法之libvega_face.so數據結構詳解

【關注我,后續持續新增專題博文,謝謝!!!】 上一篇我們講了: Camera相機人臉識別系列專題分析之十一:人臉特征檢測FFD算法之低功耗libvega_face.so人臉屬性(年齡,性別,膚…

如何配置HarmonyOS 5與React Native的開發環境?

配置 HarmonyOS 5 與 React Native 的開發環境需遵循以下步驟 一、基礎工具安裝 ?DevEco Studio 5.0? 從 HarmonyOS 開發者官網 下載安裝勾選組件: HarmonyOS SDK (API 12)ArkTS 編譯器JS/ArkTS 調試工具HarmonyOS 本地模擬器 ?Node.js 18.17 # 安裝后驗證版…

kotlin kmp 副作用函數 effect

在 Kotlin Multiplatform (KMP) Compose 中,“effect functions”(或“effect handlers”)是專門的可組合函數,用于在 UI 中管理副作用。 在 Compose 中,可組合函數應該是“純”的和聲明式的。這意味著它們應該理想地…

3.3.1_1 檢錯編碼(奇偶校驗碼)

從這節課開始,我們會探討數據鏈路層的差錯控制功能,差錯控制功能的主要目標是要發現并且解決一個幀內部的位錯誤,我們需要使用特殊的編碼技術去發現幀內部的位錯誤,當我們發現位錯誤之后,通常來說有兩種解決方案。第一…

【Pandas】pandas DataFrame isna

Pandas2.2 DataFrame Missing data handling 方法描述DataFrame.fillna([value, method, axis, …])用于填充 DataFrame 中的缺失值(NaN)DataFrame.backfill(*[, axis, inplace, …])用于**使用后向填充(即“下一個有效觀測值”&#xff09…

MQTT協議:物聯網時代的通信基石

MQTT協議:物聯網時代的通信基石 在當今快速發展的物聯網(IoT)時代,設備之間的通信變得尤為重要。MQTT(Message Queuing Telemetry Transport)協議作為一種輕量級的消息傳輸協議,正逐漸成為物聯…