Windows Packet Divert (WinDivert) 是一个用于 Windows 操作系统的网络数据包拦截和修改工具,允许开发者在内核级别拦截、修改和重定向网络流量。它广泛应用于网络监控、调试、测试和安全领域。WinDivert 允许用户通过一个简单的 API 捕获和操作网络流量,包括 IP、TCP、UDP 数据包等。
Windows Packet Divert (WinDivert) 是一个用于 Windows 操作系统的网络数据包拦截和修改工具,允许开发者在内核级别拦截、修改和重定向网络流量。它广泛应用于网络监控、调试、测试和安全领域。WinDivert 允许用户通过一个简单的 API 捕获和操作网络流量,包括 IP、TCP、UDP 数据包等。
以下是 WinDivert 的协议、规范、标准以及技术文档的来源:
1. WinDivert 介绍
WinDivert 是一个非常灵活的工具,它可以拦截和修改网络数据包,通常用于网络分析、调试、负载均衡、安全工具和 VPN(虚拟专用网络)中。它基于 Windows 网络驱动模型,能够在应用层和内核层之间拦截数据包。
-
WinDivert GitHub: WinDivert 的官方 GitHub 页面,提供了完整的文档、源代码、示例和安装指南。
-
WinDivert Wiki: 详细的技术文档和使用说明,包括如何安装和使用 WinDivert 来进行数据包捕获和修改。
2. 协议规范和工作原理
WinDivert 本身并不定义一个独立的协议,而是提供了对 Windows 网络栈的低级访问,使开发者能够操作 TCP/IP 协议栈中的数据包。其工作原理基于以下几个关键技术:
-
数据包捕获: WinDivert 可以捕获传入和传出的所有网络数据包,包括以太网帧、IP 数据包、TCP/UDP 数据包等。
以太网帧、IP 数据包、TCP/UDP 数据包 的 协议、规范、标准、技术文档来源(全部为国际正式标准/RFC/IEEE 规范),并附上它们的官方出处,适合用作工程开发、协议栈学习或论文引用。
✅ 以太网(Ethernet)帧 – 协议 / 规范 / 标准
核心标准:IEEE 802 系列
以太网不由 IETF 管,而是由 IEEE(电气电子工程师学会) 制定。
关键规范
技术 标准号 标准名称 内容简介 以太网 MAC 层 IEEE 802.3 Ethernet 定义帧格式、MAC 地址、CSMA/CD 以太网物理层 IEEE 802.3u/ab/an/ba 等 Fast/Gigabit/10G Ethernet 定义各种速率的 PHY 层细节 以太网帧格式定义于:
📄 IEEE 802.3 – Media Access Control (MAC) Parameters, Physical Layer and Management Parameters for Ethernet
(IEEE 标准需要付费下载,但可以查到详细摘要)
官方来源:
🔗 IEEE 官方标准库:https://standards.ieee.org
✅ IP 数据包(IPv4 / IPv6)– 协议 / 标准 / 文档来源
IP 协议由 IETF(Internet Engineering Task Force) 维护,所有标准以 RFC(Request for Comments) 发布。
IPv4(Internet Protocol Version 4)
核心标准
RFC 名称 内容 RFC 791 Internet Protocol IPv4 基本结构与头部格式 RFC 792 ICMP 错误消息、网络诊断(ping) RFC 826 ARP 地址解析协议(IPv4 与 MAC 映射) 官方来源:
🔗 IETF RFC Editor
https://www.rfc-editor.org/rfc/rfc791
IPv6(Internet Protocol Version 6)
核心标准
RFC 名称 内容 RFC 8200 IPv6 Specification(取代 RFC 2460) IPv6 基础、头格式、扩展头 RFC 4443 ICMPv6 IPv6 错误处理 RFC 4861 Neighbor Discovery Protocol IPv6 的 ARP 替代 RFC 4862 Stateless Address Autoconfiguration 地址自动配置(SLAAC) 官方来源:
🔗 https://www.rfc-editor.org/rfc/rfc8200
✅ TCP / UDP 数据包 – 协议 / 标准 / 文档来源
TCP 和 UDP 也由 IETF 维护。
UDP(User Datagram Protocol)
核心标准:
RFC 内容 RFC 768 定义 UDP 头部格式、端口、校验和 官方来源:
🔗 https://www.rfc-editor.org/rfc/rfc768
TCP(Transmission Control Protocol)
核心标准(最重要):
RFC 内容 RFC 793 TCP 原始规范 RFC 1122 Host Requirements(对 RFC 793 的补充) RFC 1323 TCP 高性能扩展(时间戳/窗口扩大) RFC 2018 Selective ACK(SACK) RFC 5681 拥塞控制(慢启动、拥塞避免、快重传等) 官方来源:
🔗 https://www.rfc-editor.org/rfc/rfc793
📚 扩展资料(非常有用)
🧩 TCP/IP 官方参考书
名称 作者 说明 TCP/IP Illustrated, Vol. 1 W. Richard Stevens 最经典的 TCP/IP 教程,工程师必读 Computer Networks Andrew S. Tanenbaum 网络协议入门经典
🧭 所有协议的权威来源
协议 权威发布机构 来源链接 以太网 (Ethernet) IEEE 802.3 https://standards.ieee.org IPv4、IPv6 IETF RFC 系列 https://www.rfc-editor.org TCP/UDP IETF RFC 系列 https://www.rfc-editor.org —
如果你需要,我可以为你提供:
✅ 这些协议头部的详细字段解释
✅ 整理成 PDF/Word/Markdown 技术文档
✅ 画出以太网 → IP → TCP 的完整分层结构图
✅ 提供抓包示例(Wireshark)与解析方法 -
数据包修改: 捕获的数据包可以被修改,允许修改任何层次(如 IP 地址、端口、TCP 标志位等)。
-
数据包重定向: 修改后的数据包可以重新定向到另一个目标地址。
-
网络流量过滤: 通过配置不同的过滤器,WinDivert 允许只捕获特定类型的数据包。例如,用户可以设置过滤器,只捕获特定端口的 TCP 流量。
相关文档:
-
WinDivert API 文档: 这部分文档描述了 WinDivert 提供的 API 函数,如何使用它们来拦截、修改、重定向和丢弃数据包。
-
WinDivert 数据包过滤器: WinDivert 支持使用过滤表达式来指定捕获的网络流量,类似于
tcpdump或Wireshark的过滤器。
3. 技术细节和实现
WinDivert 使用了 Windows 的 NDIS (Network Driver Interface Specification) 和 Windows Filtering Platform (WFP) 来进行网络流量捕获与修改。WFP 是 Microsoft 提供的一个框架,用于在网络栈的多个层次进行网络流量过滤和操作。WinDivert 基于 WFP 实现了高效的包拦截和修改能力。
-
WFP (Windows Filtering Platform): WFP 提供了一套机制,允许开发者在网络栈的各个层次进行数据包过滤和操作。WinDivert 利用 WFP 拦截进出计算机的网络数据包。
- WFP 官方文档: Windows Filtering Platform Documentation
4. WinDivert 协议与应用领域
WinDivert 提供的网络拦截和重定向功能,适用于以下应用领域:
- 网络监控和分析: 用于捕获和分析网络数据包,诊断网络问题。
- 调试与测试: 开发人员可以用它来测试应用程序的网络功能,通过修改数据包来模拟各种网络场景。
- 安全工具: 在安全研究中,WinDivert 可用于开发防火墙、入侵检测系统(IDS)和恶意软件分析工具。
- VPN 和代理工具: WinDivert 允许开发者实现自己的虚拟专用网络(VPN)或代理服务器,通过拦截和重定向数据包来实现流量加密或重定向。
5. WinDivert 相关技术
-
NDIS (Network Driver Interface Specification): NDIS 是 Windows 中的一个网络驱动接口规范,它允许 WinDivert 与 Windows 网络栈进行交互。
-
Windows Network Stack: 了解 Windows 网络栈的基本工作原理,WinDivert 在内核中操作数据包流量。
6. WinDivert 相关开源工具和资源
-
Wireshark: 虽然 WinDivert 不是 Wireshark 的一部分,但它可以与 Wireshark 一起使用来捕获和分析网络流量。
-
Nmap: 与 WinDivert 配合使用时,Nmap 可以用来扫描网络流量,并结合 WinDivert 对数据包进行修改。
WinDivert 是一个强大的 Windows 网络包拦截工具,适用于多种网络调试、安全研究和虚拟化应用场景。它通过 Windows Filtering Platform 和 NDIS 提供了高效的网络流量捕获和修改能力。其文档、源代码和技术细节可通过其 GitHub 页面和相关的 WFP 和 NDIS 文档获得。WinDivert 的应用范围从简单的网络监控到复杂的安全分析、VPN 构建等都得到了广泛的使用。
Windows Packet Divert(WinDivert)是一个适用于Windows 10、Windows 11和Windows Server的用户模式数据包捕获和重定向工具。
WinDivert 允许用户模式应用程序捕获/修改/丢弃发送到/从 Windows 网络堆栈的网络数据包。总之,WinDivert 可以:
- 捕获网络数据包
- 过滤/丢弃网络数据包
- 嗅探网络数据包
- 重新注入网络数据包
- 修改网络数据包
WinDivert 可用于实现用户模式数据包过滤器、数据包嗅探器、防火墙、NAT、VPN、隧道应用程序等。
WinDivert 的主要特点包括:
- 数据包拦截、嗅探或丢弃模式
- 支持回环(本地主机)流量
- 完整的 IPv6 支持
- 网络层支持
- 简单而强大的 API
- 高级过滤语言
- 过滤优先级
- 静默安装
- 在 GNU Lesser General Public License(LGPL)条款下免费提供
详细文档和示例可参考以下链接:
- WinDivert 参考手册:WinDivert 2.2
- WinDivert README
- WinDivert 变更日志
- WinDivert 常见问题解答
- WinDivert 2.2 示例应用程序,包括流跟踪、简单数据包捕获和转储、简单防火墙应用程序、具有多线程的基本 WinDivert 应用程序框架、套接字操作转储、将 TCP 流重定向到本地代理服务器、简单 URL 黑名单过滤器等。
源代码托管在 GitHub 上:https://github.com/basil00/Divert
下载WinDivert 的源代码和二进制包请参考以下链接:
- WinDivert-2.2.2-Source.zip(源代码压缩包)
- WinDivert-2.2.2-A.zip(二进制包)
注意事项:
- WinDivert A/B/C 变体除了驱动签名外是相同的。对于大多数应用程序来说,使用哪个变体并不重要。
- 商业用户应尽可能使用自己的证书对驱动程序进行签名。
- 要使用 WinDivert,请确保应用程序具有管理员特权,否则 WinDivert 将无法加载。
还有一些项目使用了 WinDivert,如 ReQrypt、TcpCrypt、Suricata、GoodbyeDPI 等。这些项目均使用 WinDivert 来实现各种功能,例如 HTTP 请求隧道、网络流量加密、网络威胁检测等。

浙公网安备 33010602011771号