精华内容
下载资源
问答
  • IP数据报的基本算法,是学习计算机网络很有用的资料
  • 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数据报---首部校验和的计算方法

    千次阅读 多人点赞 2019-01-01 10:37:58
    为了方便大家,这里再借用网上的一个例子吧: ... 6E 06 00 00(校验字段)  DE B7 45 5D -> 222.183.69.93 (源IP地址)  C0 A8 00 DC -> 192.168.0.220 (目的IP地址...

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

      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数据报首部校验和算法

    千次阅读 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数据报检验计算

    千次阅读 多人点赞 2019-11-04 14:20:42
    一、原码,反码补码 原码 原码是计算机机器数中最简单的一种形式,数值位就是真值的绝对值,符号位位“0”时表示正数,符号位为“1”时表示负数,原码又称带符号的绝对值。为了方便整数小数区别,整数的符号位与...

    在进行计算之前先补充一下基础知识。

    一、原码,反码和补码

    原码

    原码是计算机机器数中最简单的一种形式,数值位就是真值的绝对值,符号位位“0”时表示正数,符号位为“1”时表示负数,原码又称带符号的绝对值。为了方便整数和小数区别,整数的符号位与数值位之间用“,”隔开,小数的符号位与数值位之间用“.”隔开。
    举例: 以8位机器数为例,整数的“+0”原码为0,0000000;整数的“-0”原码为1,0000000;小数的“+0”原码为0.0000000,小数的“-0”原码为1.0000000

    反码

    正数的反码就等于原码,负数的反码相当于除了符号位之外,其他位取反。
    举例: 整数的“+0”反码为0,0000000;整数的“-0”原码为1,1111111;小数的“+0”原码为0.0000000,小数的“-0”原码为1.1111111

    补码

    正整数的补码是其二进制表示,与原码相同;
    负整数的补码为反码加1;
    举例: +1的补码为0,0000001;
    -1的补码为1,111 1111

    二、IP数据报中,首部检验和计算方法

    这个字段用来检验数据报的首部,不包括数据部分。数据报每经过一个路由器,路由器都要重新计算首部检验和。不检验数据部分可以减小计算量。
    计算方法: 先把IP数据报首部化为许多16位的序列,并把检验和字段置零。用反码运算把所有16字相加后,将得到的和的反码写入检验和字段。接收方收到数据后,将首部的所有16位子序列再使用反码算术符相加一次,将得到的和取反码。如果首部未发生任何变化,那么这个和肯定为0。否则认为出差错,并将此数据报丢弃。

    反码相加:从低位向高位计算,0 0 得0 ,0 1 得1 ,1 1 得0 进1,如果最高位相加后产生进位,最后得到的结果加1。

    例题:设IP数据报使用固定首部,其个字段的数值如图。计算下列IP数据报首部的检验和,各字段的数值如图
    在这里插入图片描述
    4 5 0 —>01000101 00000000
    28 —>00000000 00011100
    1 —>00000000 00000001
    00 —>00000000 00000000
    4 17 —>00000100 00010001
    10.12.14.5 —>00001010 00001100 00001100 00000110
    12.6.7.9 —> 00001110 00000101 0000111 00001001
    反码运算:
    01110100 01001110
    取反,得到检验和字段:
    10001011 10110001

    使用16进制算法(每16位二进制数字,转换为4个十六进制数字表示)
    4 5 0 —>4500
    28 ---->001C
    1 --------->0001
    0 0 —>0000
    4 17 ---->0411
    10.12.14.5 —> 0A0C 0E05
    12.6.7.9 -->0C06 0709
    加法结果:744E
    反码:8BB1

    展开全文
  • 【整理】IP数据报校验字段计算方法

    千次阅读 2018-08-02 16:09:14
    一、IP数据报格式 二、ip校验和的计算方法: 将校验字段置零。 ip报头(共20个字节)按照每16个bit作为一个值依次进行相加。 将计算结果的进位加到低16位上。 将结果取反。 例如: 45 00 00 20 0F B8 00 00 ...
  • UDP之数据报校验和

    千次阅读 2018-10-26 23:39:31
    由于目前很多网卡设备是支持对L4层数据包进行校验和的计算和验证的,所以在L4协议软件的实现中,会根据网卡的支持情况作不同的处理,为此内核在struct sk_buff结构和struct net_device中增加了校验和相关的参数,...
  • 查阅了大量资料后发现原来是网卡的自动计算校验和在作怪。 网卡驱动的高级配置中,一般有两项叫做Rx Checksum Offload和Tx Checksum Offload 以win7为例,可以看下图所示: 其中的 “IPv4硬件校验和”即对应了这两...
  • 一、用户数据报协议(UDP)简介 UDP是一种保留消息边界的简单的面向数据报的传输层协议 UDP特性 它不提供差错纠正、队列管理、重复消除、流量控制拥塞控制 不提供差错纠正:它把应用程序传给IP层的数据发送...
  • IP数据报首部检验原理

    千次阅读 2020-10-31 21:09:45
    在发送方,先把IP数据报首部划分为许多16位字的序列,并把检验字段置为0,用反码算术运算把所有16位字相加,将得到的的反码写入检验字段。 接收方收到数据后,将首部所有的16位字使用反码算术运算相加一次,将...
  • IP校验和的计算IP数据报校验和只检验IP数据报的首部。当发送IP包时,需要计算IP报头的校验和: 把校验和字段置为0; 对IP头部中的每16bit进行二进制求和; 如果和的高16bit不为0,则将和的高16bit和低16bit反复...
  • IP数据报格式分析

    千次阅读 2019-04-07 17:50:27
    文章目录前言NAT网络地址转换IP数据报 前言 在前面的文章中,我们知道,如果一个主机(开发板)想要访问外网,那必须经过NAT地址转换,就拿我们的电脑来说,它想要访问外网,那就必须将电脑的IP地址转换为公网的IP...
  • IP/UDP/TCP/ICMP数据报协议的校验...UDP数据报计算校验和的方法和IP数据报校验和的方法相似,但是UDP的校验和是将首部和数据部分一起都校验。 并且在计算UDP校验和之前需要封装一个伪首部,伪首部结构如下(具体结构定义
  • IP数据报的头部中的“首部检验”字段,它的作用是为了校验数据报 头部 在传输中是否出错。那这种功能是如何实现的呢? 下面结合一张图来说明(图片来源网络): 在说明之前要补充一个前提就是:IP数据报的长度...
  • IP数据报

    万次阅读 多人点赞 2018-06-08 17:03:45
     IP(Internet Protocol)是TCP/IP协议族中的核心协议,所有TCP、UDP、ICMPIGMP数据都通过IP数据报传输。在Internet中它是能使连接到网络上的所有设备实现相互通信的一套规则,它提供了一种尽力而为、无连接的...
  • ip数据报格式;ip数据报分片

    万次阅读 多人点赞 2018-05-28 10:33:29
    IPv4数据报格式:上图表示的数据,最高位在左边,记为0位;最低位在右边,记为31位。在网络中传输数据时,先传输0~7位,其次是8~15位,然后传输16~23位,最后传输24~31位。由于TCP/IP协议头部中所有的二进制数在网络...
  • 深入学习IP数据报发送过程

    千次阅读 2019-08-26 20:15:55
    IP协议的功能 回顾一下前面的文章所提及的知识点,总结一下IP协议的功能,得到以下结论: 编址(目标端的IP地址),数据传输的过程当中就必须表明...IP数据报发送 IP协议是网络层的主要协议,在上层传输协议(如TC...
  • java ip首部效验

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

    千次阅读 2018-08-14 22:09:21
    在IPv4协议中,首部检验占16位。...IP首部的检验采用下面的简单计算方法:在发送方,先把IP数据报首部划分为许多16位字的序列,并把检验字段置 零。用反码算术运算把所有16位字相加后,将得...
  • IPV4数据报的首部长度为5,数据总长度为80字节,数据报的标识为1,未分片, TTL值为4,封装的是TCP数据,源地址目的地址分别是192.168.20.86192.168.21.20, 请对IP数据报进行首部校验
  • 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 信息合并后,把字符串转换成十进制,...
  • IP的头部校验和

    千次阅读 2017-07-15 15:59:35
    IP的头部校验和是用来检测IP头部的完整性和正确性 发送方在数据封装过程中会通过一套奇偶校验和算法对IP头部进行计算,之后得出一个校验值,将其置入IP头部中; 当接收方收到此数据包...“为了计算一份数据报IP
  • ip校验和 及 udp校验和 的计算方法

    万次阅读 2016-10-20 13:05:05
    一、ip校验和的计算: 计算方法: 1. ip包头(共20个字节)按照每16个bit作为一个值依次进行相加 2. 将计算结果的进位加到低16位上 3. 将结果取反 ip包头的内存内容 eg: 45 00 00 20 0F B8 00 00 80 11 ...
  • 应该按如下步骤:(1)把IP数据报的首部都置为0,包括校验和字段。(2)把首部看成以16位为单位的数字组成,依次进行二进制反码求和。(3)把得到的结果存入校验和字段中。在接收数据时,计算数据报的校验和相对简单...
  • ip数据报格式详解

    千次阅读 2018-12-19 11:57:34
    IP数据报 一、 固定部分 (1)版本 占4位 (2)首部长度 占4位 (3)区分服务 占8位  (4)总长度 占16位 (5)标识(identification) 占16位 (6)标志(flag) 占3位 (7)片偏移 占13位 (8)生存时间 占8位 (9)...
  • ip校验和及udp校验和的计算方法

    千次阅读 2017-03-03 22:08:59
    一、ip校验和的计算:  计算方法:  1. ip包头(共20个字节)按照每16个bit作为一个值依次进行相加  2. 将计算结果的进位加到低16位上  3. 将结果取反  ip包头的内存内容  eg:  45 00 00 20 0F B8 00 00 ...
  • “尽力而为”的含义是不保 证IP数据报能成功到达目的地 虽然IP不是简单丢弃所有不必要流量,但它也不对自已尝 试交付的数据报提供保证。当某些错误发生时,例如一台路由器临时用尽缓冲区, IP提供一 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 39,250
精华内容 15,700
关键字:

ip数据报校验和