您的位置:首页 > 其它

IP首部校验和的算法

2016-06-06 16:53 274 查看
    IP/ICMP/IGMP/TCP/UDP/等协议的校验和算法是相同的,采用的都是将数据流视为16位整数流进行重复的叠加计算。

    计算校验和的步骤:

(1)把校验和字段置为0。

(2)对IP头部的每16bit进行二进制求和。

(3)如果和的高16位不位0,则将和的高16位和低16位反复的相加,直到和的16位为0,从而获得一个16位的值。

(4)将该16位的值取反,存入校验和字段。

例如:

IP报头

45  00       00  31

89  F5      00  00

6E  06      00   00      //校验字段

DE B7      45   5D     //源IP地址

C0 A8       00   DC    //目的IP地址

根据如上的IP报头,可以求得校验和为:

4500+0031+89F5+0000+6E06+0000+DEB7+455D+C0A8+00DC = 322C4

由于计算的和为322C4的高16位不为0,所以将和的高16位和低16位进行反复的相加,直到和的高16位位0为止。

0003+22C4 = 22C7然后将结果进行取反操作~22C7 = DD38则DD38为最终的校验和。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: