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或回车换行)分隔.这些数据以文本形式被存储在文件中. 因为大多数时候,相邻的采样间隔 ...
随机推荐
- C++11常用特性介绍——nullptr关键字及用法
一.nullptr关键字及用法 1)NULL的二义性 void func(int) {} void func(int*) {} 当函数调用func(NULL)时会执行哪个函数呢? 先看C++对NULL ...
- [mjpeg @ ...] unable to decode APP fields: Invalid data found when processing input
通过FFmpeg打开自己笔记本摄像头(HP Wide Vision HD Camera)操作时遇到如下错误: [mjpeg @ 0000029be7cbd000] unable to decode A ...
- Celeste 机制研究
0. 简介.惯例.总论 Celeste (塞莱斯特) 是一个具有优秀手感的平台跳跃游戏. 虽然操作所使用的按键很少, 但是却有着复杂的组合机制. 在游戏实现上, Celeste 是一个锁定 60 帧 ...
- Debug运行项目时报错,connected to the target VM, address: '127.0.0.1:50495', transport: 'socket'
Debug运行项目时报错,无法进入Debug,猜想出错原因可能是未正确关闭IDEA. 解决方法,先直接运行项目,然后停掉项目,再用Debug模式启动,问题解决.
- INUX下抓取当前登录用户登录密码的工具:mimipenguin
前有Mimikatz,今有mimipenguin,近日国外安全研究员huntergregal发布了工具mimipenguin,一款Linux下的密码抓取神器,可以说弥补了Linux下密码抓取的空缺. ...
- 基于IntelliJ IDEA的代码评审插件 Code Review Plugin
一.阿里规范公约 1.左上角 File -> Settings -> Plugins -> 搜索:Alibaba Java Coding Guidelines,安装插件并重启IDEA ...
- 移动端触摸touchstart监听事件
click.mousedown等事件适用于PC端,在移动端会有一定时间的延迟,所以更好的优化移动端体验,要用touch事件, 1.首先要添加一个监听事件,监听移动端行为 element.addEven ...
- Day3-M-Cable master POJ1064
Inhabitants of the Wonderland have decided to hold a regional programming contest. The Judging Commi ...
- c基本语法介绍
c语言基本语法介绍 1.把常量定义为大写字母形式,是一个很好的编程实践.
- 四 Hibernate的一级缓存&事务管理及其配置
持久态对象: 自动更新数据库,原理是一级缓存. 缓存:是一种优化的方式,将数据存入内存,从缓存/内存中获取,不用通过存储源 Hibernate框架中提供了优化手段:缓存,抓取策略 Hibernate中 ...