简单分析用SPI实现防火墙

                                       简单分析用SPI实现防火墙

  作者:snsins

如有转载,请注明并保持文章的完整

2002.12.5

--------------------------------------------------------------------------------------------------------

 

本来上次写了一个简单的SPI防火墙程序(只做了IP过滤功能,包过滤功能没有去做)后,已经放弃了对SPI的研究,但是最近有朋友问到SPI防火墙的实现,现在就再对SPI做一次详细点的分析和总结。

先看看防火墙的一般实现方式

首先是TCP/IP的结构(OSI7层模型)
--------
|应用层|------exe程序,比如ie
--------
|表示层|-------ws2_32.dll
--------
|会话层|-------SPI
--------        
|传输层|-------TDI(不能截获ICMP等协议的数据)
-------- 
|网络层|-------NDIS(可以截获所有的网络数据)
--------
|链路层|-------设备驱动
--------      
|物理层|-------网卡
--------
从上面我们可以很清楚地看到我们有多种方式实现防火墙,比如用HOOK API在表示层HOOK WINSOCKET的API函数,在会话层用WINDOWS提供的标准的SPI方式实现,SPI相对HOOK API方式要规范多了,而且功能也更强大,但是还是在user model里,。在传输层可以写驱动实现防火墙,虽然已经到了kernel model,但是和上面两种方式一样,过滤不了比如ICMP等协议的数据,因为ICMP等协议的数据并不经过传输层。这样我们可以看到,在WINDOWS里实现防火墙最标准最规范最强大的方式应该是在NDIS(也就是网络层实现),因为NDIS提供了一些规则,只要让我们来调用一些写好的函数来组织数据就可以了,功能不仅强大,而且相对下面链路层的设备驱动要简单,应该说在链路层也可以实现防火墙,但是觉得没有必要,太复杂了。

现在回过头来看看SPI的结构方式
--------------------<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值