APP下载

结合抓包实例分析校验和的计算

2016-11-26

网络安全和信息化 2016年9期
关键词:报头二进制校验

引言:在数据校验中经常提到校验和的概念,什么是校验和?校验和是如何计算的?本文将结合数据包分析软件,详细说明校验和的计算过程,使校验和更容易理解。

什么是校验和

校验和也叫检查和,它(Checksum)是Internet协议常用的检验方式。如 TCP、UDP、IP、ICMP等协议都使用校验和进行差错检测。

校验和的计算机方法是:发送方将要发送的数据信息看成一个k比特的二进制数序列,然后对k比特的二进制数进行1的补码和,累加的结果再取反就得到校验和,再将数据信息和校验和一起发送到接收方。

同样,接收方对收到的所有k比特的二进制(包括校验和)进行1的补码和运算。如果累加结果中有任何比特是0,表明传输有差错。

以上对校验和的解释理解起来较困难,其他资料也没有更详尽的解释,因此对校验和的认识一直比较模糊。但是在分析数据包的过程中,发现结合数据包分析实例再加以验算,校验和的计算就不难理解了,下面就结合数据包分析来进行校验和的计算。

图 1 校验和

校验和的计算过程

首先从图1的数据包,可以看出IP协议、UDP协议都有校验和,这里IP数据包的校验和为0x9EDE,其中0x表示是16进制,9EDE是IP报头的校验和。

IP报头数据是多少呢?选中“IP-因特网协议”,则在16进制视图中就显示出IP报头部分数据,其中校验和9EDE也在其中,计算校验和过程如下:

在上面校验和计算方法中提到的“k比特的二进制数序列”就是图1中45 00 01 72 64 F9 00 00 04 11 9E DE C0 A8 01 01 EF FF FF FA,只不过这里采用十六进制的表示。

接着对k比特的二进制数进行1的补码和。“1的补码和”运算就是带循环进位的加法,最高位如进位,则进到最低位。当然可以将这些数据转成二进制进行计算,但比较麻烦,在这里直接用16进制进行计算。

注意:发送方不仅仅发送报头数据,而且连同校验和一起发送,所以在计算校验和时要先把校验和去掉,即把9E DE置0,这样就成为了求 45 00 01 72 64 F9 00 00 04 11 00 00 C0 A8 01 01 EF FF FF FA的和。

Sum=0x4500+0x0172+0x64f9+0x0000+0x0411+0x0000+0xc0a8+0x0101+0xefff+0xfffa=0x3611e(超出16位,这时就需要“进行1的补码和”,即将高位0x3 与低位 0x611e相加 ),Sum=0x3+611e=0x6121。

接下来我们对计算的和取反,即得校验和,取反时需要转成二进制计算:

0x6121=b0110 0001 0010 0001

取反得b1001 1110 1101 1110=0x9EDE

即IP协议报头的校验和为0x9EDE, 再将数据信息和校验和一起发送到接收方。

接收方接收到45 00 01 72 64 F9 00 00 04 11 9E DE C0 A8 01 01 EF FF FF FA同样进行1的补码和计算:

Sum=0x4500+0x0172+0x64f9+0x0000+0x0411+0x9eed+0xc0a8+0x0101+0xefff+0xfffa=0x4000b,Sum=0x4+0xb=0xf=b1111

累加结果每一位都为1,没有任何比特的“0”出现,表明传输没有错误。

结合数据包分析,根据分析软件中显示的报头数据、校验和结果,动手验算后校验和就较容易理解了。

猜你喜欢

报头二进制校验
使用Excel朗读功能校验工作表中的数据
用二进制解一道高中数学联赛数论题
有趣的进度
城市党报报头:政治与艺术的平衡
二进制在竞赛题中的应用
报业文化中的一道独特风景
炉温均匀性校验在铸锻企业的应用
分析校验和的错误原因
二进制宽带毫米波合成器设计与分析
淡妆浓抹总相宜
——对中国晚报报头变化的研究与欣赏