阅读:2064回复:9
我应该在哪一层实现截包?
目的:实现无线网络上的动态源路由
原理:截获所有的IP包,修改IP包(在IP包头后加上自己的源路由表)。 参考模型:在Linux内核中,netfilter提供了5个钩子函数,通过挂载这些钩子函数可以捕获并修改IP包,还能自己组装和发送IP包。 我希望: (1)、能够截获所有的网络包,并能对其进行修改; (2)、能够发送自己组装的IP包; (3)、能够成批的发送IP包,即如果需要,我能够编写一个函数一次发送一组IP包(内部调用发送一个IP包的函数); (4)、尽量简化数据包的处理复杂度。最后有像netfilter那样的机制。NDIS截获的数据包过于复杂,虽然也能提取IP包,但我关心的只是IP包。如果我要自己发包的话,还得构造符合NDIS数据包格式的包,这明显增加了编程的复杂。 综上所述,我想请版主大人们和各位大侠给点意见和思路。 我应该采用哪种技术实现我的动态源路由协议? 小弟初来乍到,以后要向各位前辈虚心求教。在此谢过先。 :) [编辑 - 10/1/04 by darkme] [编辑 - 10/1/04 by darkme] |
|
沙发#
发布于:2004-08-26 14:48
我认为用中间层驱动程序实现比较好,在TCPIP程序之下,网卡驱动程序之上,可以对IP包自由修改。
|
|
|
板凳#
发布于:2004-09-25 02:12
这位朋友在做MANET路由协议在wince平台上的实现?个人认为你所说的MAC地址在RREQ/RREP过程中应该都是广播地址吧,这样不必担心什么了,反正都是要在中间层自己处理。
若是先在固定的win2k机器上模拟路由协议,倒是只需集中解决生成和插入源路由扩展头标的问题。完全模拟没有必要,毕竟网络拓扑与无线也不一样,同一网段上链路层的广播大家都能收到。 有联系方式吗,我最近也在调研MANET方面的内容,大家有空聊聊? |
|
地板#
发布于:2004-09-27 10:50
这位朋友在做MANET路由协议在wince平台上的实现?个人认为你所说的MAC地址在RREQ/RREP过程中应该都是广播地址吧,这样不必担心什么了,反正都是要在中间层自己处理。 现在头疼的是如何在中间层设计数据包的缓存策略。你有什么设计方案吗? |
|
地下室#
发布于:2004-09-27 19:27
用ndishook只能实现包的过滤哦,能修改吗?我看好像不行的...
|
|
|
5楼#
发布于:2004-09-27 22:54
用ndishook只能实现包的过滤哦,能修改吗?我看好像不行的... ndishook应该能够实现包的修改,在"费尔个人防火墙核心技术简介"这篇帖子的回复中好像有提到.我是新手,所以也不懂得很多:) 我采用的并不是ndishook,只是普通的imd. |
|
6楼#
发布于:2004-09-28 19:36
[quote]用ndishook只能实现包的过滤哦,能修改吗?我看好像不行的... ndishook应该能够实现包的修改,在"费尔个人防火墙核心技术简介"这篇帖子的回复中好像有提到.我是新手,所以也不懂得很多:) 我采用的并不是ndishook,只是普通的imd. [/quote] 我也是新手...所知不多 以前可能把Ipfilterhook下面的那个ndishook搞混了 ,不知道这两者有什么区别,那里有资料可以查 帖子在那,我没有找到, :( |
|
|
7楼#
发布于:2004-09-29 10:47
这篇帖子是关于费尔防火墙的技术介绍。
http://www.driverdevelop.com/forum/viewthread.php?tid=19422 这篇帖子是关于费尔防火墙的一些回帖。http://www.driverdevelop.com/forum/viewthread.php?tid=14840 最早我是希望采用Ipfilterhook来实现我的DSR,后来发现根本不行。这让我郁闷了很长一段时间。 感觉Ipfilterhook更适合作为编写防火墙的入门教材。个人观点:) |
|
8楼#
发布于:2004-10-01 16:28
我觉得可以做一个协议驱动。
每次网卡收包时交给协议驱动 0.解析网络包(过滤掉非DSR包) 1.替换目的mac地址为广播地址(替换成destination的mac也成) 2.解析路由表,替换目的ip 3.重新计算校验和 4.发送 另外,在第2步中替换成什么mac都行,反正包的解析是由我们自己做的,肯定能发现我们的DSR包。 以上是个人观点,希望各位大牛批评。 :P |
|
9楼#
发布于:2004-10-01 20:10
我觉得可以做一个协议驱动。 同意。 |
|