IP/TCP/UDP都可以用上面的代码实现,具体的不同:
IP只计算IP首部的校验和,而TCP/UDP则需要计算 伪首部+TCP/UDP首部+数据区 的校验和,是对整个数据报文的校验和。
注意:1、TCP/UDP要计算的是整个TCP/UDP+伪首部的报文完整性,在所有数据都填充完成后进行校验;
2、计算校验和之前校验和置零;
3、伪首部中的保留字段为零,在协议号之前,由于该程序通过字进行计算的,字节间的顺序一定要对。
IP/TCP/UDP都可以用上面的代码实现,具体的不同:
IP只计算IP首部的校验和,而TCP/UDP则需要计算 伪首部+TCP/UDP首部+数据区 的校验和,是对整个数据报文的校验和。
注意:1、TCP/UDP要计算的是整个TCP/UDP+伪首部的报文完整性,在所有数据都填充完成后进行校验;
2、计算校验和之前校验和置零;
3、伪首部中的保留字段为零,在协议号之前,由于该程序通过字进行计算的,字节间的顺序一定要对。