WFP之WFP简介
·过滤引擎是WFP的核心组成部分,过滤引擎分为两大层:用户态基础过滤引擎和内核态过滤引擎。基础过滤引擎会与内核过滤引擎交互。
·内核态过滤引擎是整个过滤引擎的主体,内部分为多个分层,每分层都代表着网络协议栈特定的层。每个分层存在子层和过滤器。内核过滤引擎检查网络数据包是否
命中过滤器的规则,命中的过滤器,执行这些过滤器指定的动作。
·一般,过滤的动作为放行或拦截网络数据包。实际中,内核过滤引擎的分层中,存在多个子层和多个过滤器。一次网络事件,可能同时命中多个过滤器的规则,而且
这些过滤器可能有不同的过滤动作。为了计算最终的过滤动作,WFP引入了过滤仲裁器,过滤仲裁器计算最终的过滤动作交给内核态过滤引擎,然后内核态过滤引擎将
结果反馈给垫片。
·垫片是一种特殊的内核模块,安插在系统的网络协议栈的不同层中,获取网络协议栈的数据,通过内核过滤引擎提供的API,将数据传到相应的WFP分层中。作用有
二种:获取网络数据传递给内核态过滤引擎,把内核态过滤引擎的过滤结果反馈给网络协议栈。对于开发者是透明的。
·呼出接口是WFP框架中的重要数据结构,也是能力的扩展。由一系列回调函数组成,当网络数据命中过滤器且此过滤器定义了一个呼出接口,那么对应的回调函数就
被调用。有一个唯一识别此呼出接口的GUID。
·分层是网络数据包的分类,根据需要与相应的分层交互。分层是一个容器,里面包含了0或一个过滤器,还可能包含一个或多个子层。每个分层有一个唯一的值标识
,内核态是64位的LUID来标识。用户态用128位GUID来标识。
·子层是分层更小的一个划分,一个分层可以分为多个子层,每个子层有一个权重,权重越大,优先级越高。当数据达到分层时,子层的权值越大,越早获取到数据。
·过滤器是存在WFP的分层中,是一套规则和动作的集合,规则指明了对那些数据包感兴趣,过滤那些数据包。过滤器的规则被命中时,过滤器里面指定的动作会被
WFP执行。一个过滤器有一个或多个过滤条件,当全部成立时,才命中。使用时,必须知道过滤器被添加到内核过滤引擎的那一个分层中,不同分层中,可以过滤到不
同层次的网络数据。统一层内,可存多个过滤器,不同过滤器有不同的权重,为了避免重复,可指定一个子层,只保证子层中的过滤器权重不重复就可以。过滤器关联
子层后,按照权重值大到小匹配子层的过滤器。子层内,WFP也是按照过滤器的权值,大到小匹配过滤器的规则。过滤器可以关联分层和子层,还可以关联呼出接口。
在复杂的分析和处理的情况下,过滤器一般要关联一个呼出接口,当命中时,执行与过滤器关联的呼出接口内的回调函数
·呼出接口包含三个回调函数,notifyFn,classifyFn,flowDeleterFn。 classifyFn 规则被命中,执行此函数,获取网络数据包的相关信息,所得内容取决于所过
滤的分层,此接口还可以设置对网络数据包的允许和拦截。notifyFnl当过滤器被添加或移除时,WFP会调用此函数,知道呼出接口关联的过滤器的操作情况。
flowDeleterFn 当一个网络数据流将要被终止时,WFP或调用此函数,而且将要终止的数据流被关联了上下,才会被调用,用来清理别关联的上下文。
WFP步骤
·定义一个或多个呼出接口,然后向过滤引擎注册呼出接口。
·添加呼出接口道过滤引擎。
·设计一个或多个引擎,把子层添加到分层中
·设计过滤器,把呼出接口,子层,分层,过滤器关联,向过滤引擎添加过滤器
WFP之WFP简介的更多相关文章
- WF4.0(1)---WorkFlow简介
编程编的越久就发现自己以前的语文真的没学好,写个随笔取个名字都需要思考半天,以前工作的时候只是听说过工作流,知道的范围仅限于工作流在OA审批流程中用的比较多,现在自己实实在在的用工作流也做过不少项目, ...
- WF4.0 基础篇 (一)开始使用WF
来源:https://www.cnblogs.com/caosenianhuan/p/WF.html 最近公司要重新上线一套新的CRM系统,要重整老系统里的业务流模块,团队讨论已微软的workflow ...
- 2012年第三届蓝桥杯C/C++程序设计本科B组决赛
1.星期几(取余/excel) 2.数据压缩 3.拼音字母(比较) 4.DNA比对(dp) 5.方块填数 1.星期几[结果填空] (满分5分) 1949年的国庆节(10月1日)是星期六. ...
- 2012蓝桥杯本科组C/C++决赛题
星期几 [结果填空] (满分5分) 1949年的国庆节(10月1日)是星期六. 今年()的国庆节是星期一. 那么,从建国到现在,有几次国庆节正好是星期日呢? 只要答案,不限手段! 可以用windows ...
- 读取配置文件的C语言接口实现
在一些场合,需要对一些配置文件进行读取,去设置软件的参数,自己实现了一些接口函数,以供以后使用. ConfigFile.c #include <stdio.h> #include < ...
- 算法笔记_200:第三届蓝桥杯软件类决赛真题(C语言本科)
目录 1 星期几 2 数据压缩 3 拼音字母 4 DNA比对 5 方块填数 前言:以下代码部分仅供参考,若有不当之处,还望路过同学指出哦~ 1 星期几 1949年的国庆节(10月1日)是星期六. ...
- 第三届蓝桥杯决赛c++b组
1.星期几 [结果填空] (满分5分) 1949年的国庆节(10月1日)是星期六. 今年(2012)的国庆节是星期一. 那么,从建国到现在,有几次国庆节正好是星期日呢? 只要 ...
- 第三届蓝桥杯C++B组国(决)赛真题
解题代码部分来自网友,如果有不对的地方,欢迎各位大佬评论 题目1.星期几 1949年的国庆节(10月1日)是星期六. 今年(2012)的国庆节是星期一. 那么,从建国到现在,有几次国庆节正好是星期日呢 ...
- java实现第三届蓝桥杯数据压缩
数据压缩 某工业监控设备不断发回采样数据.每个数据是一个整数(0到1000之间).各个数据间用空白字符(空格,TAB或回车换行)分隔.这些数据以文本形式被存储在文件中. 因为大多数时候,相邻的采样间隔 ...
随机推荐
- Linux centosVMware LNMP架构介绍、MySQL安装、PHP安装、Nginx介绍
一. LNMP架构介绍 和LAMP不同的是,提供web服务的是Nginx 并且php是作为一个独立服务存在的,这个服务叫做php-fpm Nginx直接处理静态请求,动态请求会转发给php-fpm ...
- Input输入框日期控件
案例 https://pan.baidu.com/s/1i6BNLcT 密码:p77m
- 编写跨平台Java程序注意事项
使用Java语言编写应用程序最大的优点在于“一次编译,处处运行”,然而这并不是说所有的Java程序都具有跨平台的特性,事实上,相当一部分的Java程序是不能在别的操作系统上正确运行的,那么如何才能编写 ...
- android studio升级之后项目报错Could not find com.android.tools.build:aapt2:3.2.1-4818971
导致问题的原因为源代码根目录下的build.gradle中缺少对于google源服务器的配置(话说,貌似以前版本的都在jcenter中可以找到,最新版本的,好像没有上传到jcenter服务器了,估计是 ...
- 网络编程之TCP三次握手,四次断开
目录 TCP三次握手 1:上图的名词解释 2:TCP三次握手过程 3:为什么不能改成两次握手? TCP三次握手 1:上图的名词解释 SYN:同步序号.它表示建立连接.TCP规定SYN=1时不能携带数据 ...
- Linux学习计划中遇到的问题记录
随时更新 Linux安装到网络联通遇到的问题及解决办法 1.命令区分大小写 2..网络连通 ping本地 地址遇到问题 解决办法: https://blog.csdn.net/qq_42074075/ ...
- 虚拟机下安装 VMwareTools 实现宿主机和虚拟机的文件共享
$ mount /dev/sr0 /media/ #点击 虚拟机 安装 VMwareTools 挂载 $ cd /media/ $ cp VMwareTools-10.1.6-5214329.tar. ...
- 「NOIP2015」运输计划
传送门 Luogu 解题思路 首先这题可以直接二分答案,然后我们每次都把属于长度大于二分值的路径上的边标记一次,表示选这条边可以优化几条路径. 然后我们显然是要选一条覆盖次数等于需要覆盖的路径数并且长 ...
- 生成MyEclipse6.5&7.5&8.5 注册机源码
分类: java技术2010-09-30 21:46 26638人阅读 评论(6) 收藏 举报 myeclipsejavastringimportinputbyte 生成MyEclipse8.5注册码 ...
- git/github使用详解
介绍:gitHub是一个面向开源及私有软件项目的托管平台,因为只支持git 作为唯一的版本库格式进行托管,故名gitHub. 2018年6月4日,微软宣布,通过75亿美元的股票交易收购代码托管平台Gi ...