现在的网络安全问题,越来越受到重视,微软在VISTA以后,使用了WFP平台来代替之前XP和03中的基于包过滤的技术,比如Transport Driver Interface(TDI)过滤,Network Driver Interface Specification(NDIS)过滤,Winsock layered Service Providers(LSP).WFP是一组API和系统服务,它给网络过滤的应用提供了一种平台。WFP的这些API

可以在操作系统网络堆栈的不同层次进行包的处理,在数据到达目的地之前,进行过滤或者修改。

       

              我们所知道的Windows Firewall with Advanced Security(WFAS)也是使用WFP,也是使用的WFP的抽象出来的WFAS API。这些API既包含用户模式的API也包含内核模式的API.





              Filter Engine





             可以在系统的任何层次对进行网络传输的任何数据进行过滤。





            “Callout”过滤驱动在分类的时候被回调调用。





             在调用的时候,可以强制返回许可或者阻塞。





             在不同的政策间提供仲裁。





             比如,提供优先级裁决,比如应用程序被配置去保证网络数据传输安全,但是本地的防火墙被配置阻止应用程序运行。





             Base Filtering Engine





            接受过滤驱动和一些对平台的设定。





            报告系统的当前状态,包含统计信息。





            平台接受控制的一些强制安全模式,比如本地管理员可以增加过滤,其他用户只能浏览。





            激活系统中的另外一些部件的控制设定。比如,IPsec 谈判政策需要IKE/AutiIP模块,过滤器到过滤引擎。





            Shims





            驻留在网络堆栈和过滤引擎之间的内核部件。垫片使过滤决定对过滤引擎分类。





            应用层强制垫片。

 

            传输层模块垫片。

 

            网络层模块垫片。



            互联网控制消息协议(ICMP)错误垫片。



            放弃垫片。



            流垫片。





            Callouts





            驱动用于过滤暴露的一组函数,主要是:





             执行IPsec 处理





             调整过滤行为的全状态





             执行一些隐身模式的过滤(静默丢掉包不被请求)。





             控制TCP chimney offload





            和Teredo 服务进行联系。





            Application Programming Interface





            一组用于开发应用程序的API.





            WFP Features功能





       提供基于包过滤的基础,ISV可以预装指定的过滤模块。





       IPV4和IPV6都支持。





       允许数据过滤,修改,插入。





       允许在一个应用,一个用户,一个连接,一个网络接口,一个端口上使能包的过滤。





       提供启动时安全,直到BFE启动。





       使能有状态连接的过滤。





       能够处理IPsec预前或延后数据加密





       允许结合IPSec和防火墙过滤。





       提供一种管理体系,能够发现什么,特定的过滤器应该被激活。这个可以防止不同的供应商的不同的过滤器出现冲突。





       能够处理很多包的重组和状态追踪。





       包含一些通用的用户通知,通知一些过滤器的一些改变情况。





       执行一些枚举函数,报告系统的状态。





       使用一些网络事件记录IPsec错误和包丢失。





       支持网络诊断框架(NDF)帮助类。





       支持Winsock APIde secure socket extensions,允许通过配置WFP,网络应用去包含它们的传输。





       在ALE层,通过只处理连接中的第一个包,最大限度减少网络效率的影响。





       整合硬件的offload,当内核模式的callout模块可以使用硬件来执行一些特定的包检查任务。

再来看一张,总体的WFP的结构示意图。

转自:http://blog.csdn.net/z18_28_19/article/details/12586523

Windows驱动_WFP之一WFP是什么的更多相关文章

  1. Windows驱动开发(中间层)

    Windows驱动开发 一.前言 依据<Windows内核安全与驱动开发>及MSDN等网络质料进行学习开发. 二.初步环境 1.下载安装WDK7.1.0(WinDDK\7600.16385 ...

  2. [windows驱动]内核态驱动架构

    1.windows驱动简介: 1.1 windows组件简介: 1.2 windows驱动类型: windows驱动分为两种基本类型: 用户态驱动在用户态下执行.它们一般提供一套win32应用程序和内 ...

  3. (转)Windows驱动编程基础教程

    版权声明     本书是免费电子书. 作者保留一切权利.但在保证本书完整性(包括版权声明.前言.正文内容.后记.以及作者的信息),并不增删.改变其中任何文字内容的前提下,欢迎任何读者 以任何形式(包括 ...

  4. [Windows驱动开发](一)序言

    笔者学习驱动编程是从两本书入门的.它们分别是<寒江独钓——内核安全编程>和<Windows驱动开发技术详解>.两本书分别从不同的角度介绍了驱动程序的制作方法. 在我理解,驱动程 ...

  5. windows驱动开发推荐书籍

    [作者] 猪头三 个人网站 :http://www.x86asm.com/ [序言] 很多人都对驱动开发有兴趣,但往往找不到正确的学习方式.当然这跟驱动开发的本土化资料少有关系.大多学的驱动开发资料都 ...

  6. Windows 驱动开发 - 5

    上篇<Windows 驱动开发 - 4>我们已经完毕了硬件准备. 可是我们还没有详细的数据操作,比如接收读写操作. 在WDF中进行此类操作前须要进行设备的IO控制,已保持数据的完整性. 我 ...

  7. Windows 驱动发展基金会(九)内核函数

    Windows 驱动发展基金会系列,转载请注明出处:http://blog.csdn.net/ikerpeng/article/details/38849861 这里主要介绍3类Windows的内核函 ...

  8. windows 驱动开发入门——驱动中的数据结构

    最近在学习驱动编程方面的内容,在这将自己的一些心得分享出来,供大家参考,与大家共同进步,本人学习驱动主要是通过两本书--<独钓寒江 windows安全编程> 和 <windows驱动 ...

  9. Windows驱动开发入门指引

       1.  前言 因工作上项目的需要,笔者需要做驱动相关的开发,之前并没有接触过相关的知识,折腾一段时间下来,功能如需实现了,也积累了一些经验和看法,所以在此做番总结. 对于驱动开发的开发指引,微软 ...

随机推荐

  1. BZOJ 3653: 谈笑风生(主席树)

    传送门 解题思路 首先对于一个\(a\)来说,要求\(b\)和\(c\),那么\(a,b,c\)一定在一条链上.把\(b\)分类讨论,如果\(b\)是\(a\)的祖宗,这个方案数就很好统计了,就是\( ...

  2. CentOS7.5 yum 安装与配置MySQL5.7.24

    安装环境:CentOS7 64位 MINI版,安装MySQL5.7 1.配置YUM源 在MySQL官网中下载YUM源rpm安装包:https://dev.mysql.com/downloads/rep ...

  3. NIO浅析(一)

    一:NIO与IO的区别 1.NIO面对的是缓冲区,IO面对的是流 2.NIO是非阻塞的,IO是阻塞的 3.NIO中引入了选择器 二:既然NIO面对的是缓冲区,那就先来了解缓冲区 1.NIO中Buffe ...

  4. Sqlplus常用指令

    一.ORACLE的启动和关闭1.在单机环境下2.在双机环境下二.Oracle数据库有哪几种启动方式1.startup nomount 非安装启动,这种方式启动下可执行:重建控制文件.重建数据库2.st ...

  5. 推荐MarkDown编辑工具Typora--文本画流程图示例

    程序员界名言:talk is cheap, show me the code CODE: ### 8. 修改预留手机号-per.MCReservedMobilePhoneUpd #### 8.1业务规 ...

  6. MATLAB中的fspecial函数

    Matlab 的fspecial函数用法 转载:https://blog.csdn.net/majinlei121/article/details/50255837 fspecial函数用于建立预定义 ...

  7. 14-vim-替换命令-01-替换

    命令 英文 功能 工作模式 r replace 替换当前字符 命令模式 R replace 进入替换模式 替换模式 R命令进入替换模式,输入新字符替换当前光标所在位置的字符,替换完成后,按下ESC可以 ...

  8. python之数据序列转换并同时计算数据

    问题 你需要在数据序列上执行聚集函数(比如 sum() , min() , max() ), 但是首先你需要先转换或者过滤数据 解决方案 一个非常优雅的方式去结合数据计算与转换就是使用一个生成器表达式 ...

  9. AMS5601的ardunio和STM32驱动开发

    AMS5601的ardunio和STM32驱动开发 本文有麦粒电子撰写,并提供相应产品服务. 前言 目前ams关于磁编码芯片用的比较多的可能是ams5600,能够输出pwm信号,电压信号以及I2C通信 ...

  10. 【学术篇】The Xuanku Inversion Magic学习笔记

    退役之前写的 然后因为退役就咕咕咕了... 后来发现数学考试能用的到个鬼就发布出来了QwQ 主要是方便自己没登录的时候查阅... 显然子集什么的是没有学会的QwQ 所以学OI的话不要看本文!!!!!& ...