TDI:Transport Driver Interface 传输驱动程序接口
|应用层|------exe程序,比如IE
|表示层|-------ws2_32.dll——ws2_32.dll是Windows Sockets应用程序接口,用于支持Internet和网络应用程序。在这一层中也存在HOOK API技术抓连接,实现容易功能简单。
|会话层|-------SPI 是(Service Provider Interface)服务提供者接口,
------------------------user model------------------------
------------------------kernel model------------------
|传输层|-------TDI(不能截获ICMP等协议的数据)
|网络层|-------NDIS(可以截获所有的网络数据)实现起来较复杂。
|链路层|-------设备驱动
|物理层|-------网卡
TDI:Transport Driver Interface 传输驱动程序接口
|应用层|------exe程序,比如IE
|表示层|-------ws2_32.dll——ws2_32.dll是Windows Sockets应用程序接口,用于支持Internet和网络应用程序。在这一层中也存在HOOK API技术抓连接,实现容易功能简单。
|会话层|-------SPI 是(Service Provider Interface)服务提供者接口,
------------------------user model------------------------
------------------------kernel model------------------
|传输层|-------TDI(不能截获ICMP等协议的数据)
|网络层|-------NDIS(可以截获所有的网络数据)实现起来较复杂。
|链路层|-------设备驱动
|物理层|-------网卡
SPI的结构方式
服务提供者有两种,一种是分层服务提供者,一种是基础服务提供者,我们的分层服务提供者必须调用基础服务提供者或者下面一层的分层服务器提供者,然后把请求提交到他上面的一层(上面的一层可能是另外一个分层服务提供者,也可能是ws2_32.dll)。而我们写的基础服务提供者必须调用系统基础服务提供者,然后把请求提交到ws2_32.dll。请注意,系统里可能不仅仅安装了我们的基础服务提供者,也安装了别人写的基础服务提供者。在安装多个分层服务提供者和多个基础服务提供者的情况下,这两者的组织方式是不同的
如下图
-----------------------------------------------------------------------------------------
| ws2_32.dll |
----------------------------------------------------------------------------------------
|我们的分层服务提供者|
----------------------------------------------------------------------------------------
|别人的分层服务提供者|
----------------------------------------------------------------------------------------
|别人的分层服务提供者|
----------------------------------------------------------------------------------------
|别人的分层服务提供者| |别人的基础服务提供者| |我们的基础服务提供者
----------------------------------------------------------------------------------------
| 系统基础服务提供者
---------------------------------------------------