代理工作原理:一次请求的完整路径
把一次请求拆开看,后面的配置、排错都会更好理解。
代理工作原理可以一句话概括:程序把请求交给本地客户端,客户端按规则决定走代理还是直连,走代理时用协议封装后发给远端节点,节点再去访问目标网站,把结果原路返回。
把"代理"放进你熟悉的场景里理解
你可以把代理想象成一位"代办人"。平时,你直接去办事(直连);用代理时,你把要办的事交给代办人,由他替你去办,再把结果带回来。代办人所在的位置、他走的路线、他和你之间的沟通方式(协议),都会影响事情办得快不快、稳不稳。你的客户端,就是那个负责判断"哪件事交给代办人、哪件事自己办"的助手——它根据规则,把每一次请求分别处理。
这个比喻有助于理解几个常见现象:为什么代办人太忙(节点负载高)时会变慢;为什么你和代办人之间的沟通方式(协议)需要双方都懂;为什么助手的判断标准(规则)写错了,会出现"该交的没交、不该交的交了"。理解了这些,排错时你就不会把所有问题都当成"连不上"。
一次请求的六个环节
程序发出请求
浏览器或应用访问一个域名,请求被交给系统代理或 TUN 虚拟网卡。
客户端接管
本地客户端监听一个端口(例如混合端口),收到请求。
解析与分流
客户端按 DNS 设置解析域名,再自上而下匹配规则,决定走哪个策略:直连、代理或拒绝。
协议封装
决定走代理后,请求按节点的协议(VLESS、Trojan 等)和传输方式封装并加密。
节点转发
远端节点收到后解封装,替你去访问目标网站。
结果返回
目标网站的响应沿原路返回客户端,再交给程序。
每个环节可能出什么问题
代理不等于"改变一切"
代理只处理经过它的流量。没有被接管的程序、被规则判定为直连的连接,都不会经过节点。理解了这一点,就能解释为什么"打开了客户端,某个软件却没走代理"。
本地端口:HTTP、SOCKS 与 mixed
客户端启动后,会在本机监听一个或几个端口,程序把请求交给这些端口,客户端再决定怎么处理。HTTP 端口接收 HTTP 代理协议的请求,SOCKS 端口接收 SOCKS 协议的请求,mixed 端口则同时识别两种,所以最常见的配置是只开一个 mixed 端口,系统代理也指向它。理解这一点有助于排查"为什么有的程序走了代理、有的没走":程序要么被系统代理设置指向这个端口,要么自己在设置里手动填写这个端口,要么根本不知道这个端口,只能靠 TUN 接管。
为什么浏览器和终端的表现不一样
浏览器通常会读取系统代理设置,所以打开系统代理后它就会走客户端;终端里的命令行工具大多不读取系统代理,而是依赖环境变量或工具自己的代理设置,因此同样一台电脑上,浏览器能访问、终端里的下载却失败,是非常典型的现象。解决思路有三种:给工具单独配置代理地址、设置对应的环境变量,或者用 TUN 模式让所有程序的流量都被接管。
加密发生在哪一段
从你的设备到节点这一段,请求被协议封装并加密,沿途的网络设备只能看到你在和节点通信;从节点到目标网站这一段,则取决于你访问的网站本身是否使用 HTTPS。换句话说,代理保护的是第一段,并不会把第二段也自动变成加密。这也是为什么,即便使用了代理,仍然应该优先访问使用 HTTPS 的网站,并且不要在不信任的页面里输入敏感信息。
影响实际体验的四个因素
| 因素 | 它影响什么 | 怎么观察 |
|---|---|---|
| 本地网络质量 | 整体的延迟与稳定性 | 先测不走代理的直连作基线 |
| 节点所在地与线路 | 到目标网站的路径长短 | 对比同一订阅里不同地区节点 |
| 节点负载 | 带宽与排队情况 | 换时段、换节点对比 |
| 协议与配置 | 连接建立方式与兼容性 | 换协议、检查字段是否匹配 |
一次请求里,你能在哪里"观察"到问题
| 环节 | 怎么观察 | 常见线索 |
|---|---|---|
| 接管 | 连接页面是否出现新连接 | 没有连接记录,说明没进入客户端 |
| 分流 | 连接记录里的规则与策略 | 命中了直连,而你期望走代理 |
| 节点 | 节点延迟与连接状态 | 握手超时或认证失败 |
| 目标 | 更换节点或网络对比 | 只有特定网站不通,其他正常 |
在每个环节都有对应的观察方式,这是排错的基础:不要一上来就换节点或重装客户端,而是先确定问题出现在哪个环节。
如果你想先弄清"机场"和"代理"这两个词的关系,可以看机场代理是什么意思,那一页用大白话做了对照。
关于「代理工作原理」的常见问题
代理会让我所有的数据都变安全吗?
不会。它只加密客户端到节点这一段,节点以后的链路、目标网站的安全性和你自己账号的安全都不在它的范围内。
代理和 VPN 在技术上有什么区别?
一个常见的区分是:代理通常工作在应用层,由客户端按连接转发;VPN 通常在网络层建立一个虚拟网络,接管整台设备的流量。实际产品里两者的边界很模糊,TUN 模式就让代理客户端具备了类似 VPN 的接管能力。
代理是怎么工作的?
客户端接管本机发出的请求,按规则决定直连还是转发;转发时把数据封装后交给节点服务器,服务器再替你访问目标网站,并把结果原路返回。链路上每一环出问题,表现都不一样。