校验和计算

UDP 计算校验和的方法和 IP 数据报首部校验和的方法相似。不同的是:IP 数据报校验和只校验 IP 数据报的首部,但 UDP 的校验和是把首部和数据部分一起都检验。

UDP 的校验和需要计算 UDP 首部加数据荷载部分,但也需要加上 UDP 伪首部。这个伪首部指,源地址、目的地址、UDP 数据长度、协议类型(0x11),协议类型就一个字节,但需要补一个字节的 0x0,构成 12 个字节。伪首部+UDP 首部+数据一起计算校验和。

UDP 检验和的计算方法是:
按每 16 位求和得出一个 32 位的数;
如果这个 32 位的数,高 16 位不为 0,则高 16 位加低 16 位再得到一个 32 位的数;
重复第 2 步直到高 16 位为 0,将低 16 位取反,得到校验和。