UDP 协议仅仅在提供了复用/分解功能和少量的差错检验
1. UDP 报文结构
1 | // 代码示例,真正报文结构为二进制 |
头部共四个字段,每个字段由两个字节组成,共计 8 个字节
2. UDP 检验和
计算检验和时,加入伪头部
1 | type struct udp_virtual_header { |
将伪头部和报文中所有 16bit 字(2Byte)相加,data 最后不足 16bit 补零。溢出位回卷(回卷:溢出位和 16bit 相加),然后进行反码运算。
在校验时,将伪头部和报文中所有 16bit 字相加,和为 1111111111111111 则校验成功,反之失败,说明报文受损。
3. UDP 相对于 TCP 的优势
- 没有拥塞控制,更适合及时性质的传输
- 无需建立连接,相比于 TCP 有更低的时延
- 无状态连接,无需像 TCP 一般维护连接的参数(例如:接受和发送缓存、拥塞控制参数、序号和确认号等)
- 首部开销更小,UDP 头部 8Byte, TCP 首部 20Byte