跳到主要内容

UDP

UDP(User Datagram Protocol)是 TCP/IP 中与 TCP 并列的传输层协议,采用无连接、尽力交付的通信模型。

无连接与尽力交付

UDP 不建立连接,直接把数据报发往目标地址,也不保证对方是否收到、是否重复、是否有序。这使得它的开销极小,延迟低,适合对实时性要求高、能容忍少量丢包的场景。

首部结构(8 字节)

UDP 首部非常简洁,固定仅 8 字节:

字段长度含义
Source Port2 字节源端口,可选,某些响应场景可为 0
Destination Port2 字节目标端口
Length2 字节首部 + 数据的总长度
Checksum2 字节校验和,可选但建议启用

由于没有序号、确认、窗口等字段,UDP 协议本身的处理逻辑几乎只覆盖端口复用与校验。

与 TCP 的对比

维度TCPUDP
连接面向连接,三次握手无连接
可靠性序号/ACK/重传不保证
顺序严格按序重组可能乱序
流量控制滑动窗口
拥塞控制
首部开销20 字节起8 字节
传输效率相对低
适用场景文件、网页、邮件实时音视频、游戏、DNS

简单来说,TCP 用 可靠性延迟与复杂度,UDP 用 不确定性速度与简洁

适用场景

  • DNS:查询报文小,一次往返即可,使用 UDP 53 端口;响应超过 512 字节或区域传送则改用 TCP。
  • 视频流与直播:RTMP、HLS 等实时音视频应用。
  • 在线游戏:需要极低延迟,偶尔丢包可由应用层补偿。
  • VoIP(网络电话):语音对延迟敏感,丢包可由前向纠错掩盖。
  • IoT 与监控:SNMP、syslog 等轻量协议。

QUIC 简介

QUIC(Quick UDP Internet Connections)是 Google 提出并被 IETF 标准化的传输层协议(主要实现在 HTTP/3 中)。它在 UDP 之上重新设计了可靠传输:

  • 集成 TLS 1.3,握手只需 1-RTT 甚至 0-RTT。
  • 多路复用消除队头阻塞(独立流)。
  • 自带加密、流控、连接迁移(支持 IP 变更)。
  • 通过 UDP 443 穿透,绕过中间盒对 TCP 的限制。

QUIC 把 UDP 的灵活性与 TCP 风格的有序可靠传输结合,代表了现代传输协议的发展方向。