免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3198 | 回复: 5
打印 上一主题 下一主题

一个关于IP checksum 的问题! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-08-23 17:24 |只看该作者 |倒序浏览
我在NF_IP_PRE_ROUTING处注册了一个自己的hook,其中,修改了IP头中tos字段的值,没有重新计算ip checksum。用ethereal抓包,居然有incorrect checksum。Linux TCP/IP协议栈应该会在ipoutput中重新计算ip checksum的吧。起码转发是会修改hop值的,怎么会有这种问题呢?

论坛徽章:
0
2 [报告]
发表于 2006-08-23 19:41 |只看该作者
在NF_IP_PRE_ROUTING后,系统会对收到的ip包进行路由操作,如果需要转发的包,则转发,这其中肯定会对收到的IP报进行checksum的判断的,我觉得。

论坛徽章:
0
3 [报告]
发表于 2006-08-23 21:53 |只看该作者
tos 位于 IP 层包头的位置,而 checksum 是包括 tos 的
因此,若改变了 tos,需要重新计算 checksum
若有兴趣,可以参考 netfilter 里面的 ipt_TOS.c 程序,来看看具体实现

[ 本帖最后由 platinum 于 2006-8-24 09:05 编辑 ]

论坛徽章:
0
4 [报告]
发表于 2006-08-24 09:01 |只看该作者
原帖由 yy_unicorn 于 2006-8-23 17:24 发表
我在NF_IP_PRE_ROUTING处注册了一个自己的hook,其中,修改了IP头中tos字段的值,没有重新计算ip checksum。用ethereal抓包,居然有incorrect checksum。Linux TCP/IP协议栈应该会在ipoutput中重新计算ip checksu ...


把人家的改了,还怪人家不对头,真的是

论坛徽章:
0
5 [报告]
发表于 2006-08-24 09:46 |只看该作者
原帖由 独孤九贱 于 2006-8-24 09:01 发表


把人家的改了,还怪人家不对头,真的是


大虾,你看清楚没有?NF_IP_PRE_ROUTING是在收到IP包做完必要的检查后的hook点,到IP包被转发还有很多处理,起码会查路由,然后会修改IP包头中的TTL,这时也是要重新计算IP checksum的。难道在linux的TCP/IP协议栈中,每次修改了包头中的字段就要重新计算IP checksum么?那不是效率太低了。在最后报文发送前算一次不就足够了?

论坛徽章:
0
6 [报告]
发表于 2006-08-24 11:13 |只看该作者
原帖由 yy_unicorn 于 2006-8-24 09:46 发表


大虾,你看清楚没有?NF_IP_PRE_ROUTING是在收到IP包做完必要的检查后的hook点,到IP包被转发还有很多处理,起码会查路由,然后会修改IP包头中的TTL,这时也是要重新计算IP checksum的。难道在linux的TCP/IP协 ...

跟你说了去看 ipt_TOS.c,你为什么不看?
看了你就明白为什么了,人家是做的差异计算,不是重新算!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP