如果你研究过TCP/IP协议,那么你肯定知道IP报头中的checksum字段,或许你还曾经为如何计算这个字段的值所困扰,本文我们将讨论checksum的概念,并详细介绍IP报头中的checksum是如何计算的。

1. checksum是什么?

  • 简单地说,checksum就是从数据包中计算出来的一个值,用于检查数据包完整性;通过检查checksum来判断收到的数据是否有错误;
  • 数据在网络上传输时,由于各种原因数据包有可能损坏,所以在接收端必须要有一种方法来判断数据是否已经损坏,为此,在报头中加入checksum字段;
  • 在发送端要按照规定的算法计算checksum并将其设置为报头中的一个字段中;在接收端,要使用同样的算法重新计算checksum,并与收到的报头中的checksum进行交叉校验,以确定数据包是否正常。

2. IP报头中的checksum

  • IP报头的checksum仅用于验证IP报头是否正确,所以仅需在IP报头上计算即可,与IP报头后面数据无关,因为IP报头后面的数据(比如UDP、TCP、ICMP等)通常都有自己的checksum;

  • 计算IP报头的checksum当然要了解IP协议的基本报头结构,下面是IP报头的基本格式:

    图1:IP报头的基本格式

如何计算IP报头的checksum相关推荐

  1. 如何计算UDP头的checksum

    UDP报头只有4个字段,分别是:源端口号.目的端口号.报文长度和报头checksum,其中的报头checksum这个字段在IPv4中并不是强制的,但在IPv6中是强制的,本文介绍UDP报头中check ...

  2. WireShark 无法抓取以太帧前序和FCS或出现IP报头校验和错误 -- 原因

    今天解决wireshark的2个问题: 1.为什么wireshark抓不到前序和FCS 2.为什么wireshark的IP报头会出错 1.为什么wireshark抓不到帧尾的FCS 4字节和以太网V2 ...

  3. OVS流表精确匹配TCP/IP报头五元组

    ---------------- 版权:本文转自cnblogs 刘超的通俗云计算 原文链接: https://www.cnblogs.com/popsuper1982/p/5870181.html h ...

  4. IP报头的协议类型字段取值

    以下内容来自此处. IP报头的协议类型字段定义如下: 取值 协议 0 HOPOPT 1 ICMP 2 IGMP 3 GGP 4 IP-in-IP 5 ST 6 TCP 7 CBT 8 EGP 9 IG ...

  5. c语言 checksum,容易被忽视的IP报头中的Checksum校验和

    看计算机网络相关的书,每次看到IP或者UDP报头校验和时,都一瞥而过,以为相当简单.可是今天一看真傻眼了,怎么算的,为什么用反码不用补码还真不知道怎么回事. 算法的C语言实现: unsignedsho ...

  6. TCP及IP报头及协议

    看到有道题目要问:tcp头多少字节?哪些字段?(必问) 这个... 看了这篇文章做参考:http://blog.163.com/tianshuai11@126/blog/static/61894543 ...

  7. IP协议 Header Checksum算法

    引用:http://www.cnblogs.com/vamei/archive/2012/12/02/2796988.html 协议森林05 我尽力 (IP协议详解) 作者:Vamei 出处:http ...

  8. 已知子网掩码如何计算IP地址中的主机位

    原文链接:https://zhidao.baidu.com/question/214865175.html 某A类地址上的子网掩码是255.192.0.0,那么该IP地址中主机有多少位? 255.19 ...

  9. 怎么计算计算机的网络地址,如何计算IP地址的网络号和主机号?

    http://www.cnblogs.com/Jessy/archive/2011/12/29/2306334.html 2011 IP地址与网络分类 (1)IP地址 不同的物理网络技术有不同的编址方 ...

最新文章

  1. 网络流-EK求最大流
  2. 除了修改WEBCONFIG会导致WEB服务重启外,还有其他的什么操作会导致重启?
  3. 小程序解决方案 Westore - 组件、纯组件、插件开发
  4. 简单的制作一个动态链接库(DLL)
  5. 一幅图看懂prototype与[[Prototype]]
  6. 在Entity Framework中使用事务
  7. R语言︱文本挖掘之中文分词包——Rwordseg包(原理、功能、详解)
  8. 20160504课堂作业
  9. 简述delete与delete[]的区别
  10. LeetCode算法,多多路上从左到右有N棵树(编号1~N),其中第i个颗树有和谐值Ai。 多多鸡认为,如果一段连续的树,它们的和谐值之和可以被M整除,那么这个区间整体看起来就是和谐的....
  11. 马蜂窝视频编辑框架设计及在 iOS 端的业务实践
  12. Excel如何实现随机抽取
  13. js实现双人对战五子棋
  14. 常见的测试用例设计方法8---正交试验法
  15. Java第三章-数组
  16. 使用虚拟机备份软件备份OpenStack虚拟机
  17. 王者荣耀服务器维护5月22,王者荣耀5月22日更新维护公告 更新内容汇总
  18. 漫谈autoencoder:降噪自编码器/稀疏自编码器/栈式自编码器(含tensorflow实现)
  19. linux 服务器被植入ddgs、qW3xT.2挖矿病毒处理记录
  20. HomeAssistant和Node-Red

热门文章

  1. linux 下 .o 文件, .a文件,.so文件的区别
  2. Linux查看so文件信息
  3. 使用Druid监控SQL执行状态
  4. TabLayout——浅谈
  5. 字符串分割(split),将字符串按照指定字符进行分割。split(String regex)和split(String regex, int limit)
  6. 如何用php农场项目,2020全新亲测php农场游戏源码-金币菇种植理财区块链源码 带商城系统...
  7. 【公开课】如何使用Arm-2D在小资源Cortex-M处理器芯片中实现图形界面?
  8. Android实现QQ分享功能
  9. Maven 入门教程
  10. pyspark运行加速方法思考(一)