Appearance
题目
下列关于 UDP 协议的叙述中,正确的是( )。
Ⅰ. 提供无连接服务
Ⅱ. 提供复用/分用服务
Ⅲ. 通过差错校验,保障可靠数据传输
错因
A
只承认 Ⅰ 而漏算 Ⅱ——但 UDP 也提供复用/分用服务(端口号机制实现),与 TCP 一样。错的根源:以为"无连接"和"分用"是互斥概念,实际它们是 UDP 的两个独立特性。
C
把 Ⅲ 算对——但 UDP 的校验和只是检测,不保障可靠。校验和发现错误后 UDP 会直接丢包,不会重传、不会通知应用层、不会确认。"可靠传输"必须包括重传 / 确认 / 顺序保证,UDP 都没有。错的根源:把"差错校验"等同于"可靠"。
D
把 Ⅰ、Ⅱ、Ⅲ 全选——同 C 一样误把"差错校验"当作可靠传输。Ⅰ 和 Ⅱ 都对、但 Ⅲ 错。错的根源:UDP "什么都做了"的错觉。
总解析
逐项判定:
Ⅰ 对:UDP 提供无连接服务
UDP 报文段独立发送,不建立连接、不做握手、不维护连接状态——发出去就完事,每个报文段独立路由。这是 UDP 的核心特征,也是其低延迟的来源。
Ⅱ 对:UDP 提供复用 / 分用服务
| 功能 | UDP 怎么做 |
|---|---|
| 复用 | 多个进程通过不同源端口共享同一传输层接口 |
| 分用 | 接收方按目的端口把上来的报文段交给对应进程 |
UDP 的 8 字节首部里"源端口 + 目的端口"就是为了复用 / 分用——这与 TCP 完全一样。
Ⅲ 错:UDP 不保障可靠传输
UDP 校验和的语义:
- ✅ 检测报文段是否在传输中被破坏
- ❌ 不保障可靠传输:
| UDP 在差错时的行为 | TCP 对比 |
|---|---|
| 校验和不对 → 直接丢弃 | TCP 也丢,但触发重传 |
| 不通知应用层 | TCP 自动恢复 |
| 不重传 | TCP 重传 |
| 不确认成功接收 | TCP ACK 机制 |
UDP 是不可靠协议——可靠性由应用层自行实现(QUIC、RTP 上层就是 UDP 之上加可靠层)。
核对:
| 选项 | 是否对应正确组合 |
|---|---|
| A 仅 Ⅰ | 漏 Ⅱ |
| B 仅 Ⅰ、Ⅱ | 正确 |
| C 仅 Ⅱ、Ⅲ | 漏 Ⅰ + Ⅲ 错 |
| D Ⅰ、Ⅱ、Ⅲ | Ⅲ 错 |
最终答案是 B(仅 Ⅰ、Ⅱ)。
编者注(生僻术语):UDP 的"差错校验"和"可靠传输"的边界——
- 差错校验(error detection):发现错就丢,不做修复
- 可靠传输(reliable delivery):包括差错检测 + 自动重传(ARQ)+ 顺序保证 + 重复检测
只做"检测"不做"重传"的协议都是不可靠的。UDP 校验和(甚至可禁用,置为 0)只对应前者;TCP 在校验和之外加上 ACK + 序号 + 重传 + 滑动窗口 才达成"可靠"。