UDP协议和TCP协议的校验

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数据报的长度(首部+数据部分)

猜你喜欢

转载自blog.csdn.net/shen19960603/article/details/94750223