IP首部校验和(ICMP报文的校验和)的计算方法

转载 2015年07月09日 21:56:20
由于在IP首部和ICMP报文中都存在着校验和的问题,在网上搜索了关于校验和的计算方法,得出如下的转载文章:
i 将校验和字段置为0,然后将IP包头按16比特分成多个


校验和Header Checksum:0x618D将其重置为0X0000

将IP包头分段:

        1.  0x4500

        2.  0x0029

        3.  0x44F1

        4.  0x4000

        5.  0x8006

        6.  0x0000 ------->这个为Header Checksum的值,我们前面将其重置为0了

        7.  0xC0A8

        8.  0x01AE

        9.  0x4A7D

+       10.  0x477D

-------------------------------------------------------

将1至10相加求出来的和为:0x29E70

II.对各个单元采用反码加法运算(即高位溢出位会加到低位,通常的补码运算是直接丢掉溢出的高位),将得到的和的反码填入校验和字段

0x0002+0x9E70=0x9E72

0x9E72二进制为:1001 1110 0111 0010

反码为:0110 0001 1000 1101

0110 0001 1000 1101的16进制为:0x618D

看看这个 是否与IP包头中的Checksum相同

==========================================================

当接收到IP对其进行检测

III.对各个单元采用反码加法运算,检查得到的和是否符合是全1(有的实现可能对得到的和会取反码,然后判断最终值是不是全0)

当收到IP数据局包的时候,要验证IP头是否正确,则可以这样进行

        1.  0x4500

        2.  0x0029

        3.  0x44F1

        4.  0x4000

        5.  0x8006

        6.  0x618D ------->这个为Header Checksum的值

        7.  0xC0A8

        8.  0x01AE

        9.  0x4A7D

+       10.  0x477D

-------------------------------------------------------

将1至10相加求出来的和为:0x2FFFD

对各个单元采用反码加法运算(即高位溢出位会加到低位,通常的补码运算是直接丢掉溢出的高位),将得到的和的反码填入校验和字段:

0x0002+0xFFFD=0xFFFF

0xFFFF二进制为:1111 1111 1111 1111

1111 1111 1111 1111反码为:0

ip首部校验和的计算方法(c语言实现)

IP首部校验和的计算方法(C语言实现)关联博客:关于ip报文校验和一些思考http://blog.csdn.net/qq_15437667/article/details/50701051校验和计算方...

IP和TCP包头校验和的计算方法

校验和的算法: 将数据以字为单位累加到一个双字中,如果数据长度为奇数,最后一个字节要先变成字,然后在加到原来的双字中,最后得到的结果是一个双字,最后将这个双字的高16位和低16位反复相加,直到高16...
  • xrfsycg
  • xrfsycg
  • 2013年05月29日 10:11
  • 348

IP和TCP包头校验和计算方法

校验和的算法:           将数据以字为单位累加到一个双字中,如果数据长度为奇数,最后一个字节要先变成字,然后在加到原来的双字中,最后得到的结果是一个双字,最后将这个双字的高16位和低1...

IP和TCP包头校验和计算方法

出处:http://hi.baidu.com/xinjf/item/8f046ed95b762e3549e1dd19 校验和的算法:           将数据以字为单位累加到一个双字中,如果数据长度...

安全报文中的MAC计算方法

安全报文中的MAC计算方法 校验码(MAC)总是命令或命令响应数据域中最后一个数据元素。规定MAC的长度皆为4个字节。当命令的数据域中要求必须带MAC时,即命令安全报文传送,命令头中CL...
  • lonet
  • lonet
  • 2012年05月23日 15:38
  • 5664

ip校验和及udp校验和的计算方法

一、ip校验和的计算:  计算方法:  1. ip包头(共20个字节)按照每16个bit作为一个值依次进行相加  2. 将计算结果的进位加到低16位上  3. 将结果取反  ip包头的内存内...

ICMP报文校验和的计算及各种网络报文结构

发送ICMP报文时,必须由程序自己计算校验和,将它填入ICMP头部对应的域中。校验和的计算方法是: 将数据以字(16位)为单位累加到一个双字中,如果数据长度为奇数,最后一个字节将被扩展到字,累加...

ICMP报文校验和的计算及各种网络报文结构

发送ICMP报文时,必须由程序自己计算校验和,将它填入ICMP头部对应的域中。校验和的计算方法是: 将数据以字(16位)为单位累加到一个双字中,如果数据长度为奇数,最后一个字节将被扩展到...
  • mifan88
  • mifan88
  • 2013年02月25日 22:56
  • 413

原创 ICMP报文校验和的计算及各种网络报文结构

发送ICMP报文时,必须由程序自己计算校验和,将它填入ICMP头部对应的域中。校验和的计算方法是: 将数据以字(16位)为单位累加到一个双字中,如果数据长度为奇数,最后一个字节将被扩展到字,累加的结...

《TCP/IP详解 卷1:协议》 读书笔记 第6章 ICMP:Internet控制报文协议

ICMP:Internet控制报文协议
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:IP首部校验和(ICMP报文的校验和)的计算方法
举报原因:
原因补充:

(最多只允许输入30个字)