IP数据报首部检验和的详细计算过程

目录

IP数据报检验的计算过程

引入

检验原理

题目案例及分析

题目要求

分析

计算过程图解

总结


IP数据报检验的计算过程

本篇文章只介绍IP数据报的检验过程,不对原理做过多讲解。内容通俗易懂,请放心大胆食用!

引入


 IP数据报检验只检验数据报的首部部分,而不检验数据部分,在网络层主要负责的也不是数据的检验,而是路由器的分组转发,因此只对数据报的首部进行检验,不检验数据部分可以减少计算量,提高传输速度。
 IP数据报的首部包含总长度、标识、标注、片偏移等信息,我们这里不做过多概念性解释,只需要了解有这么几个信息在IP数据报的首部就好了。重点需要知道是IP数据报首部的检验原理及实际计算方法。


检验原理


IP数据报检验主要有三个过程。

        1.发送方,将数据报首部划分为多个不同的16位字的序列,并将首部检验和字段置为0;
        2.发送方,对这些16位序列进行反码运算,并将运算的结果的反码写入首部检验和字段;
        3.接收方,由于发送方已经将检验和写入了,因此接收方接收到的首部中,检验和字段并不是 为0的,重复1,2操作后,最终得到的运算结果取反码,如果在传输过程中首部字段的数据未发生变化,那么取反后的结果必为0;

反码运算:与正常的运算唯一不同之处就是如果最高位产生进位,那么最高位的进位不会产生更高一位,而是将进位加到最低一位上。

题目案例及分析


题目要求


假设现在有一个IP数据报的首部为001100010101,求出该数据报的首部检验和字段。

注意:这里我们为了方便计算,选了一个只有12位的首部,并且把原本应该划分为每16位一个的序列也改成了每4位,但在实际的题目计算中依旧要使用规范的方法,即划分16位为一组,这里仅仅是为了方便我们这里的计算讲解。

分析


 我们将这一共12位长的IP数据报首部划分为3个序列,每个序列长度为4位,因此我们可以得到以下三个序列,0011,0001,0101,先将检验和字段置为0,然后将这三组数据进行反码求和运算,将求得的和取反,即可得到所求的检验和字段的值。

计算过程图解


        1.将三组数据进行反码相加运算,运算过程如下;

 

        2.通过运算我们得到了检验和字段的值为0110,然后将此结果写入检验和字段,即可得到最终添加检验和后的IP数据报的首部,为0011000101010110;

 

        3.检验的过程这里我们就不赘述了,与检验和的过程相同,只是这里的数据已经变成了添加检验和字段后的IP数据报首部,即0011000101010110,反码求和运算—>取反,如果IP数据报首部未发生变化,则最终取反后的结果应该是0000,即0,否则首部就发生了变化,将此数据报丢弃并。



总结

        IP数据报首部的检验方法的原理其实很简单,相当于我们从路的一头走到另一头,然后再从另一头走到原来的地方,如果这条路没有发生变化,那么两次路过的时候我们看到的东西应该是相同,否则就表示发生了变化。


原文链接:https://blog.csdn.net/qq_49175846/article/details/117292934

  • 6
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值