UDP协议和TCP协议的校验

一、UDP的头部8个字节,源端口、目标端口、长度(以字节为单位)校验和blog

UDP的校验和要加上12B伪首部、伪首部5个字段、源IP(4B)、目标IP(4B)、全0字段(1B)、IP首部协议字段的值(1B)、UDP用户数据报的长度(2B)。class

而后把16位做为一组,也就是2B做为一组,若是说UDP用户数据报+伪首部是奇数个字节(也就是UDP数据报的数据部分是奇数个字节)那么那补充一个全0字节(此字节不发送、伪首部也不发送)。二进制

 

使用二进制反码求和、这个求和不是一会儿所有求得,是两行两行的求。im

二进制反码求和和通常的求和也没什么区别,主要就是若是说高位溢出,就在最低位上加1便可。数据

在计算校验和的时候,会先在校验和字段写入全0,最后是把二进制反码求和的结果取反码放入校验和字段。在接收方,也一样加上伪首部以及填充字节,计算校验和,若是没有出差错的话,应该所有是1.不然就表示出差错了。协议

接收方和发送方的伪首部是同样的。img

TCP的校验方式和UDP是同样的,校验和字段也是2B,先写全0,而后加上伪首部,端口

IP地址是32位 4B, IPv6的地址长度是128位co

伪首部是12字节,5个字段、源IP(4B)+目标IP(4B)+全0(1B)+协议(TCP是6)(1B)+TCP数据报的长度(首部+数据部分)ps