WFP:Windows 网络过滤的“万能插线板”
做 Windows 网络开发特别是防火墙、VPN、网络监控这类东西WFPWindows Filtering Platform是绕不开的。不过一说起驱动、内核、Callout确实容易让人头大。这篇文章不讲复杂的API细节只希望用最通俗的方式把“WFP 是什么、能干什么、内部怎么回事”讲明白。WFP 到底是干嘛的一句话概括WFP是 Windows内核网络协议栈里的一个“万能插线板”。它把网络数据流经的各个关键节点都预留了“插孔”也就是过滤层你可以把自己的处理逻辑“插头”插上去实现对网络流量的拦截、检查、修改和放行/丢弃控制。Windows 自带的防火墙就是微软自己在这些“插孔”上插的“插头”。杀毒软件、家长控制、流量监控软件用的也是这套东西。为什么要用 WFP在 WFP 出现之前做网络过滤有几种老办法比如 TDI 过滤、NDIS 中间层驱动、Winsock LSP 等等。这些技术各有各的问题有的只能管到某一段没法全程控制有的不兼容 IPv6 等新协议有的和系统更新经常打架。WFP最大的价值就是把 Windows网络过滤这件事统一、标准化了。从 Vista/Server 2008 开始它成了新一代防火墙和网络处理程序的基石。WFP 的“四大件”WFP 的体系结构大致可以理解为四个角色在分工协作垫片Shims贴身的“情报员”这是嵌入在系统 TCP/IP 协议栈各层的内核模块它们负责把经过的数据拦截下来包装成 WFP 能理解的格式然后交给过滤引擎做判断。不同的垫片负责不同层次的流量比如负责应用程序连接的 ALE 垫片、负责传输层数据的垫片、负责网络层的垫片等。你不用管垫片具体怎么写它们是 WFP 框架自带的。过滤引擎Filter Engine核心的“裁判”这是真正干活的核心。它横跨内核态和用户态里面分了大概50个内核层和10个用户层数据在不同阶段会流经不同的层。每个层内部又有子层Sub-layer和过滤器Filter。每个过滤器其实就是一条规则比如“如果数据包的目标端口是 80就放行”。当数据进来过滤引擎会按优先级一条条比对规则给出“允许”或“阻止”的判决。基本筛选引擎BFE背后的“总调度”BFE 是一个运行在用户态的系统服务Base Filtering Engine是整个 WFP 的管理和控制中心。它主要干几件事接收上层应用比如防火墙管理界面添加/删除规则的命令对不同来源的策略做仲裁把 IPsec 等策略配置分发出去。总之BFE负责“下命令”过滤引擎负责“执行”。标注Callouts留给开发者的“自定义钩子”这就是 WFP 最灵活的地方。内置的“允许/阻止”规则不够用你可以自己写一个标注驱动Callout Driver注册一个或多个回调函数Callout。你可以把这个标注挂在任何一个内核层上。当一个数据包匹配了使用该标注的过滤器时你的 classifyFn 函数就会被调用。在里面你可以做深度包检测检查数据内容里有没有病毒特征。数据包修改比如做 NAT改写 IP 地址和端口。流修改比如家长控制替换或移除数据流里的敏感词。日志记录记录所有被拦截的流量。有了 CalloutWFP 就不再只是一个“开关”而是变成了一个可以深度编程的网络处理平台。WFP 是怎么分层的WFP 的分层是和 TCP/IP 协议栈对应的从应用层数据一直到网卡出去的裸包都有对应的过滤点。下面用发送一个TCP数据包的例子简单串一下应用层ALE层应用程序调用 send()数据刚进内核。ALE_AUTH_CONNECT 层会被触发这里是“连接授权”阶段可以拿到进程 PID、程序路径、目的 IP/端口等信息。这是做“应用程序防火墙”最关键的层。传输层TRANSPORT层TCP 包已经生成但还没分片。在 OUTBOUND_TRANSPORT_V4 层可以拿到完整的 TCP 头和负载数据。网络层IPPACKET层IP 包已经封装好可能已经被分片了。在 OUTBOUND_IPPACKET_V4 层可以拿到 IP 头。这一层已经没有进程信息了适合做 IP 级的过滤和 VPN 隧道封装。如果数据是从网卡收上来的顺序正好反过来从 INBOUND_IPPACKET_V4 → INBOUND_TRANSPORT_V4 → ALE_AUTH_RECV_ACCEPT一路向上。使用时怎么选层不同的开发目标选不同的层以下整理了常用的分层处理类别你想做什么推荐层理由禁止某程序联网、按进程控制ALE_AUTH_CONNECT /ALE_AUTH_RECV_ACCEPT能拿到完整的进程信息且只处理连接的第一个包性能好分析 HTTP请求、检测 SQL注入STREAM 层TCP 专用数据已经过 TCP 重组拿到的是连续的应用层数据流方便解析分析 DNS包UDPDATAGRAM 层UDP 专用直接拿到完整的 UDP 数据报适合 DNS 过滤IP级防火墙、VPN隧道IPPACKET 层最底层拦截但也失去了进程和端口信息小结WFP 是 Windows 下做网络过滤的“正路”。它把网络协议栈的关键节点都开放出来让你能用标准化的方式去拦截和处理流量。虽然写标注驱动还是要啃 WDK 文档但理解 WFP 这个“插线板”模型基本概念就清晰了数据在协议栈里跑经过一个个“插孔”层你的“插头”Callout就在那里干活告诉系统这个包是放行、丢弃、还是修改。

相关新闻

PCB之四层板

PCB之四层板

四层 PCB 叠层设计笔记叠层(从上到下)Top  表层信号层GND  内层完整地平面SIG  内层信号走线层Bottom 底层信号层叠层特点:第二层专用完整 GND 平面;第三层为信号优先的内层,不是专用电源平面。适合信号多、电源…

2026/10/11 20:25:18 阅读更多 →
锚定AI数字韧性赛道,同创永益完成新一轮股权融资

锚定AI数字韧性赛道,同创永益完成新一轮股权融资

——国资引导基金、产业投资平台共同投资 龙头企业蓄力规模化高质量发展 近日,国内数字韧性领军企业北京同创永益科技发展有限公司(以下简称“同创永益”)宣布完成近亿元股权融资。本轮融资由深圳市龙岗区引导基金投资有限公司、中关村智慧能…

2026/10/10 6:38:09 阅读更多 →
技术探讨:基于唐山创通科技的RFID智能文件柜如何实现档案的精细化管理?

技术探讨:基于唐山创通科技的RFID智能文件柜如何实现档案的精细化管理?

在传统的档案与文件管理中,人工盘点耗时费力、错放漏放难以追溯、涉密文件权限管控难等问题一直困扰着管理人员。随着物联网技术的发展,RFID(射频识别)技术为实体档案的数字化管理提供了新的解决思路。本文将探讨唐山创通科技RFID…

2026/10/11 15:49:43 阅读更多 →

最新新闻

GitHub热榜自动化抓取与解析技术指南

GitHub热榜自动化抓取与解析技术指南

我无法基于当前输入生成符合要求的博文。原因如下:输入中项目标题为“GitHub 热榜项目:日榜(2026-10-03)”,但该日期(2026年10月3日)是未来时间,明显不具备真实项目属性,…

2026/10/12 9:27:01 阅读更多 →
Strata双卡部署实战:释放中画幅AI影像引擎硬件潜力

Strata双卡部署实战:释放中画幅AI影像引擎硬件潜力

1. 这不是普通升级,是双卡用户的一次硬件价值重估Strata 这个名字最近在摄影和图像处理圈子里越来越响,尤其当它和 IQ3_S、IQ2_XS 这些中画幅数码后背型号一起出现时,几乎成了“高分辨率影像工作流最后一块拼图”的代名词。但很多人没意识到&…

2026/10/12 9:27:01 阅读更多 →
SAML 2.0单点登录原理与实战:SP、IdP、断言、证书全解析

SAML 2.0单点登录原理与实战:SP、IdP、断言、证书全解析

简介:一套围绕安全断言标记语言2.0规范实现的单点登录方案,面向需搭建统一身份认证体系的中高级开发者,亦覆盖VS2005、VS2008、VS2010等旧版开发环境,并包含部分Java辅助代码。资源完整呈现客户端发起认证请求、服务端信任校验、可…

2026/10/12 9:27:01 阅读更多 →
SAML 2.0 SSO单点登录实战:从协议原理到对接避坑指南

SAML 2.0 SSO单点登录实战:从协议原理到对接避坑指南

简介:基于SAML 2.0的SSO单点登录实现资料包,面向需要搭建统一身份认证系统的.NET开发人员、架构师,也适合对SAML协议交互流程感兴趣的Java开发者。资源聚焦客户端发送SAML请求、SSO响应验证客户端是否可信任、可信响应返回、加密SAML、客户端…

2026/10/12 9:26:00 阅读更多 →
车载颗粒物测量实战:OBS-ONE PM系统安装、测试与维护经验

车载颗粒物测量实战:OBS-ONE PM系统安装、测试与维护经验

第一次把颗粒物分析仪从实验室搬上卡车的时候,我心里想的是“把设备固定牢靠、管路接好,剩下的就是跑路、采数据”。等真正跑完一个完整的外场项目,我才发现OBS-ONE PM车载废气测量系统最难的部分从来不是仪器本身的精度,而是如何…

2026/10/12 9:26:00 阅读更多 →
FOD-A机场异物数据集实战:从数据转换到YOLO训练全指南

FOD-A机场异物数据集实战:从数据转换到YOLO训练全指南

简介:面向目标检测与计算机视觉研究者的FOD-A机场异物数据集,聚焦机场跑道常见异物碎片(FOD)检测,为缺乏公开标准数据的外物入侵检测任务提供训练与评测基础,也可支撑民航、机场场务等工业场景的智能巡检方…

2026/10/12 9:26:00 阅读更多 →

日新闻

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

在数码相机、高清显示屏与现代矢量图形技术高度发达的今天,画面可以做到绝对的锐利、平滑与无瑕。然而,当一张秋日手账插画或拍立得照片过于“平整无瑕”时,往往会散发出一种冰冷生硬的“数码塑料感(Digital Plasticity&#xff0…

2026/10/12 0:00:59 阅读更多 →
活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

在现代网页与移动端设计中,横排(Horizontal Layout)早已经成为了绝对的主流。然而,当我们翻开泛黄的线装古籍、宋版木刻诗集,或是欣赏一张茶道雅集的手写便签时,那种**自上而下纵向书写、自右向左逐列铺展&…

2026/10/12 0:00:59 阅读更多 →
周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

每到周日的晚上八点到十点,很多人心里都会悄悄亮起一盏警示灯。 在心理学上,这种现象有一个专门的称谓——“周日夜晚焦虑症(Sunday Scaries)”。明天又是周一,闹钟又要重新在七点响彻卧房;脑海里仿佛有一个…

2026/10/12 0:00:59 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/12 0:16:30 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/12 0:16:43 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 10:45:37 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:53 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:54 阅读更多 →