IP首部校验和的计算-创新互联-成都快上网建站

IP首部校验和的计算-创新互联

IP首部校验和的计算方法:

创新互联建站是一家专业提供鹿寨企业网站建设,专注与成都做网站、网站制作、H5高端网站建设、小程序制作等业务。10年已为鹿寨众多企业、政府机构等服务。创新互联专业网站建设公司优惠进行中。

 算法:

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);
}

(1)把IP数据包的校验和字段置为0;   
(2)把首部看成以16位为单位的数字组成,依次进行二进制求和(注意:求和时应将最高位的进位保存,所以加法应采用32位加法);   
(3)将上述加法过程中产生的进位(最高位的进位)加到低16位(采用32位加法时,即为将高16位与低16位相加,之后还要把该次加法最高位产生的进位加到低16位)   
(4)将上述的和取反,即得到校验和。

例子:

 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

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


分享题目:IP首部校验和的计算-创新互联
转载源于:http://kswjz.com/article/cciops.html
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流