ip协议首部校验及tcp校验计算

发布时间:2022-07-02 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了ip协议首部校验及tcp校验计算脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

IP报文首部校验和计算:

ip协议首部校验及tcp校验计算

上图为IP首部结构, 16位首部校验和计算方法如下: 将图中按照16位进行分组,然后校验和位清零,将数据按16位一组进行累加,最后得出一个结果,如果此结果高16位为0,则将结果按位取反后填入16位首部校验和位置;如果高16位不为0,则将高16位与低16位相加,再看得出结果高16位是否为0,如果不为零则继续相加,直到高16位为0,然后将结果按位取反后填入16位首部校验和位置。

ip协议首部校验及tcp校验计算

上图为一个tcp报文的抓包,提取其中ip报文,从第一行45 00到第三行a8 1c为ip报文,按照上述进行累加:4500H+0034H+d7f7H+4000H+4006H+0000H+c0a8H+a81dH+c0a8H+a81cH=46EBAH,此时高16位不为0,则6EBAH+0004H=6EBEH,取反后为9141H,与抓包16位首部校验和一致。

TCP、UDP报文校验和计算: TCP和UDP报文计算方法与IP首部校验和计算方法类似,不过校验内容是伪首部+tcp/udp首部+数据,其中伪首部是从ip报文中提取的部分数据,伪首部是为了计算检验和而设置的,其结构如下:

ip协议首部校验及tcp校验计算

其中除了16位TCP/UDP长度其余数据均直接取自IP报文首部,16位TCP/UDP长度计算方法:IP首部16位总长度-4位首部长度*4,TCP首部结构如下:

ip协议首部校验及tcp校验计算

16位校验和计算方法:从伪首部结构开始计算累加到数据末尾,然后对高16位进行判断,不为零则按照IP16位首部校验和方法进行计算,直到高16位为0,然后对数据取反,将数据填入16位校验和。 同样使用IP首部校验和中的抓包数据:c0a8H+a81dH+c0a8H+a81cH+0006H+(0034H-20=20H)+b9f6H+ee4aH+0762H+19f8H+79b2H+19afH+8010H+0559H+0000H+0000H+0101H+080aH+fffeH+d08bH+ffffH+f2b6H=9805CH,805CH+9H=8065,取反后为7F9AH与抓包数据一致。

脚本宝典总结

以上是脚本宝典为你收集整理的ip协议首部校验及tcp校验计算全部内容,希望文章能够帮你解决ip协议首部校验及tcp校验计算所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: