Skip to content

UDP(用户数据报协议)

基本特点

UDP 是一种无连接的、不可靠的运输层协议,提供最简单的传输服务。

主要特点: - 无连接:发送前不需要建立连接 - 不保证可靠交付:不重传、不排序 - 无拥塞控制:网络拥塞时不降低发送速率 - 保留报文边界:面向报文,应用层每次调用产生一个UDP数据报 - 开销小:首部仅 8字节(TCP最小20字节) - 支持多播和广播:TCP只支持单播

首部格式

┌─────────────────┬─────────────────┐
│   源端口(16)    │   目的端口(16)  │
├─────────────────┼─────────────────┤
│   长度(16)      │   检验和(16)    │
└─────────────────┴─────────────────┘
│              数据...               │
  • 长度:UDP数据报总长度(首部+数据),最小8(仅首部)
  • 检验和:覆盖伪首部+首部+数据,检验传输中的差错(可选)

伪首部(不传输,只用于计算检验和):
源IP | 目的IP | 0 | 协议号(17) | UDP长度

UDP适合的应用场景

场景 原因
DNS查询 请求/应答简单,超时自行重试
DHCP 广播发现,不需要连接
视频/音频流 实时性>可靠性,少量丢包可接受
游戏 低延迟优先,重传无意义
SNMP 简单管理查询
RTP 实时传输协议基于UDP

UDP vs TCP

特性 UDP TCP
连接 无 有(三次握手)
可靠性 不保证 保证(ACK+重传)
顺序 不保证 保证
流量控制 无 有(rwnd)
拥塞控制 无 有(cwnd)
首部开销 8字节 20~60字节
传输模式 报文 字节流
广播/多播 支持 不支持

QUIC:基于UDP重构TCP功能

Google设计的QUIC协议(HTTP/3底层)在UDP上实现了: - 多路复用(解决TCP队头阻塞) - 0-RTT连接(缓存会话密钥) - 连接迁移(IP变化时不断连接)

参见

  • [[05-运输层]] — 运输层完整介绍
  • [[TCP三次握手]] — TCP连接建立
  • [[06-应用层]] — DNS/DHCP等使用UDP
  • [[08-音视频服务]] — RTP基于UDP