如何计算IP报头的checksum

如果你研究过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报头的基本格式:

    如何计算IP报头的checksum_第1张图片

    图1:IP报头的基本格式

你可能感兴趣的:(网络编程,tcp/ip,网络,checksum,IP报头,网络编程)