IP首部校验和的算法

来源:互联网 发布:淘宝复刻鞋店 编辑:程序博客网 时间:2024/05/15 03:29

    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为最终的校验和。

0 0
原创粉丝点击