原文路径::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 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

  返回页首

Windows 筛选平台 (WFP)相关推荐

  1. 【驱动开发】Windows过滤平台(WFP,Windows Filtering Platform)

    文章目录 Windows的发展历程 TDI简介 WFP简介 用户态基础过滤引擎(BFE) 内核态过滤引擎(KMFE) 垫片(Shim) 分层(Layer) 子层(Sub Layer) 过滤器(Filt ...

  2. MongoDb Windows linux平台环境及主流编程语言驱动安装同时配置mongoDb的远程连接

    MongoDb Windows linux平台环境及主流编程语言驱动安装同时配置mongoDb的远程连接 <一,>MongoDB 简介篇Ruiy; MongoDB是一个高性能,开源,无模式 ...

  3. Windows Azure平台Win VM密码重置

              Windows Azure平台Win VM密码重置 近期给客户做Azure实施,客户把Azure平台的Linux系统的账户忘记了,帮助客户进行重置了Linux系统的密码,顺便自己研 ...

  4. 快速配置Windows 2003平台下实现 IIS(WEB)站点的安全(SSL加密技术!)

    [实验名称] 快速配置Windows 2003平台下实现 IIS(WEB)站点的安全(SSL加密技术!) [实验基本概念] A. 对于公用信息--------------------www.Sohu. ...

  5. RavenDB:基于Windows/.NET平台的NoSQL数据库

    众所周知,NoSQL运动旨在成为大数据时代传统关系数据库管理系统的替代品.如今Microsoft对开源的态度有所转变,RavenDB就是很好的例子.Microsoft对RavenDB(NoSQL数据库 ...

  6. java5.0安装在x86,JDK 7U15在 Windows x86平台下的安装方法

    本文给大家分享的是如何在windows平台下安装JDK最新版的方法,十分的简单全面,有需要的小伙伴可以参考下 这里以JDK 7U15在 Windows x86平台下的安装为例,其他平台安装与此类同. ...

  7. 输入法 java_使用 Utf7ime 输入法实现中文输入 Windows+Java 平台(完整步骤版)

    今天完成了对真机上的 APP 输入框的中文输入的操作,也研究了很久,很不易,特贴出来分享给广大才接触 appium 的 tester 希望对你们有帮助,不过我这个帖子是基于 Windows+Java ...

  8. 计算机专项能力局域网管理,全国计算机信息技术考试局域网管理(Windows NT平台)管理员级考试考试大纲...

    全国计算机信息技术考试局域网管理(Windows NT平台)管理员级考试考试大纲 时间:2013-12-25 19:55:12  来源:IT认证考试网  点击量: 更多 第一单元 计算机网络原理(10 ...

  9. 恶意软件利用Windows故障诊断平台传播

    据安全软件开发商Proofpoint安全研究人员发现,在最新的一波垃圾邮件攻势中,恶意软件巧妙地利用了Windows故障诊断平台(Windows Troubleshooting Platform)服务 ...

最新文章

  1. Set Up a Simple Knowledge Base
  2. git-svn 在ubuntu deepin(Linux debian系)下的安装与应用
  3. jquery三级联动模糊查询_jquery三级联动
  4. 接口返回时间较长,如何提高响应速度?
  5. NB-IoT与LoraWan技术分析与前景展望
  6. javascript 推拉式菜单
  7. Ubuntu20.04更换软件源
  8. 大学四年Java学习路线规划,所有私藏资料我都贡献出来了,我要是早知道就好了
  9. 对伪元素::after和::before的理解
  10. 五千字!详细解读链家「难而正确的事」
  11. 大型互联网公司如何自建拥有独立AS号的IP网络
  12. 华为freebudspro2和freebudspro区别
  13. 高通QCM6125的LK部分(uefi/xbl)编译
  14. android7.1 rtc,RK3288 Android7.1 RTC-pcf8563调试 待机唤醒
  15. 搭建文字转语音(TTS)服务器
  16. 给 FreeBSD 12.1 安装 GNOME3 图形界面
  17. 纪中DAY8做题小结
  18. 国内首个写作机器人上岗,1秒完成文章写作,就问你怕不怕!
  19. sql语句查询昨天,今天,最近七天,最近三十天数据
  20. 外部链接锚文字包含关键词

热门文章

  1. Excel中的$是什么意思
  2. matlab 检测键盘,matlab检测键盘
  3. 学生信息管理系统(面向对象版本)V3.0
  4. Python函数返回多个值的方法
  5. 为什么 128 KB 的魂斗罗可以塞下这么长的剧情?
  6. 【iOS】应用跳转到系统应用
  7. 我的世界基岩版种子和java版种子_我的世界:基岩版种子榜单,7个刷怪笼扎堆,还有美丽的花海!...
  8. BIOS、UEFI及系统安装
  9. python绘制动态k线及均线,python : pyecharts 1.1.0 画K线图
  10. android随手记毕业论文,关于毕业论文的思考