当前位置:首页>Linux>【Linux】网络知识点——UDP协议详解

【Linux】网络知识点——UDP协议详解

  • 2026-09-24 12:27:30
【Linux】网络知识点——UDP协议详解

UDP(User Datagram Protocol,用户数据报协议)是 TCP/IP 传输层核心协议,协议号 17,与 TCP 互补,定位是无连接、不可靠、轻量、低时延的数据报协议,在 Linux、嵌入式、车载、实时音视频领域非常常用。


一、UDP 核心特点

  • 无连接
    :不需要三次握手,想发就发
  • 不可靠
    :不保证到达、不保证顺序、不保证不重复
  • 数据报模式
    :一次发送 = 一个数据报,保留边界(不像 TCP 是流)
  • 头部极小
    :固定 8 字节,开销远小于 TCP
  • 支持单播、广播、组播
    (TCP 只支持单播)
  • 无拥塞控制、无流量控制、无重传
  • 收发双向独立
    ,性能极高、时延极低

适用场景:

  • 车载实时通信(雷达、摄像头、 SOME/IP、车载音视频)
  • 直播、游戏、DNS、DHCP、RTP、NTP
  • 对时延敏感、允许少量丢包的场景

二、UDP 报文头部(固定 8 字节)

结构极简,Linux 抓包一眼就能认:

字段
长度
说明
源端口 Source Port
16bit
可选,可填 0
目的端口 Dest Port
16bit
必须
长度 Length
16bit
UDP 头 + 数据总长度(最小 8 字节)
校验和 Checksum
16bit
可选(IPv4),必选(IPv6)

特点:没有 Seq、Ack、窗口、标志位,一切简单粗暴。


三、UDP 工作机制(一句话)

应用层交给 UDP 多长数据,UDP 就封装成一个报文发出去,不拆分、不合并、不确认、不重传。

  • 发:直接封装 UDP 头 → 丢给 IP 层 → 发走
  • 收:网卡收到 → 解 UDP 头 → 按端口交给应用
  • 全程无连接、无状态、无握手、无挥手

四、UDP 关键特性详解

1. 数据报边界(最大与 TCP 的区别)

  • TCP:字节流,无边界,多次 write 可能合并 / 拆包
  • UDP:一次 send = 一个数据报,一次 recv = 一个完整报
    不会粘包,不会拆包,这对车载通信、协议解析非常重要。

2. 支持广播与组播

UDP 天然支持:

  • 广播:255.255.255.255 或 子网广播
  • 组播:224.0.0.0 ~ 239.255.255.255

TCP 完全不支持广播 / 组播,这是 UDP 一大优势。

3. 极低时延

无握手、无确认、无重传、无滑动窗口 → 时延最低的通用传输协议。

4. 不可靠但可控

可靠性可以在应用层自己实现(加序号、确认、重传、心跳),例如:

  • SOME/IP
  • DDS
  • QUIC(基于 UDP 做可靠)
  • 自定义车载实时协议

五、UDP 常见工作模式

1. 简单请求应答(DNS、NTP)

一问一答,无连接,快速完成。

2. 单向推送(视频流、雷达数据、日志)

只发不收,或只收不发,追求实时性。

3. 组播 / 广播分发(车载以太网多机同步)

一个发,多个收,高效分发。

4. 隧道类协议(VXLAN、VPN、QUIC)

底层都跑 UDP,避免 TCP 嵌套 TCP 导致的重传风暴。


六、Linux 下 UDP 常用命令与调试

1. 查看 UDP 端口与连接

# 查看所有 UDP 端口(监听 + 已连接)ss -uan# 查看 UDP 监听端口ss -uln# 老命令netstat-uanp

2. 测试 UDP 连通性

# 服务端监听 UDP 5000nc-ul5000# 客户端发送 UDP 数据nc-u192.168.1.100 5000

3. 抓 UDP 包

tcpdump -i eth0 udp port 5000-nn

4. UDP 缓冲区优化(嵌入式 / 车载高频)

增大接收 / 发送缓冲区,防止高流量丢包:

sysctl -w net.core.rmem_max=26214400sysctl -w net.core.wmem_max=26214400sysctl -w net.core.rmem_default=2621440sysctl -w net.core.wmem_default=2621440


七、UDP 典型问题(面试 / 工程必问)

1. UDP 会粘包吗?

绝对不会。UDP 是数据报,一次 send = 一个独立报文,recv 只能完整取走或丢弃。

2. UDP 丢包怎么办?

  • 应用层加序号 + 确认机制(ACK)
  • 应用层做选择性重传
  • 增大内核缓冲区
  • 使用组播时注意交换机风暴抑制

3. UDP 比 TCP 快在哪里?

  • 无握手
  • 无确认
  • 无滑动窗口
  • 无拥塞控制
  • 头部更小
  • 无队头阻塞

4. UDP 可以可靠吗?

可以,但要在应用层实现。如 QUIC、WebTransport、SOME/IP、DDS 都是基于 UDP 的可靠传输。


八、TCP vs UDP 极简对比表(车载 / 面试最强版)

特性
TCP
UDP
连接
面向连接
无连接
可靠性
可靠(重传、有序、确认)
不可靠
头部大小
20~60 字节
固定 8 字节
数据模式
字节流(无边界)
数据报(有边界)
握手 / 挥手
三次握手、四次挥手
无
流量 / 拥塞控制
有
无
广播 / 组播
不支持
支持
时延
较高
极低
典型场景
OTA、SSH、HTTP、DoIP
实时视频、雷达、DNS、车载 SOME/IP、组播

九、一句话总结(文档 / 面试收尾专用)

UDP 是无连接、轻量级、低时延、支持广播组播、以数据报为单位的传输层协议,不保证可靠但性能极高,广泛用于车载实时通信、音视频、DNS、DHCP 等场景,可靠性可由应用层灵活实现。

最新文章

随机文章