首页/网络/协议速查/基于 UDP 的常见协议
TCP 与 UDP54 条

基于 UDP 的常见协议

UDP 承载的协议族比想象的多:从 DNS 到 QUIC,从 VXLAN 到 WireGuard;理解「谁在 UDP 上做了什么」有助于排查与选型。

协议速查网络更新于 2026-10-13

谁跑在 UDP 上

UDP 无连接、不保证到达与顺序,头只有 8 字节,正因为够轻才被大量协议当作底座:DNS 用小包一问一答,DHCP 靠广播发现地址,QUIC 在用户态自己实现可靠传输,VXLAN 用它封装二层帧,WireGuard 用它承载加密隧道。分清「哪类协议在 UDP 上做了什么」,才能判断故障出在应用、封装还是中间设备。

基本信息

协议特征无连接、无序、无重传,头部仅 8 字节,开销小
适合场景一问一答式短交互、实时媒体、批量小包监控、自建可靠性的场景
常见承载内网隧道、覆盖网络、服务发现、日志与指标上报
故障特征丢包不会自动重传,中间设备限速或拦截往往静默生效
缓冲参数net.ipv4.udp_mem、net.core.rmem_max 决定接收能力

典型使用场景

  • 排查 DNS 偶发超时:确认 53/UDP 是否被限速或丢弃,必要时改用 TCP 回退
  • 数据中心 VXLAN 大包丢失:检查底层 MTU 与物理链路丢包
  • 音视频卡顿定位:RTP 走 UDP,只能靠丢包率与抖动判断,不能指望重传
  • 部署 WireGuard 后性能不达标:确认 51820/UDP 是否被运营商限速或整形
  • SNMP 轮询大量设备出现丢包:调整超时与重试,或改用采集器批量拉取
  • 自研协议选型:先判断能否直接复用 QUIC 等成熟实现而不是从零造

最小示例

最小示例
tcpdump -nn -i any port 53 -c 5          # 观察 DNS 请求与响应
tcpdump -nn -i any udp port 4789 -c 5    # 观察 VXLAN 封装流量
ss -uanp | head -20                      # 列出本机 UDP 套接字
ss -su                                   # UDP 汇总统计,重点看 receive errors
sysctl net.core.rmem_max net.core.rmem_default   # UDP 接收缓冲上限
sysctl -w net.ipv4.udp_mem='4096 87380 16777216' # 放宽全局 UDP 内存

常见 UDP 协议速查

协议端口关键点
DNS53UDP 优先,响应过大被截断时转 TCP
DHCP67 / 68广播发现,依赖租约与中继代理
QUIC 与 HTTP/3443用户态可靠传输加 TLS 1.3,多路复用无队头阻塞
VXLAN4789数据中心 Overlay,用 UDP 封装二层帧
WireGuard51820加密 VPN,内核态实现,配置极简
RTP 与 RTCP动态端口音视频媒体流,丢包容忍优先于重传
SNMP161 / 162设备监控,超时重传由管理端控制
UDP 接收缓冲溢出时内核静默丢包:ss -su 的 receive errors 增长就是信号。高并发 DNS、syslog 接收端要同时调大 udp_mem 与应用套接字缓冲。
隧道类 UDP 流量对 MTU 特别敏感:外层封装增加开销,内层必须相应减小 MTU,否则大包会在路径上被丢弃。

易错点

  • VXLAN、WireGuard 等隧道因外层 MTU 不足丢大包:小请求正常、大响应失败,两端都要下调内层 MTU
  • 防火墙或安全组只放行 TCP:基于 UDP 的协议静默失效,浏览器自动回落 HTTP/2,功能看着正常但性能收益全丢,监控也难以发现
  • 把 UDP 丢包当成应用缺陷:UDP 本身不保证送达,应用必须自己做重试与超时,排障前要先确认丢在哪一层
  • 忽略 UDP 缓冲溢出:接收端处理慢时内核对丢包不作任何记录,服务端日志里看不到异常
  • 在 NAT 环境假设 UDP 会话长期保持:映射超时后会静默丢弃回包,长连接场景需要心跳维持

数据来源与参考

  • RFC 9000
  • RFC 7348(VXLAN)
  • WireGuard 文档

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌