一、ip校验和的计算:
计算方法:
1. ip包头(共20个字节),从4500开始到目标IP结束,按照每16个bit作为一个值依次进行相加
2. 将计算结果的进位加到低16位上
3. 将结果取反
ip包头的内存内容
eg:
45 00 04 20 00 00 40 00
80 11 00 00 C0 A8 00 02
C0 A8 00 C3
将 0x4500 0x0420 0x0000 0x4000 0x8011 0x0000 0xC0A8 0x0002 0xC0A8 0x0003 依次相加 所得结果为0x28A86, 然后将高16位于低16位相加0x0002 + 0x8A86 = 0x8A88;
(注意:如果相加后仍然有溢出,再将高16位于低16位相加,直到没有溢出为止,程序上一般计算两次即可),然后将 0x8A88 取反得 0x7577;