本文共 547 字,大约阅读时间需要 1 分钟。
1、UDP的头部8个字节,源端口、目标端口、长度(以字节为单位)校验和
UDP的校验和要加上12B伪首部、伪首部5个字段、源IP(4B)、目标IP(4B)、全0字段(1B)、IP首部协议字段的值(1B)、UDP用户数据报的长度(2B)。
然后把16位作为一组,也就是2B作为一组,如果说UDP用户数据报+伪首部是奇数个字节(也就是UDP数据报的数据部分是奇数个字节)那么那补充一个全0字节(此字节不发送、伪首部也不发送)。
使用二进制反码求和、这个求和不是一下子全部求得,是两行两行的求。
二进制反码求和和一般的求和也没什么区别,主要就是如果说高位溢出,就在最低位上加1即可。
在计算校验和的时候,会先在校验和字段写入全0,最后是把二进制反码求和的结果取反码放入校验和字段。在接收方,也同样加上伪首部以及填充字节,计算校验和,如果没有出差错的话,应该全部是1.否则就表示出差错了。
接收方和发送方的伪首部是一样的。
TCP的校验方式和UDP是一样的,校验和字段也是2B,先写全0,然后加上伪首部,
IP地址是32位 4B, IPv6的地址长度是128位
伪首部是12字节,5个字段、源IP(4B)+目标IP(4B)+全0(1B)+协议(TCP是6)(1B)+TCP数据报的长度(首部+数据部分)
转载地址:http://oizji.baihongyu.com/