<aside>
💡 UDP: 用户数据报协议(User Datagram Protocol)
</aside>

UDP报文格式
- 8字节的头部(相比于TCP头部有20字节)
- 源端口号(2字节)
- 目标端口号(2字节)
- 长度(包含头部)
- 校验和(EDC,差错检测码),判断在传输过程中是否出错,如果出错直接丢弃
- 载荷部分(数据)

UDP校验和
<aside>
💡 接收方自己计算校验和,判断(取反后)与发送方发来头部中的校验和是否相等,如果不相等说明一定出错(但相等也不代表一定没出错(残存错误))
</aside>

<aside>
💡 UDP的校验和算法是一种简单的一位反码求和算法
</aside>
校验和判断步骤:
- 将UDP数据包中的数据按16位(两个字节)进行划分,如果数据长度为奇数,则在最后一个字节后补0,使得每个字节都有对应的16位。
- 对所有16位的数据进行二进制求和。
- 如果结果超出了16位,则将高位溢出的部分加到低位中(进位回滚)
- 累加和和校验和相加得到0xffff(16bits全为1),校验成功,否则失败。
