Windows 筛选平台 (WFP)_wfp proxy-程序员宅基地

技术标签: 编程  

原文路径::http://msdn.microsoft.com/zh-cn/library/windows/hardware/gg463267.aspx


引用于微软官方

Windows 筛选平台 (WFP)

更新日期: 5月 15日 2008年

此信息适用于以下操作系统:
Windows Vista
Windows Server 2008

简介

Windows 筛选平台 (WFP) 是 Windows Vista 和 Windows Server 2008 中全新的体系结构,它使独立软件供应商 (ISV) 能够筛选和修改 TCP/IP 数据包、监视或授权连接、筛选受 Internet 协议安全性 (IPsec) 保护的通信以及远程过程调用 (RPC)。对 TCP/IP 数据包的筛选和修改首次实现了对 TCP/IP 数据包处理路径的访问。在该路径中,您可以在进行其他处理之前检查或修改传出和传入数据包。通过在不同层上访问 TCP/IP 处理路径,您可以更轻松地创建防火墙、防病毒软件、诊断软件以及其他类型的应用程序和服务。

WFP 提供了各种 API,您可以参与发生在 TCP/IP 协议堆栈中多个层上的筛选决定。WFP 还集成并支持下一代防火墙功能,比如经过身份验证的通信以及基于使用 Windows Sockets API 的应用程序的动态防火墙配置。该功能也称为基于应用程序的策略。

WFP 不是防火墙。它是一组系统服务及用户模式和内核模式 API,它使您能够开发防火墙和其他监视连接或处理数据包的软件。例如,Windows Vista 和 Windows Server 2008 中的 Windows 防火墙就使用了 WFP。

如果您正在构建新的 Windows Vista 或 Windows Server 2008 软件,则使用 WFP 的优势是更高的性能、更低的编程复杂性以及内置的诊断支持。此外,您还可以对 Internet 协议版本 4 (IPv4) 和 Internet 协议版本 6 (IPv6) 通信使用内置的筛选引擎。WFP 还提供了强大的安全框架,在该框架中无法绕过配置正确的筛选器。

注意:若要提高性能,Windows Vista 和 Windows Server 2008 中的 TCP/IP 可以将任务或连接卸载到具有相应 TCP/IP 卸载功能的网络适配器。可以在不影响性能的情况下卸载未经过 WFP 筛选的连接。

为什么要将组件转换到 WFP

Windows Vista 包含用于 TCP/IP 协议堆栈的新体系结构。该体系结构是 IPv4 和 IPv6 的集成实现,称为双 IP 层体系结构。它对直接访问 TCP/IP 协议堆栈以便在 Windows XP 和 Windows Server 2003 中处理数据包的方法进行了大量更改。这些方法包括防火墙挂钩、筛选器挂钩以及涉及自定义解决方案(如传输驱动程序接口 (TDI) 筛选器驱动程序)的其他方法。若要更正操作并在 Windows Vista 和 Windows Server 2008 中执行同等功能,通常您必须更改您的应用程序、服务或驱动程序。

注意:Windows Vista 和 Windows Server 2008 继续支持 TDI 筛选器驱动程序和 Windows Sockets 分层服务提供程序 (LSP)。

若要更改您现有的组件,请参阅本文后面的“转换组件以使用 WFP”。通常,您必须将用于访问 TCP/IP 数据包处理路径的当前方法映射到使用针对 Windows Vista 和 Windows Server 2008 的 WFP 的同等方法。针对新的 TCP/IP 协议堆栈和 WFP 体系结构对软件进行修订可以为依赖于 TCP/IP 数据包处理路径的组件提供额外的功能。这些功能在 Windows Vista 和 Windows Server 2008 之前的 Windows 版本中可能不存在。

下表概述了使用 WFP 的一些优势:

  • 您拥有对 TCP/IP 数据包处理路径的精确访问控制。该控制不同于 Windows XP 和 Windows Server 2003 中支持的筛选器和防火墙挂钩方法,这两种方法提供对 TCP/IP 处理路径的受限访问。

  • 由于 WFP 已经提供了一个筛选引擎,因此您不需要构建自己的筛选逻辑和引擎。您只需使用 WFP 筛选引擎并集中于组件带来的增值。

  • 使用 WFP 时,几乎不会影响到带有将来的服务包版本的组件。

  • 实现防火墙或数据包筛选增值解决方案更加容易,因为已经存在筛选逻辑和到 TCP/IP 协议各个层的挂钩。

  • 根据组件的筛选和处理需求,您可以将组件从内核模式切换到用户模式,以便更轻松地开发组件。此外,用户模式组件的崩溃不会影响整个 Windows 系统。

  • 由于所有应用程序和服务都使用相同的筛选引擎,因此很容易确定是否存在执行相同功能的其他应用程序或服务。

  • 很容易开发可以与其他基于 WFP 的筛选解决方案共存的筛选解决方案,所有这些解决方案都遵循 WFP 筛选器仲裁规则。

应该在以下情况下使用 WFP:

  • 组件必须在特定的 TCP/IP 协议堆栈层检查 TCP/IP 通信。

  • 组件需要处理受 IPsec 保护的通信。

  • 您希望在 IPsec 解密之后执行数据包处理。

  • 您希望使用内置的 IPv6 筛选引擎执行 IPv6 数据包筛选,而不是构建自己的 IPv6 筛选引擎。

WFP 体系结构

图 1 显示了 WFP 体系结构及其对第三方应用程序、服务和驱动程序的扩展能力。

图 1 
图 1 WFP 的体系结构及其对第三方组件的扩展能力

WFP 体系结构由以下组件组成:

  • Win32 API

    Win32 API 包含 WFP 筛选 API。执行数据包筛选或处理的第三方防火墙或其他应用程序可以使用 WFP 筛选 API,以在基本筛选引擎中创建筛选器。这些筛选器可以在内核模式筛选引擎中的每层使用一组预定义的筛选条件。IPsec 策略代理服务和 Windows 防火墙是 Windows Vista 和 Windows Server 2008 附带的 WFP 应用程序。有关详细信息,请参阅 MSDN 库中的 Windows 筛选平台。

  • 基本筛选引擎

    该用户模式服务通过向内核模式筛选引擎中添加筛选器来实现用户模式筛选应用程序的筛选器请求。

  • 内核模式筛选引擎

    该内核模式组件存储筛选应用程序通过基本筛选引擎创建的筛选器,并通过筛选层与 TCP/IP 堆栈以及安装的标注驱动程序集交互。由于是通过新的 TCP/IP 堆栈来处理数据包,因此每一层都与内核模式筛选引擎有联系。内核模式筛选引擎检查配置的筛选器,以确定应该允许数据包、丢弃数据包还是将数据包传递到安装的标注驱动程序以检查和修改数据包。

  • 标注驱动程序

    进行简单数据包筛选(即根据预定义的 WFP 筛选条件检查数据包以确定应该允许还是丢弃数据包)不能达到预期目的时,则使用标注驱动程序。要对数据包内容或数据修改进行深度检测,必须具有标注驱动程序。深度检测检查超出预定义筛选条件的通信。深度检测的一个示例是防病毒软件,这类软件必须检测应用程序层数据,以确保传入的数据流中不存在病毒或蠕虫。数据修改的一个示例是网络地址转换 (NAT),在其中转发数据包时,路由器将更改 IPv4 数据包的字段。Windows Vista 和 Windows Server 2008 包含处理 IPsec 和共享 Internet 连接的标注驱动程序。标注驱动程序还可以使用 WFP 内核客户端在基本筛选引擎中创建筛选器。

第三方 ISV 可以使用 WFP 采用以下方式构建应用程序或服务:

  • 某些应用程序和服务仅使用简单数据包筛选。对于这些应用程序和服务,只需使用 WFP Win32 API 在新 TCP/IP 堆栈的相应层设置筛选器的用户模式应用程序或服务。不需要内核模式标注驱动程序。

  • 对于必须执行数据包深度检测或修改的应用程序和服务,则必须创建一个或多个标注驱动程序或用户模式应用程序或服务。标注驱动程序或者用户模式应用程序或服务可以使用 WFP Win32 API 在 TCP/IP 堆栈的相应层上设置筛选器,以便标注驱动程序进行进一步检测。当传入或传出通信与这些筛选器匹配时,内核模式筛选引擎将数据包传递给标注驱动程序,该驱动程序先执行检测或修改,然后再返回该数据包。在有些情况下不需要用户模式应用程序或服务。

转换组件以使用 WFP

表 1 列出了在 Windows XP 和 Windows Server 2003 中处理数据包的现有方法,以及如何在 Windows Vista 和 Windows Server 2008 中更改它们,以使用 WFP。

表 1 对现有数据包处理方法的更改

Windows XP 和 Windows Server 2003 中的现有方法 Windows Vista 和 Windows Server 2008 中的新方法
用于简单数据包筛选的防火墙挂钩或筛选器挂钩驱动程序。 使用 WFP Win32 API 的用户模式应用程序或服务。
用于深度数据包检测或修改的防火墙挂钩或筛选器挂钩驱动程序。 IP 层、传输层或应用程序层强制 (ALE) 层标注驱动程序以及可选的使用 WFP Win32 API 的用户模式应用程序或服务。
用于简单数据包筛选的传输驱动程序接口 (TDI) 筛选器驱动程序。 使用 WFP Win32 API 的用户模式应用程序或服务。
用于深度数据包(流)检测或修改的 TDI 筛选器驱动程序。 ALE 标注驱动程序以及可选的使用 WFP Win32 API 的用户模式应用程序或服务。
用于 TCP 连接或用户数据报协议 (UDP) 通信管理的 TDI 筛选器驱动程序。 流/数据报数据层标注驱动程序以及可选的使用 WFP Win32 API 的用户模式应用程序或服务。执行高级 TCP 连接管理(如代理、复制或克隆连接)的 TDI 筛选器驱动程序应该继续使用 TDI 筛选器驱动程序。
用于简单数据包筛选的 Windows Sockets LSP。 使用 WFP API 的用户模式应用程序或服务。
用于深度数据包检测或修改的 Windows Sockets LSP。 ALE、传输或流/数据报数据层标注驱动程序以及可选的使用 WFP Win32 API 的用户模式应用程序或服务。
用于简单数据包筛选的网络设备接口规范 (NDIS) 中间层驱动程序。 使用 WFP API 的用户模式应用程序或服务。
用于 TCP 连接或 UDP 通信管理的 NDIS 中间层驱动程序。 ALE 或流层标注驱动程序以及可选的使用 WFP Win32 API 的用户模式应用程序或服务。
用于执行媒体访问控制 (MAC) 级筛选的 NDIS 轻型筛选器驱动程序。 继续使用 NDIS 轻型筛选器驱动程序(WFP 不支持 MAC 级筛选)。


注意:Windows Vista 和 Windows Server 2008 支持 TDI。但是,Microsoft 正在考虑在未来的 Windows 版本中删除 TDI。

结束语

Windows Vista 和 Windows Server 2008 中全新的 WFP 能够进行 TCP/IP 数据包筛选和修改、连接监视或授权、IPsec 筛选以及 RPC 筛选。通常,您必须转换 Windows XP 和 Windows Server 2003 中的 TCP/IP 筛选或连接监视组件,以将 WFP 用户模式应用程序或服务和/或 WFP 内核模式标注驱动程序用于 Windows Vista 和 Windows Server 2008。

资源

WFP 用户模式应用程序或服务:
Windows 筛选平台 - Win32 API
 
http://msdn.microsoft.com/en-us/library/aa366510.aspx

WFP 内核模式标注驱动程序:
Windows 筛选平台标注驱动程序 - Windows 驱动程序工具包
 
http://msdn.microsoft.com/en-us/library/ms796374.aspx

其他:
Windows 核心网络博客中有关 WFP 的文章
 
http://blogs.msdn.com/wndp/archive/tags/WFP/default.aspx 

WFP 论坛 
http://social.msdn.microsoft.com/forums/zh-cn/wfp/threads/ 

WFP 示例项目 
http://blogs.msdn.com/onoj/archive/2007/05/09/windows-filtering-platform-sample.aspx


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Tinna_zhang/article/details/12706903

智能推荐

oracle 12c 集群安装后的检查_12c查看crs状态-程序员宅基地

文章浏览阅读1.6k次。安装配置gi、安装数据库软件、dbca建库见下:http://blog.csdn.net/kadwf123/article/details/784299611、检查集群节点及状态:[root@rac2 ~]# olsnodes -srac1 Activerac2 Activerac3 Activerac4 Active[root@rac2 ~]_12c查看crs状态

解决jupyter notebook无法找到虚拟环境的问题_jupyter没有pytorch环境-程序员宅基地

文章浏览阅读1.3w次,点赞45次,收藏99次。我个人用的是anaconda3的一个python集成环境,自带jupyter notebook,但在我打开jupyter notebook界面后,却找不到对应的虚拟环境,原来是jupyter notebook只是通用于下载anaconda时自带的环境,其他环境要想使用必须手动下载一些库:1.首先进入到自己创建的虚拟环境(pytorch是虚拟环境的名字)activate pytorch2.在该环境下下载这个库conda install ipykernelconda install nb__jupyter没有pytorch环境

国内安装scoop的保姆教程_scoop-cn-程序员宅基地

文章浏览阅读5.2k次,点赞19次,收藏28次。选择scoop纯属意外,也是无奈,因为电脑用户被锁了管理员权限,所有exe安装程序都无法安装,只可以用绿色软件,最后被我发现scoop,省去了到处下载XXX绿色版的烦恼,当然scoop里需要管理员权限的软件也跟我无缘了(譬如everything)。推荐添加dorado这个bucket镜像,里面很多中文软件,但是部分国外的软件下载地址在github,可能无法下载。以上两个是官方bucket的国内镜像,所有软件建议优先从这里下载。上面可以看到很多bucket以及软件数。如果官网登陆不了可以试一下以下方式。_scoop-cn

Element ui colorpicker在Vue中的使用_vue el-color-picker-程序员宅基地

文章浏览阅读4.5k次,点赞2次,收藏3次。首先要有一个color-picker组件 <el-color-picker v-model="headcolor"></el-color-picker>在data里面data() { return {headcolor: ’ #278add ’ //这里可以选择一个默认的颜色} }然后在你想要改变颜色的地方用v-bind绑定就好了,例如:这里的:sty..._vue el-color-picker

迅为iTOP-4412精英版之烧写内核移植后的镜像_exynos 4412 刷机-程序员宅基地

文章浏览阅读640次。基于芯片日益增长的问题,所以内核开发者们引入了新的方法,就是在内核中只保留函数,而数据则不包含,由用户(应用程序员)自己把数据按照规定的格式编写,并放在约定的地方,为了不占用过多的内存,还要求数据以根精简的方式编写。boot启动时,传参给内核,告诉内核设备树文件和kernel的位置,内核启动时根据地址去找到设备树文件,再利用专用的编译器去反编译dtb文件,将dtb还原成数据结构,以供驱动的函数去调用。firmware是三星的一个固件的设备信息,因为找不到固件,所以内核启动不成功。_exynos 4412 刷机

Linux系统配置jdk_linux配置jdk-程序员宅基地

文章浏览阅读2w次,点赞24次,收藏42次。Linux系统配置jdkLinux学习教程,Linux入门教程(超详细)_linux配置jdk

随便推点

matlab(4):特殊符号的输入_matlab微米怎么输入-程序员宅基地

文章浏览阅读3.3k次,点赞5次,收藏19次。xlabel('\delta');ylabel('AUC');具体符号的对照表参照下图:_matlab微米怎么输入

C语言程序设计-文件(打开与关闭、顺序、二进制读写)-程序员宅基地

文章浏览阅读119次。顺序读写指的是按照文件中数据的顺序进行读取或写入。对于文本文件,可以使用fgets、fputs、fscanf、fprintf等函数进行顺序读写。在C语言中,对文件的操作通常涉及文件的打开、读写以及关闭。文件的打开使用fopen函数,而关闭则使用fclose函数。在C语言中,可以使用fread和fwrite函数进行二进制读写。‍ Biaoge 于2024-03-09 23:51发布 阅读量:7 ️文章类型:【 C语言程序设计 】在C语言中,用于打开文件的函数是____,用于关闭文件的函数是____。

Touchdesigner自学笔记之三_touchdesigner怎么让一个模型跟着鼠标移动-程序员宅基地

文章浏览阅读3.4k次,点赞2次,收藏13次。跟随鼠标移动的粒子以grid(SOP)为partical(SOP)的资源模板,调整后连接【Geo组合+point spirit(MAT)】,在连接【feedback组合】适当调整。影响粒子动态的节点【metaball(SOP)+force(SOP)】添加mouse in(CHOP)鼠标位置到metaball的坐标,实现鼠标影响。..._touchdesigner怎么让一个模型跟着鼠标移动

【附源码】基于java的校园停车场管理系统的设计与实现61m0e9计算机毕设SSM_基于java技术的停车场管理系统实现与设计-程序员宅基地

文章浏览阅读178次。项目运行环境配置:Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。项目技术:Springboot + mybatis + Maven +mysql5.7或8.0+html+css+js等等组成,B/S模式 + Maven管理等等。环境需要1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。_基于java技术的停车场管理系统实现与设计

Android系统播放器MediaPlayer源码分析_android多媒体播放源码分析 时序图-程序员宅基地

文章浏览阅读3.5k次。前言对于MediaPlayer播放器的源码分析内容相对来说比较多,会从Java-&amp;amp;gt;Jni-&amp;amp;gt;C/C++慢慢分析,后面会慢慢更新。另外,博客只作为自己学习记录的一种方式,对于其他的不过多的评论。MediaPlayerDemopublic class MainActivity extends AppCompatActivity implements SurfaceHolder.Cal..._android多媒体播放源码分析 时序图

java 数据结构与算法 ——快速排序法-程序员宅基地

文章浏览阅读2.4k次,点赞41次,收藏13次。java 数据结构与算法 ——快速排序法_快速排序法