代理软件工作逻辑

用户输入
https://www.google.com


getaddrinfo("www.google.com")

hosts 命中

得到 8.8.8.8

TCP connect(8.8.8.8:443)

TLS ClientHello
SNI = www.google.com

WFP/TUN 代理解析 SNI

匹配规则:google.com → Proxy

阻止原始直连(或接管连接)

建立到代理服务器的连接

CONNECT www.google.com:443
或 SOCKS5(DOMAIN)

代理服务器解析 DNS

建立到真实 Google 服务器的 TLS 连接


Application

Winsock

AFD.sys

TCPIP.sys

WFP Callout

NDIS

NIC


Chrome

getaddrinfo()/hosts/DNS

得到目标 IP

TCP 三次握手

Client Hello(明文)

SNI = www.google.com

┌─────────────────────────────────┐
│ WFP Callout / TUN Driver 截获数据包 │
│ │
│ ① 判断是否 TLS │
│ ② 解析 Client Hello │
│ ③ 提取 SNI │
│ ④ 域名规则匹配 │
│ ⑤ Direct / Proxy / Block │
└─────────────────────────────────┘

转发到目标服务器


用户态 (User Mode)
──────────────────────────────────────────────

应用程序
Chrome
QQ
微信
curl
浏览器

│ socket()
│ connect()
│ send()

ws2_32.dll
(Winsock API)


│ 系统调用(System Call)

================ 用户态 / 内核态分界 =================

内核态 (Kernel Mode)

AFD.sys
(Ancillary Function Driver)

TCPIP.sys
(TCP/IP协议栈)

WFP
(Windows Filtering Platform)

NDIS

网卡驱动

网卡


应用程序

Winsock

AFD.sys

TCPIP.sys

==========================
Windows Filtering Platform
==========================

WFP Callout Driver(你开发)

NDIS

网卡驱动


组件 用户态/内核态 作用
应用程序(Chrome、QQ) 用户态 发起网络请求
ws2_32.dll(Winsock API) 用户态 提供 socket()connect()send()recv() 等 Socket 接口
AFD.sys 内核态 将 Winsock 请求转换为内核网络 I/O,管理 Socket
tcpip.sys 内核态 Windows TCP/IP 协议栈,实现 TCP、UDP、IP 等协议
WFP(Windows Filtering Platform) 内核态 网络包过滤、重定向、代理、VPN、防火墙等功能
NDIS 内核态 网卡驱动框架,与物理网卡交互

Winsock(用户态)负责"应用如何发起网络请求",AFD.sys(内核态)负责"把 Socket 请求交给 TCP/IP",tcpip.sys 负责协议处理,而 WFP 则负责在数据包真正收发过程中进行过滤、重定向和代理。

版权声明:本文内容由互联网用户撰写,该文观点仅代表作者本人。本站爱分享仅提供分享服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请立马联系本站,本站将立刻删除。
THE END
分享
二维码
< <上一篇
下一篇>>
文章目录
关闭