码迷,mamicode.com
首页 > 其他好文 > 详细

基于LSP的网络数据包截获(一) SPI

时间:2017-07-09 20:56:43      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:请求   tar   日常   用户   数据流   程序   数据包   ace   max   

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

标签:请求   tar   日常   用户   数据流   程序   数据包   ace   max   

原文地址:http://www.cnblogs.com/BlogOfQili/p/7142576.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!