传输层:UDP协议
1.UDP协议特点
2.UDP报文格式
如下:
校验和的计算:
3.例子
UDP(User Datagram Protocol,用户数据报协议)是一种无连接的传输层协议,其报文格式简单高效,适用于对实时性要求高但允许少量丢包的应用(如视频流、DNS查询等)。以下是UDP报文的详细格式说明:
UDP报文格式
UDP报文由头部(Header)和数据部分(Data)组成,头部固定为8字节,结构如下:
0 7 8 15 16 23 24 31
+--------+--------+--------+--------+
| 源端口号(Source Port) |
+--------+--------+--------+--------+
| 目的端口号(Destination Port) |
+--------+--------+--------+--------+
| 报文长度(Length) |
+--------+--------+--------+--------+
| 校验和(Checksum) |
+--------+--------+--------+--------+
| 数据(Data,可变长度) |
+-----------------------------------+
字段详解
-
源端口号(Source Port)
• 16位,取值范围:0~65535。• 发送方的端口号,可选字段(若无需回复可设为0)。
-
目的端口号(Destination Port)
• 16位,取值范围:0~65535。• 接收方的端口号,用于标识目标应用程序(如DNS服务默认端口53)。
-
报文长度(Length)
• 16位,表示整个UDP报文的字节数(包括头部和数据)。• 最小值为8(仅头部),最大理论值为65535,但实际受MTU限制(如以太网MTU通常为1500字节)。
-
校验和(Checksum)
• 16位,用于检测报文在传输中的错误(可选,IPv4中可置0,IPv6中必须启用)。• 计算范围:伪头部(Pseudo-Header) + UDP头部 + 数据(若数据长度为奇数,补0对齐)。
-
数据部分(Data)
• 可变长度,承载上层应用数据(如DNS查询、音视频流等)。
伪头部(Pseudo-Header)
校验和计算时临时添加的12字节结构,用于确保数据正确到达目标主机(不实际传输):
0 7 8 15 16 23 24 31
+--------+--------+--------+--------+
| 源IP地址(32位) |
+--------+--------+--------+--------+
| 目的IP地址(32位) |
+--------+--------+--------+--------+
| 零填充 | 协议号(17)| UDP长度 |
+--------+--------+--------+--------+
• 协议号(Protocol):固定为17(表示UDP)。
特点与注意事项
- 无连接:无需建立/释放连接,直接发送数据。
- 不可靠:不保证顺序、不重传丢失报文。
- 轻量级:头部开销小(仅8字节),适合低延迟场景。
- 应用场景:DNS、DHCP、SNMP、QUIC(HTTP/3)、实时音视频等。
示例报文(十六进制)
假设发送一个UDP报文:
• 源端口:1234 → 0x04D2
• 目的端口:53 → 0x0035
• 数据:"test"
(4字节)
• 长度:8(头) + 4(数据) = 12 → 0x000C
• 校验和:0x0000
(禁用)
报文内容:
04 D2 00 35 00 0C 00 00 74 65 73 74