UDP数据报
- 校验和:可选,若不使用校验和,该字段全部置0
伪首部
- 适用UDP和TCP,仅在生成和检验验证和时使用,不实际发送
校验和算法(RFC1071)
- 二进制反码求和 == 二进制的反码(取反)再求和 == 二进制求和再取反
产生校验和
- 将16位的校验和字段全部置0
- 判断待校验的数据是否是偶数个字节,如果不是,则在末尾填充一个全0字节
- 将数据按每16位分组,然后计算二进制求和的值(两个16位数据相加,得到32位结果。如果32位结果的高16位不为0,需要继续计算32位结果的高16位与低16位的和,直到结果的高16位为0)
- 将求和所得结果取反,即为产生的16位校验和
检查校验和
- 数据的校验和字段不用被置0
- 判断待校验的数据是否是偶数个字节,如果不是,则在末尾填充一个全0字节
- 将数据按每16位分组,然后计算二进制反码求和的值
- 如果计算结果为全0,则校验成功,否则数据传输出现问题