免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: sherf
打印 上一主题 下一主题

ICMP校验和 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2009-12-04 00:37 |只看该作者
原帖由 Godbach 于 2009-12-4 00:31 发表


不管TCP、UDP、ICMP,他们都是封装成IP数据包。

因此,一个完整的ICMP报文,需要计算的有IP头的校验和,以及ICMP部分(ICMP头部+数据)的校验和。


对没错,在我的82字节的数据包里也是这样,要算2个校验和(IP包和ICMP端口不可达报文),现在出现问题是在ICMP端口报文不可达的校验和上(抓包时发现的)......我反复试了几种可能的组合(仅在ICMP报文里试,即第34个字节之后的共48字节的内容),但都没能计算出正确的校验和........

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
12 [报告]
发表于 2009-12-04 00:39 |只看该作者
原帖由 sherf 于 2009-12-4 00:37 发表


对没错,在我的82字节的数据包里也是这样,要算2个校验和(IP包和ICMP端口不可达报文),现在出现问题是在ICMP端口报文不可达的校验和上(抓包时发现的)......我反复试了几种可能的组合(仅在ICMP报文里试 ...


你要计算的ICMP部分的,应该是是先将ICMP的校验和字段清0,然后使用包括ICMP头部在内的数据部分进行计算校验和。记得字节序的转换,还有就是如果长度不是偶数时如何处理

论坛徽章:
0
13 [报告]
发表于 2009-12-04 00:48 |只看该作者
原帖由 Godbach 于 2009-12-4 00:39 发表


你要计算的ICMP部分的,应该是是先将ICMP的校验和字段清0,然后使用包括ICMP头部在内的数据部分进行计算校验和。记得字节序的转换,还有就是如果长度不是偶数时如何处理


在计算校验和前已将校验和字段清0;
“字节顺序的转换”已在校验和的函数里实现(这个应该是所有校验和都要用到的功能);
在我的ICMP报文里,长度是偶数;
至于,“使用包括ICMP头部在内的数据部分进行计算校验和”是令我最头疼的地方,按照我的数据包,在ICMP端口不可达报文里只有36个字节有数据(分别是:8字节(ICMP头)+ 20字节(原始IP头) + 8字节(原始IP前8个字节)),第36个字节到第48个字节都已被我清0,那ICMP校验和是算那36个有数据的字节还是48个字节?(事实上,2种情况我都测试过,都不对,因此感到很疑惑......)

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
14 [报告]
发表于 2009-12-04 00:55 |只看该作者
你需要确定ICMP的总长度啊,这个数值是参与校验和计算的

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
15 [报告]
发表于 2009-12-04 00:57 |只看该作者
那你能够抓包看吗,IP头部的校验和正确吗,ICMP部分的不对,是吧

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
16 [报告]
发表于 2009-12-04 00:58 |只看该作者
另外,ICMP的长度值也会影响到IP头部校验和的计算的

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
17 [报告]
发表于 2009-12-04 01:00 |只看该作者
准备休息了,明天再和你讨论。

如果你可以抓打包的话,那么可以手工计算一下ICMP的校验和,对比一下程序计算出来的,看是否一致。

论坛徽章:
0
18 [报告]
发表于 2009-12-04 01:05 |只看该作者
原帖由 Godbach 于 2009-12-4 00:58 发表
另外,ICMP的长度值也会影响到IP头部校验和的计算的


??ICMP的长度?你指的ICMP长度是指ICMP报文的长度吗?我的是48字节,这会有问题?你们平常用的ICMP端口不可达报文的长度设多少?

另,在抓包时,其实是 IP的校验和 跟 ICMP的校验和都有问题,但是在包的FRAME那里提示是 ICMP的问题(我个人也觉得是ICMP的问题,因为IP的校验和之前已测试过没问题的(如果有问题,之前测试的UDP包、IP包、PING等时就会出现问题)

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
19 [报告]
发表于 2009-12-04 09:55 |只看该作者

回复 #18 sherf 的帖子

如果你的IP校验和也不对的话。建议先解决IP校验和的问题。因为IP校验和只计算头部的。唯一和你后面ICMP部分有关的就是IP报文的总长度。

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
20 [报告]
发表于 2009-12-04 09:56 |只看该作者
??ICMP的长度?你指的ICMP长度是指ICMP报文的长度吗?我的是48字节,这会有问题?你们平常用的ICMP端口不可达报文的长度设多少?


我这里所说的ICMP的长度就是ICMP头部和ICMP数据部分的总长度
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP