基于 SPI 的数据报过滤原理与实现一
个人防火墙技术概述二
Winsock 2 SPI 介绍三
相关程序代码分析四
小结与后记五
附录之源代码一)个人防火墙技术概述 随着网络安全问题日益严重,广阔用户对网络安全产品也越来越关注
防火墙作为一种网络安全工具,早已受到大家的青睐
在 PC 机上使用的个人防火墙,很大程度上成为广阔网民的安全保护者
Windows 下的个人防火墙都是基于对数据报的拦截技术之上
当然在具体的实现方式上它们却有很大的不同
总的来说可分为用户级和内核级数据报拦截两类
其中内核级主要是 TDI 过滤驱动程序,NDIS 中间层过滤驱动程序,NDIS 过滤钩子驱动程序等,它们都是利用网络驱动来实现的;而用户级的过滤包括 SPI 接口,Windows2000 包过滤接口等
本文主要讲述基于 SPI 的包过滤实现,它是 Winsock 2 的一个新特性
二)Winsock 2 SPI 介绍 Winsock 2 是一个接口,而不是协议,所以它可以用于发现和使用任意数量的底层传输协议所提供的通信能力
起初的 Winsock 是围绕着 TCP/IP 协议运行的,但是在 Winsock 2 中却增加了对更多传输协议的支持
Winsock 2 不仅提供了一个供应用程序访问网络服务的Windows socket 应用程序编程接口(API),还包含了由传输服务提供者和名字解析服务提供者实现的 Winsock 服务提供者接口(SPI)和 ws2_32
本文仅讨论传输服务提供者及其应用,暂不对名字解析服务提供者进行分析
Winsock 2 的 传 输 服 务 提 供 者 是 以 动 态 链 接 库 的 形 式 ( DLL ) 存 在 的 , 它 是 通 过WSPStartup 函数为上层函数提供接口,而其他的传输服务提供者函数则是通过分配表的方式来访问 WS2