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或回车换行)分隔.这些数据以文本形式被存储在文件中. 因为大多数时候,相邻的采样间隔 ...
随机推荐
- checkbox全选/取消全选
//checkbox全选/取消全选 $(function() { $("#checkAll").click(function() { if(this.checked){ $(&qu ...
- redhat 7.6 常用命令
cp 复制命令 diff 对比两个文件内容是否相同 cp -rvf 复制目录 r代表递归 v显示详细步骤 f强制 ls -ah 查看目录 a查看隐藏文件 h显示文件大小单位k less 逐行 ...
- eclispe+maven+ssm+sql_server/mysql配置
链接: https://pan.baidu.com/s/1_BFI8XfS8l89-3-1IjlVZg 密码: x9in
- 虚拟机centos7 识别不出网卡的解决方案
问题提出 之前在VMware安装centos 7(网络连接采取Nat方式),进入Centos 7后成功开启了sshd服务,然后在主机(我的windows系统)用puTTY软件可以ssh到虚拟机上.后来 ...
- Ubuntu安装docker并修改镜像仓库
首先切换到root用户 安装docker wget -qO- https://get.docker.com/ | sh 使用docker -v查看docker版本 创建daemon.json 并键入以 ...
- HashMap1.8之节点删除分析
HashMap之节点删除 大家一直关注的都是HashMap如何添加节点,当节点数量大于8的时候转化为红黑树,否则使用链表等等,但大家是否有看过删除节点的处理逻辑呢? 今天来看看HashMap删除节点的 ...
- MySQL 常用SQL 汇总
1.查看当前应用连接,连接数突增排查 select user,SUBSTRING_INDEX(host,':',1) as ip , count(*) as count,db from informa ...
- Kubernetes 二进制部署(二)集群部署(多 Master 节点通过 Nginx 负载均衡)
0. 前言 紧接上一篇,本篇文章我们尝试学习多节点部署 kubernetes 集群 并通过 haproxy+keepalived 实现 Master 节点的负载均衡 1. 实验环境 实验环境主要为 5 ...
- Kubernetes 二进制部署(一)单节点部署(Master 与 Node 同一机器)
0. 前言 最近受“新冠肺炎”疫情影响,在家等着,入职暂时延后,在家里办公和学习 尝试通过源码编译二进制的方式在单一节点(Master 与 Node 部署在同一个机器上)上部署一个 k8s 环境,整理 ...
- Django 连接 Mysql (8.0.16) 失败
首先,确认数据库配置正确无误: DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', # or use: mysql.con ...