🎬 HoRain云小助手个人主页

 🔥 个人专栏: 《Linux 系列教程》《c语言教程

⛺️生活的理想,就是为了理想的生活!


⛳️ 推荐

前些天发现了一个超棒的服务器购买网站,性价比超高,大内存超划算!忍不住分享一下给大家。点击跳转到网站。

专栏介绍

专栏名称

专栏介绍

《C语言》

本专栏主要撰写C干货内容和编程技巧,让大家从底层了解C,把更多的知识由抽象到简单通俗易懂。

《网络协议》

本专栏主要是注重从底层来给大家一步步剖析网络协议的奥秘,一起解密网络协议在运行中协议的基本运行机制!

《docker容器精解篇》

全面深入解析 docker 容器,从基础到进阶,涵盖原理、操作、实践案例,助您精通 docker。

《linux系列》

本专栏主要撰写Linux干货内容,从基础到进阶,知识由抽象到简单通俗易懂,帮你从新手小白到扫地僧。

《python 系列》

本专栏着重撰写Python相关的干货内容与编程技巧,助力大家从底层去认识Python,将更多复杂的知识由抽象转化为简单易懂的内容。

《试题库》

本专栏主要是发布一些考试和练习题库(涵盖软考、HCIE、HRCE、CCNA等)

目录

⛳️ 推荐

专栏介绍

🔍 深入了解UDP

🎯 典型应用场景

💡 进阶了解:在应用层实现可靠性

img

UDP(用户数据报协议)是互联网协议套件中一个非常基础的传输层协议。它以“简单直接”著称,在特定场景下发挥着不可替代的作用。下面这个表格能帮你快速抓住它的核心特征,尤其是与TCP的对比。

特性维度

UDP (用户数据报协议)

TCP (传输控制协议)

连接方式

无连接:通信前无需建立连接,直接发送

面向连接:通信前需通过三次握手建立可靠连接

可靠性

不可靠:不保证数据送达、不保证顺序、不进行重传

可靠:通过确认、重传、流量控制等机制确保数据正确有序送达

数据传输模式

面向报文:对应用层交下来的报文,既不合并也不拆分,保留边界

面向字节流:将数据视为无结构的字节流,不保留消息边界

控制机制

无拥塞控制:以恒定速率发送,可能加剧网络拥堵

有拥塞控制:通过算法动态调整发送速率,对网络更友好

头部开销

​ (固定8字节)

​ (通常20-60字节)

速度

:延迟低,实时性好

:由于连接和确认机制,延迟较高

通信模式

支持一对一、一对多、多对一和多对多

仅支持一对一通信

🔍 深入了解UDP

  • 报文结构:简单直接

    一个UDP报文(称为用户数据报)结构非常简单,由首部数据两部分组成。首部仅有8个字节,包含四个字段,每个字段16位(2字节):

    1. 源端口号:发送方应用程序的端口号(可选,不需要回复时可设为0)。

    2. 目的端口号:接收方应用程序的端口号,确保数据能交付给正确的进程。

    3. 长度:整个UDP数据报(首部+数据)的总长度,最小为8字节(仅有首部)。

    4. 校验和:用于检测数据在传输过程中是否出错。计算时还会引入一个包含IP地址等信息的“伪首部”以增强校验强度 。如果校验出错,UDP会直接丢弃该报文,但不进行纠正 。

  • 核心特点:为何选择它?

    UDP的设计理念是轻量化和高效率,其所有特点都源于此 :

    • 无连接:减少了建立和断开连接的开销和时间延迟。

    • 无确认重传:不等待确认、不重传,使得数据传输速度更快。

    • 面向报文:应用程序下发的报文会被完整发送,这要求应用程序必须选择合适大小的报文。报文太长会导致IP层分片降低效率,太短则会使IP首部相对开销过大 。

    • 无拥塞控制:网络拥堵时,UDP的发送速率不受影响。这既是优点(保证实时应用的流畅性),也是缺点(可能加剧网络拥堵)。

🎯 典型应用场景

UDP并非“劣质”的协议,而是在特定需求下的“最优解”。它非常适合以下场景:

  • 实时性要求高的应用:如视频会议、在线直播、网络电话(VoIP)。这些应用能容忍少量数据丢失(画面卡顿、声音轻微失真),但无法忍受高延迟和数据重传带来的卡顿 。

  • 简单的查询/响应模型:如DNS(域名解析)。一次DNS查询通常只需要一个请求和一个响应包,使用UDP效率极高。如果使用TCP,建立连接的开销可能比查询本身还大 。

  • 广播和组播应用:如DHCP(动态获取IP地址)、某些路由协议(如RIP)。由于UDP是无连接的,它能很方便地向多个主机同时发送数据 。

  • 对轻微数据丢失不敏感的应用:如网络游戏、实时传感器数据采集

💡 进阶了解:在应用层实现可靠性

UDP本身不可靠,但如果应用既需要UDP的速度,又需要一定的可靠性,该怎么办?答案是:在应用层实现可靠性机制。这本质上是模拟TCP的部分功能 :

  • 添加序列号:在每个数据包中加入序列号,使接收方能识别重复包和重新排序。

  • 确认和重传机制(ACK):接收方收到包后回复确认(ACK),发送方在一定时间内未收到ACK则进行重传。

一个著名的例子是QUIC协议。它基于UDP构建,在应用层实现了可靠的传输、安全的加密和多路复用等功能,兼具UDP的高效和TCP的可靠,已成为HTTP/3的底层基础 。

希望这份详细的解析能帮助你全面理解UDP协议。如果你对某个具体应用场景或技术细节有更深入的兴趣,我们可以继续探讨。

❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍

🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐