基于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.dll。本文仅讨论传输服务提供者及其应用,暂不对名字解析服务提供者进行分析。

Winsock 2的传输服务提供者是以动态链接库的形式(DLL)存在的,它是通过WSPStartup函数为上层函数提供接口,而其他的传输服务提供者函数则是通过分配表的方式来访问WS2_32.DLL。传输服务提供者的动态链接库只有在应用程序需要时才由Ws2_32.dll来装入内存中的,在不需要时则会被自动卸载。以下是winsock 2在传输服务提供者上的WOSA(Windows开放服务结构):

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

│Windows socket 2 应用程序│

----------------------------Windows socket 2 API

│    WS2_32.DLL    │

----------------------------Windows socket 2 传输SPI

│  传输服务提供者(DLL) │ 

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

Windows socket SPI在服务提供者中使用了以下的函数前缀命名方式:WSP(Windows socket服务提供者),WPU(Windows socket提供者向上调用),WSC(Windows socket配置)。每一个传输服务提供者都有它自己所支持的传输协议,它是使用WSAPROTCOL_INFOW结构来实现的。传输服务提供者把所有的相关信息都存放在这个结构中,而应用程序就是通过这个结构的内容来将自己和相应的传输服务提供者相关联。

Windows socket SPI提供三种协议:分层协议,基础协议和协议链。分层协议是在基础协议的上层,依靠底层基础协议实现更高级的通信服务。基础协议是能够独立,安全地和远程端点实现数据通信的协议,它是相对与分层协议而言的。协议链是将一系列的基础协议和分层协议按特点的顺序连接在一起的链状结构,请参见下图:

API------------------------

│   WS2_32.DLL   │

SPI------------------------

│ 分层协议 │

SPI-------------

│ 分层协议 │

SPI------------------------

│    基础协议    │

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

时间: 2024-12-11 06:31:20

基于SPI的数据报过滤原理与实现的相关文章

基于用户的协同过滤推荐算法原理和实现

      在推荐系统众多方法中,基于用户的协同过滤推荐算法是最早诞生的,原理也较为简单.该算法1992年提出并用于邮件过滤系统,两年后1994年被 GroupLens 用于新闻过滤.一直到2000年,该算法都是推荐系统领域最著名的算法.       本文简单介绍基于用户的协同过滤算法思想以及原理,最后基于该算法实现园友的推荐,即根据你关注的人,为你推荐博客园中其他你有可能感兴趣的人. 基本思想       俗话说"物以类聚.人以群分",拿看电影这个例子来说,如果你喜欢<蝙蝠侠&

IOS 基于APNS消息推送原理与实现(JAVA后台)

IOS 基于APNS消息推送原理与实现(JAVA后台) Push的原理: Push 的工作机制可以简单的概括为下图   图中,Provider是指某个iPhone软件的Push服务器,这篇文章我将使用.net作为Provider. APNS 是Apple Push Notification Service(Apple Push服务器)的缩写,是苹果的服务器. 上图可以分为三个阶段. 第一阶段:Push服务器应用程序把要发送的消息.目的iPhone的标识打包,发给APNS. 第二阶段:APNS在自

有关基于项目的协同过滤算法的预测值计算问题

问题描述 有关基于项目的协同过滤算法的预测值计算问题 有个疑问,比如项目有100个最近邻居,但是目标用户对这100个邻居中的极少部分有评分,比如只对5个项目有评分,但是大部分论文中计算预测值时是这么计算的:,我将未评分值先简单置为0,那么分母就是所有相似度之和,分子却只是那5个目标用户有评分项的加权和,结果通常很小,与实际值相差很大,我想那个分母是不是只用包括最近邻居中用户已评分项的相似度? 解决方案 我刚计算预测值时分母只累加了已评分项的相似度,邻居300左右时MAE值达到最优值为0.75,正

基于物品的协同过滤算法(ItemCF)

最近在学习使用阿里云的推荐引擎时,在使用的过程中用到很多推荐算法,所以就研究了一下,这里主要介绍一种推荐算法-基于物品的协同过滤算法. ItemCF算法不是根据物品内容的属性计算物品之间的相似度,而是通过分析用户的行为记录来计算用户的相似度.该算法认为物品A和物品B相似的依据是因为喜欢物品A的用户也喜欢物品B. 基于物品的协同过滤算法实现步骤: 1.计算物品之间的相似度 2.根据物品的相似度和用户的历史行为记录给用户生成推荐列表 下面我们一起来看一下这两部是如何实现的: 一.计算物品之间的相似度

ucenter中词语过滤原理分析_php技巧

本文分析了ucenter中词语过滤原理.分享给大家供大家参考,具体如下: 过滤词语表: id admin find replacement findpattern 1 UCenterAdminist 访问 大 /访问/is 2 UCenterAdminist 4655 45 /4655/is 3 UCenterAdminist fdsaf dfsa /fdsaf/is 4 UCenterAdminist 有机会 在 /有机会/is 组建缓存数据: //private function _get_

基于用户的协同过滤是怎么推荐电影的?

我们平时在浏览电商.视频等网站时,网页一般会有一个"猜你喜欢",也就是"智能推荐系统",虽然一般来说推荐的不是很准确,但是程Sir还是研究了一下这个玩意是怎么弄出来的--今天说一说最简单的一个实现方法,叫做基于用户的协同过滤. 假设有几个人分别看了如下电影并且给电影有如下评分(5分最高,没看过的不评分),我们目的是要向A用户推荐一部电影: 协同过滤的整体思路只有两步,非常简单:寻找相似用户,推荐电影 寻找相似用户 所谓相似,其实是对于电影品味的相似,也就是说需要将A

基于正则表达式的网页过滤,求助!

问题描述 目前在做一个简单的网络爬虫,但是在URL过滤这里遇到点麻烦希望大家帮我解决一下,谢谢了!1.先从网页的源码中,把所有herf后面的URL地址提取出来,必须是以http开头的地址2.在提取出来的URL地址中,保留满足这个正则表达式(http://companyadc.51job.com/companyads/2d{3}/w{2,6}/w*d{4}_d{4}/index.htm)的URL,其他的删除.请问这2个步骤用C#分别应该怎么实现啊?谢谢了! 解决方案 解决方案二:你的问题解决了没?

基于大数据的宏观分析原理

进行宏观分析,对经济的理解是思想基础,大数据是工具基础,基于大数据的分析方法是关键,金融市场是检验经济理解.分析方法.分析结论的最有效地方. 一.理解经济与宏观经济 构建宏观经济模型的第一关键是理解经济与宏观经济,这与构建量化投资模型的第一关键是理解市场道理相似.而理解经济与宏观经济是非常困难的,因为我们所学的教材,所当成经济学常识或公理的东西,大多是有偏差的,用这样的理论指导宏观分析,当然就很难得出正确的分析结论. 理论偏差在哪里?实际上还是教条主义,我们学的做的,都自觉不自觉地是西方那一套.

基于CPU访存局部性原理下的矩阵乘法实现

1 for(i=0;i<n;++i) 2 for(j=0;j<n;++j) 3 { 4 double sum=0; 5 for(k=0;k<n;++k) 6 sum+=a[i][k]*b[k][j]; 7 c[i][j]+=sum; 8 } 1 for(i=0;i<n;++i) 2 for(k=0;k<n;++k) 3 { 4 r=a[i][k]; 5 for(j=0;j<n;++j) 6 c[i][j]+=r*b[k][j]; 7 } 细看一番就会发现这两种实现语义是