IP首部校验和的计算     [网络协议分析的作业]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IP首部校验和的计算     [网络协议分析的作业]相关的知识,希望对你有一定的参考价值。

SHORT checksum(USHORT* buffer, int size)

{

    unsigned long cksum = 0;

    while(size>1)

    {

        cksum += *buffer++;

        size -= sizeof(USHORT);

    }

    if(size)

    {

        cksum += *(UCHAR*)buffer;

    }

    cksum = (cksum>>16) + (cksum&0xffff); 

    cksum += (cksum>>16); 

    return (USHORT)(~cksum);

}

IP头:

  45 00    00 31

  89 F5    00 00

  6E 06    00 00(校验字段)

  DE B7   45 5D       ->    222.183.69.93

  C0 A8   00 DC     ->    192.168.0.220

  计算:  

  4500 + 0031 +89F5 + 0000 + 6e06+ 0000 + DEB7 + 455D + C0A8 + 00DC =3 22C4

  0003 + 22C4 = 22C7

  ~22C7 = DD38      ->即为应填充的校验和

  当接受到IP数据包时,要检查IP头是否正确,则对IP头进行检验,方法同上:

  计算:

  4500 + 0031 +89F5 + 0000 + 6E06+ DD38 + DEB7 + 455D + C0A8 + 00DC =3 FFFC

  0003 + FFFC = FFFF

  得到的结果是全一,正确。


本文出自 “12038626” 博客,谢绝转载!

以上是关于IP首部校验和的计算     [网络协议分析的作业]的主要内容,如果未能解决你的问题,请参考以下文章

IP首部校验和的计算     [网络协议分析的作业]

IP数据包首部校验和的计算

作业:首部校验和计算

首部校验码

ip首部校验和计算

IP首部校验和计算