UDP(User Datagram Protocol)是一种无连接、不可靠的传输层协议,提供「尽最大努力交付」服务。
| 特性 | 说明 |
|---|---|
| 连接方式 | 无连接,发送前不需要建立连接 |
| 可靠性 | 不可靠,不保证交付 |
| 面向对象 | 面向报文(保留报文边界) |
| 拥塞控制 | 无拥塞控制 |
| 首部开销 | 小,仅 8 字节 |
| 通信方式 | 支持一对一、一对多、多对一、多对多 |
| 传输效率 | 高(无需建立连接、无确认机制) |
0 15 16 31
+--------+--------+
| 源端口 | 目的端口 | ← 各16位,共4字节
+--------+--------+
| 长度 | 校验和 | ← 各16位,共4字节
+--------+--------+
| 数据(可选) |
+------------------+
| 字段 | 长度 | 说明 |
|---|---|---|
| 源端口 | 16 位 | 可选,不需要时填 0 |
| 目的端口 | 16 位 | 必须,交付目标 |
| 长度 | 16 位 | UDP 数据报总长度(首部+数据),最小值为 8 |
| 校验和 | 16 位 | 可选(IPv4),必选(IPv6),检测错误 |
校验和覆盖范围:伪首部 + UDP 首部 + 数据。
伪首部结构(12 字节):
| 字段 | 长度 | 来源 |
|---|---|---|
| 源 IP 地址 | 32 位 | IP 层 |
| 目的 IP 地址 | 32 位 | IP 层 |
| 全 0 | 8 位 | 填充 |
| 协议号 | 8 位 | 17(UDP) |
| UDP 长度 | 16 位 | UDP 首部的「长度」字段 |
计算步骤:
题目:某应用层数据为 1000 字节,封装为 UDP 数据报,再封装为 IP 数据报,求各层数据长度。
解答:
题目:计算以下数据的 UDP 校验和(简化,仅 16 位数据):0x4567、0xABCD。
解答:
$`0x4567 + 0xABCD = 0xF134`$(无进位)$`~0xF134 = 0x0ECB`$0x0ECB题目:源 $IP=192.168.1.1$,目的 $IP=10.0.0.1$,UDP 长度=16,数据为 0x1234, 0x5678,求校验和。
解答:
0xC0A80101 + 0x0A000001 + 0x0011 + 0x0010 = 分段求和0x1234 + 0x5678↑ 以上为站内 HTML 相对链接(纯网页可浏览);本页右上「在 Obsidian 中打开」跳回源笔记。