计算机网络学习(六)——UDP
一、UDP
UDP(User Datagram Protocol,用户数据报协议)是传输层的一种协议,和 TCP 并列。与 TCP 不同,UDP 是无连接、不可靠、面向报文的协议,它的设计目标是追求更快的数据传输速度和更小的开销。
UDP 为应用程序提供尽最大努力交付(best-effort delivery)的数据传输服务,它不保证:
- 数据可靠送达;
- 数据到达顺序正确;
- 数据不被重复。
核心特点:
特性 | 说明 |
---|---|
无连接 | 不进行握手,通信前无需建立连接 |
不可靠 | 不重传、无确认、无流量控制 |
面向报文 | 每个UDP报文独立,不进行分段重组 |
支持多播广播 | 可用于局域网广播或多播通信 |
开销小、速度快 | 头部仅8字节,传输效率高 |
注:
- UDP和TCP,都属于传输层协议。
二、UDP 报文结构(仅 8 字节头部)
参考书——计算机网络 (第8版)- 谢希仁。
用户数据报UDP有两个字段: 数据字段和首部字段。
首部字段很简单, 只有8个字节, 由4个字段组成, 每个字段的长度都是2字节。
各字段意义如下:
- 源端口:源端口号。在需要对方回信时选用,不需要时可用全0 。
- 目的端口:目的端口号。这在终点交付报文时必须使用。
- 长度:UDP用户数据报的长度, 其最小值是8(仅有首部)。
- 检验和:检测UDP用户数据报在传输中是否有错。有错就丢弃。
注:
- 相比 TCP 的复杂报头(20 字节起),UDP 简洁快速。
三、UDP vs TCP
比较项 | UDP | TCP |
---|---|---|
是否连接 | 无连接(无需握手) | 面向连接(三次握手) |
是否可靠 | 不可靠(无确认、无重传) | 可靠(确认、重传、排序) |
数据结构 | 面向报文 | 面向字节流 |
报文大小 | 最多 65,535 字节(通常小于 MTU) | 不限,但需拆分 |
头部开销 | 小(8 字节) | 大(20 字节起) |
传输速度 | 快 | 相对较慢 |
应用场景 | 实时通信、多播、DNS、视频等 | HTTP、SSH、文件传输、数据库等 |
四、UDP 实现可靠性的方法(由应用层补充)
虽然 UDP 不可靠,但很多应用通过在应用层设计可靠机制来实现“可靠UDP”:
技术手段 | 说明 |
---|---|
应用层ACK确认 | 对关键数据加ACK机制 |
序列号机制 | 检测乱序或重传 |
超时重传 | 定时检测未确认数据重新发送 |
FEC 前向纠错 | 通过冗余数据修复丢失内容 |
QUIC 协议 | Google开发的基于UDP的可靠协议 |
五、UDP 常配合的协议
UDP 是传输层协议,很多高层协议基于它:
协议 | 描述 |
---|---|
DNS | 域名解析协议,UDP端口53 |
DHCP | 动态主机配置协议,UDP端口 67/68 |
SNMP | 网络管理协议,UDP端口 161/162 |
TFTP | 简单文件传输协议,UDP端口 69 |
RTP/RTCP | 实时音视频协议 |
六、典型应用场景
场景 | 使用说明 |
---|---|
视频/音频通话 | 容忍部分丢包,优先保证低延迟(如 WebRTC) |
网络游戏 | 游戏位置、状态频繁更新,丢几个包不影响体验 |
DNS 查询 | 请求简单、短小、允许偶尔失败再重试 |
实时监控 | 安防摄像头、远程传感器数据流 |
广播/多播 | 如局域网设备发现、直播推流 |