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位取反,得到校验和。
校验和的计算公式如下:(udp伪首部+udp报文(除了校验和))
所有都按照16位相加=源ip+目的ip+协议号(17)+包长度
+源端口号+目的端口号+包长度
+数据