精华内容
下载资源
问答
  • 2019-01-01 10:37:58

    为了方便大家,这里再借用网上的一个例子吧:

      IP头:

      45 00    00 31

      89 F5    00 00

      6E 06    00 00(校验字段)

      DE B7   45 5D       ->    222.183.69.93   (源IP地址)

      C0 A8   00 DC       ->    192.168.0.220  (目的IP地址)

      计算:  

      4500 + 0031 +89F5 + 0000 + 6e06+0000 + DEB7 + 455D + C0A8 + 00DC =3 22C4 (结果大于4bit,继续迭代计算)

      0003 + 22C4 = 22C7 

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

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

      计算:

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

      0003 + FFFC = FFFF

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

    更多相关内容
  • IP数据报首部校验和算法说明

    千次阅读 2017-12-28 16:26:28
    IP数据报首部校验和算法》 1. IP数据报首部校验主要用于保证IP数据报头的完整性。 2. 该算法为“反码求和校验”,”反码求和校验“是一个专用术语,区别于先求反码再求和。 3. 该算法过程如下文所示例。  => ...


    《IP数据报首部校验和算法说明》


    1.  IP数据报首部校验主要用于保证IP数据报头的完整性。

    2.  该算法为“反码求和校验”,”反码求和校验“是一个专用术语,区别于先求反码再求和。

    3.  该算法过程如下文所示例。

        => 发送方
        i.   将校验和字段初始化为0,然后将IP报头按照16bit分成多个单元,如果报头长度不是
            16bit整数倍,则填充0;
       
        ii.  对上述各个单元(16bit)采用“反码求和”运算,即将各个单元直接相加,高位溢出位
     加到最低位(不同于通常补码运算是直接丢掉溢出位),将得到的和取其反码,填入校验和字段即可;

        iii.  IP数据报头发送完毕后,接着发送数据报内容;


        => 接收方 

        i.   将校验和字段初始化为0,然后将IP报头按照16bit分成多个单元,如果报头长度不是

             16bit整数倍,则填充0;
       
        ii.  对上述各个单元(16bit)采用“反码加法”运算,包括发送方发送的校验和字段,
             然后检查得到的结果每个数据位是否全部为1;

        iii.  如果满足,则进行下步处理,否则表明该帧数据报在传输过程中发生错误,舍弃该帧数据;


    4.  “反码求和”运算示例


       例如,位宽为3bit的两个数值100b和101b进行反码求和运算。

        i.   100b + 101b = 1_001b,高位存在溢出;

        ii.  高位溢出的1,加到最低位。即 001b + 1b(溢出位) = 010b;

        iii. 上述两数反码求和结果为010b,然后取反,为101b即为校验和发送给接收端;

    说明:在接收端会接收到三个数值(包含校验和),100b, 101b, 101b。

       按照“反码求和”运算,结果为

       100b + 101b + 101b = 1_110b, 溢出位加到最低位后,结果为111b,每个数据位全部为1;

     (为什么全部为1,不难理解,原码010b与反码101b求和,其结果各数据位必然为1)


    备注:参考博客文章链接为http://www.360doc.com/content/15/0910/23/27653981_498345868.shtml

         








    展开全文
  • IP数据报首部校验和算法

    千次阅读 2018-05-26 13:51:19
    IP数据报首部校验和算法 详细 非代码当用google搜索IP数据报首部校验和算法的时候,总是看到的是代码,没有看到其过程,于是就有了此文,如有错误请指正。文章省略一点,呵呵 IP/ICMP/IGMP/TCP/UDP等协议的校验和...

    IP数据报首部校验和算法 详细 非代码

    当用google搜索IP数据报首部校验和算法的时候,总是看到的是代码,没有看到其过程,于是就有了此文,如有错误请指正。文章省略一点,呵呵
     
    IP/ICMP/IGMP/TCP/UDP等协议的校验和算法都是相同的,算法如下:
    在发送数据时,为了计算数IP据报的校验和。应该按如下步骤:
    (1)把IP数据报的首部都置为0,包括校验和字段。
    (2)把首部看成以16位为单位的数字组成,依次进行二进制反码求和。
    (3)把得到的结果存入校验和字段中。
    在接收数据时,计算数据报的校验和相对简单,按如下步骤:
     
    (1)当接收IP包时,需要对报头进行确认,检查IP头是否有误,算法同上2、3步,然后判断取反的结果是否为0,是则正确,否则有错。

      

    1、发送方
      i)将校验和字段置为0,然后将IP包头按16比特分成多个单元,如包头长度不是16比特的倍数,则用0比特填充到16比特的倍数;
     
      ii)对各个单元采用反码加法运算(即高位溢出位会加到低位,通常的补码运算是直接丢掉溢出的高位),将得到的和的反码填入校验和字段;
     
      iii)发送数据包。
     
    2、接收方
      i)将IP包头按16比特分成多个单元,如包头长度不是16比特的倍数,则用0比特填充到16比特的倍数;
     
      ii)对各个单元采用反码加法运算,检查得到的和是否符合是全1(有的实现可能对得到的和会取反码,然后判断最终值是不是全0);
     
    iii)如果是全1则进行下步处理,否则意味着包已变化从而丢弃之。需要强调的是反码和是采用高位溢出加到低位的,如3比特的反码和运算:100b+101b=010b(因为100b+101b=1001b,高位溢出1,其应该加到低位,即001b+1b(高位溢出位)=010b)。

     1.实例

    请看我用ominipeek的抓包

    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相加求出来的和为:0x2FFD

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

    0x0002+0x0FFD=0xFFFF

    0xFFFF二进制为:1111 1111 1111 1111

    1111 1111 1111 1111反码为:0

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

    关于这一部的补充说明,

    将IP包头分段:
     
            1.  0x4500
     
            2.  0x0029
     
            3.  0x44F1
     
            4.  0x4000
     
            5.  0x8006
     
            6.  0x0000 ------->这个为Header Checksum的值,我们前面将其重置为0了
     
            7.  0xC0A8
     
            8.  0x01AE
     
            9.  0x4A7D
     
    +       10.  0x477D
    ----------------------------------------------------------------------------------------------------------

    展开全文
  • 目录 IP数据报首部校验和算法 详细 非代码 IP数据报首部校验和算法 详细 非代码 参考转载至: ​ http://www.cnblogs.com/fhefh/archive/2011/10/18/2216885.html 当用google搜索IP数...

    IP数据报首部校验和算法 详细 非代码

    参考转载至:

    http://www.cnblogs.com/fhefh/archive/2011/10/18/2216885.html

    当用google搜索IP数据报首部校验和算法的时候,总是看到的是代码,没有看到其过程,于是就有了此文,如有错误请指正。文章省略一点,呵呵

    IP/ICMP/IGMP/TCP/UDP等协议的校验和算法都是相同的,算法如下:

    在发送数据时,为了计算数IP据报的校验和。应该按如下步骤:

    (1)把IP数据报的首部都置为0,包括校验和字段。

    (2)把首部看成以16位为单位的数字组成,依次进行二进制反码求和。

    (3)把得到的结果存入校验和字段中。

    在接收数据时,计算数据报的校验和相对简单,按如下步骤:

    (1)当接收IP包时,需要对报头进行确认,检查IP头是否有误,算法同上2、3步,然后判断取反的结果是否为0,是则正确,否则有错。

    1、发送方

      i)将校验和字段置为0,然后将IP包头按16比特分成多个单元,如包头长度不是16比特的倍数,则用0比特填充到16比特的倍数;

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

      iii)发送数据包。

    2、接收方

      i)将IP包头按16比特分成多个单元,如包头长度不是16比特的倍数,则用0比特填充到16比特的倍数;

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

    ​ iii)如果是全1则进行下步处理,否则意味着包已变化从而丢弃之。需要强调的是反码和是采用高位溢出加到低位的,如3比特的反码和运算:100b+101b=010b(因为100b+101b=1001b,高位溢出1,其应该加到低位,即001b+1b(高位溢出位)=010b)

     1.实例

    请看我用ominipeek的抓包

    1
    图:1

    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相加求出来的和为:0x2FFD

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

    0x0002+0x0FFD=0xFFFF

    0xFFFF二进制为:1111 1111 1111 1111

    1111 1111 1111 1111反码为:0

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

    关于这一部的补充说明,

    将IP包头分段:

                1.  0x4500
                2.  0x0029        
                3.  0x44F1        
                4.  0x4000        
                5.  0x8006        
                6.  0x0000 ------->这个为Header Checksum的值,我们前面将其重置为0了        
                7.  0xC0A8        
                8.  0x01AE        
                9.  0x4A7D       
                10.  +0x477D
    

    2
    图:2
    展开全文
  • ip数据报首部校验和的计算网络层间的数据传送特点是: 不可靠: 分组可能丢失,乱序等,不做确认; 无连接: 每个分组都独立对待; 尽力投递: 不随意放弃分组; 点到点。因为在传输过程中会受到很多的干扰,ip数据包会...
  • IP数据报首部检验原理

    千次阅读 2020-10-31 21:09:45
    在发送方,先把IP数据报首部划分为许多16位字的序列,并把检验字段置为0,用反码算术运算把所有16位字相加,将得到的的反码写入检验字段。 接收方收到数据后,将首部所有的16位字使用反码算术运算相加一次,将...
  • ip首部校验和

    2021-09-02 15:48:07
    ip首部校验和 只检验数据的首部,不包括数据部分 方法: 在发送方,先把IP数据报首部划分为许多16位字的序列,并把检验和字段置0,用反码算术运算把所有16位字相加后,将得到的和的反码写入检验和字段。 接收方...
  • IP数据报的头部中的“首部检验”字段,它的作用是为了校验数据 头部 在传输中是否出错。那这种功能是如何实现的呢? 下面结合一张图来说明(图片来源网络): 在说明之前要补充一个前提就是:IP数据报的长度...
  • 校验和字段清零 然后对每16位(2字节)进行二进制反码求和(先对每16位求和,再将得到的值取反) 接收方 检查ip头部是否正确,再对ip头进行校验,方法同上。 实例 IP头 45 00 00 31 89 F5 00 00 6E 06 00 00...
  • 一、首先区别下面两个概念:(1)one's complement:正数=原码,负数=反码(2)two's complement:就是通常所指的补码二、计算ip首部校验和1.发送IP数据报计算checksum(1)将校验和字段置为0;(2)对首部中(一般为20B)每个16位...
  • IP数据报首部

    千次阅读 2022-02-08 20:39:00
    IP数据报首部固定部分字段解释
  • IP首部检验详细计算步骤

    千次阅读 多人点赞 2021-06-22 14:25:52
    在发送方,先把IP数据报首部划分为许多16位字的序列,并把检验字段置零。用反码算术运算把所有16位字相加后,将得到的的反码写入检验字段。 接收方收到数据后,将首部的所有16位字再使用反码算术运算相加一...
  • IP首部校验和的计算

    万次阅读 多人点赞 2015-09-12 18:31:08
    IP首部校验和的计算
  • java ip首部效验

    2020-12-07 20:31:32
    大学生网络实验课 (1)在界面上,用户能够输入或编辑IP协议包各字段数据,例如,“协议”字段应该是下拉选择 方式; (2)程序能够自动检查IP地址的合法性,且主机可用;...检验“首部校验和”字段的计算结果:
  • IP首部校验和算法

    千次阅读 2015-07-13 10:03:28
    校验和不计算被封装的数据,UDP、TCP和ICMP都有各自的校验和。报头校验和字段包含一个16位二进制补码和,这是由数据包发送者计算得到的。接受者将连同原始校验和重新进行16位二进制补码和的计算。如果数据包传输中...
  • 今日,在学习谢希仁版计网的IP数据报格式时看到这段话: 用反码算术运算把所有16位字相加后,将得到的的反码写入检验字段。 非常疑惑,因为印象中对反码的理解是: 正数的反码是其本身 负数的反码是在其...
  • 当用google搜索IP数据报首部校验和算法的时候,总是看到的是代码,没有看到其过程,于是就有了此文,如有错误请指正。文章省略一点,呵呵 IP/ICMP/IGMP/TCP/UDP等协议的校验和算法都是相同的,算法如下: 在发送...
  • IP数据报检验计算

    千次阅读 多人点赞 2019-11-04 14:20:42
    一、原码,反码补码 原码 原码是计算机机器数中最简单的一种形式,数值位就是真值的绝对值,符号位位“0”时表示正数,符号位为“1”时表示负数,原码又称带符号的绝对值。为了方便整数小数区别,整数的符号位与...
  • 应该按如下步骤:(1)把IP数据报首部都置为0,包括校验和字段。(2)把首部看成以16位为单位的数字组成,依次进行二进制反码求和。(3)把得到的结果存入校验和字段中。在接收数据时,计算数据校验和相对简单...
  • IP首部校验和字段计算方法

    千次阅读 2020-06-27 00:50:03
    IP首部有16bit的校验和,因此,IP首部以16bit为单位计算校验和IP首部的长度一定是16bit的整倍数,这是由于首部长字段是以32bit为单位计算的,不足的补0。 发送方计算方法: 1.首先把校验和的16bit置0。 2.将首部以...
  • 计算机网络-IP数据报首部

    千次阅读 2020-05-04 14:54:35
    IP数据报首部(报头)数据两个部分组成。 首部可分为: 固定部分/定长部分(20字节)+可选部分/变长部分(40字节); 注释: (1)图中每一行由32比特/位bit(4个字节byte),每小格称为域/字段; (2)小括号里...
  • IP 数据报首部分析

    千次阅读 2020-10-25 15:21:33
    今咱就抓个数据报具体看一看真实网络中的 IP 报首部. 操作方法很简单, 使用wireshark进行抓包. 抓包后随便找个包看一下就行, 毕竟所有通信的包都需要经过网络层.(同时,wireshark会对协议的相关信息给出标识, 更...
  • ip协议首部校验及tcp校验计算

    千次阅读 2021-10-18 16:06:14
    将图中按照16位进行分组,然后校验和位清零,将数据按16位一组进行累加,最后得出一个结果,如果此结果高16位为0,则将结果按位取反后填入16位首部校验和位置;如果高16位不为0,则将高16位与低16位相加,再看得出...
  • IP数据报首部字段分析

    千次阅读 2020-01-29 11:22:48
    IP数据报首部字段分析 IP数据报传输使用的是网络字节序,网络字节序是大端字节序 IP数据报首部一般为20个字节(没有选项的情况),最大是60字节,60字节的计算在首部长度字段中 版本号 区分IPv4IPv6 IPv4是0100 ...
  • IP首部校验和计算与程序设计

    千次阅读 2020-11-25 09:49:08
    IP包的首部校验和的计算与程序设计一,感受与实验基本要求1.1 实验目的1.2 实验要求二,实验内容2.1 IP首部的基本校验方法2.2流程图2.3编程思路2.3.1得到数据并进行标准化2.3.2 信息合并后,把字符串转换成十进制,...
  • IPV4数据的首部长度为5,数据总长度为80字节,数据的标识为1,未分片, TTL值为4,封装的是TCP数据,源地址目的地址分别是192.168.20.86192.168.21.20, 请对IP数据报进行首部校验

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 23,263
精华内容 9,305
关键字:

ip数据报首部校验和