UDP协议校验和的计算

UDP协议的伪首部既不向上传输也不向下传输为什么我们还要计算它?

答:UDP的校验和需要计算UDP首部加数据荷载部分,也需要加上UDP伪首部,既如图所示:

源IP地址,目的IP地址,UDP长度,再加上被补充了1字节全零的协议类型(即第三字段和第四字段)构成了一个长度为12字节的伪首部

在图中可以看出在计算校验和时,校验和的那部分也被包含其中。在计算时校验和的部分被置0方可计算

UDP校验和的计算方法:(按图二进行计算)

1.将校验和字段置零。

2.把所有比特位按16-bit(2字节)一组进行划分。

3.把2中划分好的组进行向加,如果遇到进位,将进位值加到值的最低位上。举例:(用16进制表示)

0xBB5E+0xFCED = 0x1 B84B, 可以看出在这个例子中结果有进位,所以将进位值1加到值的最低位上,得到结果是0xB84C

4.把所有的组相加到一起后,得到的结果是一个16位的数,将这个结果取反后则得到了校验码。