chenyoukun
驱动牛犊
驱动牛犊
  • 注册日期2004-10-28
  • 最后登录2004-11-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1542回复:4

!!(给10分!)请教各位高人防火墙开发疑难问题

楼主#
更多 发布于:2004-10-31 15:08
各位高人,小弟请教个问题:
防火墙开发中,我看到国外的厂家一般是tdi、ndis、应用层三层都做了相应开发。既然在NDIS层(如果用hook)完全可以检测到所有的数据包,那么为什么还要在tdi、应用层进行开发呢?
在这些层进行开发,所实现的功能都一样吗?
谢谢、◎!
小弟分本来就少,请各位高人给予解答,谢谢了!
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-10-31 19:06
当然不一样
ndis靠近硬件,处理物理相关的更容易,比如:MAC地址等
tdi在协议之间,处理上层协议容易
而app方面的,对处理和应用相关的更容易(比如:禁止某个APP可以发送或接受数据)
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
monkeyy
驱动中牛
驱动中牛
  • 注册日期2001-12-06
  • 最后登录2010-10-10
  • 粉丝0
  • 关注0
  • 积分315分
  • 威望84点
  • 贡献值0点
  • 好评度32点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-10-31 21:42
你可以认为NDIS工作在数据链路层(尽管实际上它不是,它不过是一个软件接口,和任何的协议没有关系,说白了只是软件的设计者觉得这样设计一个软件接口很爽),所以NDIS可以做交换机、路由器做的所有功能,交换模式也就是防火墙中的透明模式(又称桥模式),路由器就是防火墙中的路由模式。

TDI是一个传输层接口,你可以认为它工作在传输层的上边,实际上也是这样的。那么在传输层以上可以完成的它都可以完成。用它是因为TDI记录进程上下文,也就是说它知道那个进程发起这次连接或者是说哪个进程发了这个数据包,这个在个人防火墙的进程认证上用的就是这个,而这个在NDIS是不行的,因为NDIS没有上下文关系。至于为什么,你梢做分析就知道了。

应用层的好处就是对系统整体性能不会太大,至于为什么你可以去看一下操作系统中的CPU调度(记住不是进程调度,而是非可调度部分的时间分配),等看完了你就很清楚了。

至于难度,我觉得都差不多,唯一的差别就是应用太好调试些。
听说老虎会吃人,所以从没想过去摸老虎的屁股。:( :(
poweruser
驱动老牛
驱动老牛
  • 注册日期2003-02-26
  • 最后登录2008-07-18
  • 粉丝0
  • 关注0
  • 积分652分
  • 威望72点
  • 贡献值0点
  • 好评度64点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-11-02 09:34
呵呵,monkeyy总结的真够详细的了:)
顶一个
老虎不发威,你当我是Hello Kitty!
chenyoukun
驱动牛犊
驱动牛犊
  • 注册日期2004-10-28
  • 最后登录2004-11-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-11-02 11:08
Hi,monkeyy!
想和你聊一下驱动开发技术
  您说的TDI层才能得到进程信息,但是我下载了一个费尔防火墙2.1,据说该防火墙实现是基于SPI+NDIS HOOK的。该防火墙能够拦截数据包并给出该数据包产生自哪个系统进程,或者发向哪个系统进程。
  那么我的疑问就是:费尔防火墙是不是再NDIS 层就能够解析到进程号了呢?否则怎么会讲进程信息显示在界面上。另外,通过SPI实现也有可能(即SPI解析进程信息,而NDIS只针对ICMP进行解析),但是这样就会有许多东西检测不到了。
    不知小弟理解的对否,请大侠明示,多谢了!
游客

返回顶部