首页 > 代码库 > 基于LSP的网络数据包截获(一) SPI
基于LSP的网络数据包截获(一) SPI
SPI是Service Provider Interface,WinSock2的服务提供者接口。
WinSock2允许开发者编写自己的服务提供者接口SPI程序,自己编写的SPI程序安装到系统后,所有的WinSock请求会先发送到这个程序并由他完成网络调用。
WinSock2 SPI允许开发两类服务提供者:
1.传输服务提供者(transport service provider)
能够提供建立通信、传输数据、日常数据流控制和错误控制等功能的服务。
以DLL形式存在,对外只有一个入口函数,即WSPStartup,其中参数LPWSAPRTOCOL_INFOW结构指针决定了其类型。
2.名字空间服务提供者(name space providers)
把一个网络协议的定址属性和一个或多个用户友好名关联到一起,以便启用与协议无关的名字解析方案。
SPI提供三种协议:分层协议、基础协议、协议链
协议类型由WSAPROTOCOL_INFO结构内的WSAPROTOCOLCHAIN结构中的数据指定。
typedef struct _WSAPROTOCOL_CHAIN{ int ChainLen;//链的长度 DWORD ChainEntries[MAX_PROTOCOL_CHAIN];//协议链数组 }WSAPROTOCOLCHAIN,*LPWSAPROTOCOLCHAIN;
ChainLen取值不同意义不同:
0:分层协议
1:基础协议
>1:协议链
基于LSP的网络数据包截获(一) SPI
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。