一次网页访问发生了什么?从 DNS、TCP、TLS 到代理分流的网络连接原理
在浏览器输入网址到页面打开,中间发生了什么?本文按步骤讲解 DNS 解析、TCP 三次握手、TLS 加密握手与 HTTP 请求,再说明开启代理后流量如何被规则分流、DNS 在哪里解析,以及系统代理与 TUN 模式的区别。

直接回答
一次网页访问分四步:DNS 把域名解析成 IP 地址;TCP 三次握手建立连接;TLS 握手协商加密;最后发送 HTTP 请求并接收页面。开启代理后,客户端会先按规则判断这个请求走直连还是代理:走代理时,请求被加密封装发送到节点,由节点完成后续连接与解析,再把结果传回。系统代理只接管遵守代理设置的程序,TUN 模式通过虚拟网卡接管全部流量。
理解网络连接的基本过程,能帮你看懂很多现象:为什么延迟高时网页“转圈”很久、为什么有的网站开代理也打不开、为什么需要 TUN 模式。本文用一次普通的网页访问,把整个过程拆开讲。
第一步:DNS 解析——把域名翻译成 IP
你在浏览器输入 www.example.com,但网络通信需要的是 IP 地址。于是:
- 浏览器和系统先检查本地缓存,看看最近是否解析过;
- 没有缓存时,向 DNS 服务器(通常是运营商提供的)发出查询;
- DNS 服务器逐级查询,最终返回该域名对应的 IP 地址。
如果 DNS 返回了错误的 IP,后续所有步骤都会失败——这也是为什么代理客户端要专门处理 DNS。
第二步:TCP 三次握手——建立连接
拿到 IP 后,浏览器与服务器建立 TCP 连接:
- 浏览器发送 SYN:“我想和你建立连接”;
- 服务器回复 SYN-ACK:“收到,我也准备好了”;
- 浏览器发送 ACK:“好,开始吧”。
这一步需要一个完整的往返时间(RTT)。延迟越高,握手越慢,这就是延迟影响网页打开速度的原因之一。
第三步:TLS 握手——协商加密
现在的网站几乎都使用 HTTPS。在传输内容之前,双方要进行 TLS 握手:
- 浏览器告诉服务器自己支持的加密方式,并在 SNI 中说明要访问的域名;
- 服务器出示证书,证明“我就是这个网站”;
- 双方协商出本次会话的加密密钥。
TLS 1.3 把握手压缩到一个往返,进一步加快了连接速度。握手完成后,传输的内容对中间设备不可读。
第四步:HTTP 请求与响应
连接和加密都就绪后,浏览器发送 HTTP 请求(例如“GET 首页”),服务器返回 HTML,浏览器再继续请求图片、样式、脚本等资源,最终渲染出完整页面。
开启代理后,发生了什么变化?
以 Clash 等机场客户端为例,流程变为:
1. 规则匹配:走直连还是走代理?
客户端拦截到请求后,根据分流规则从上到下匹配:
- 命中“国内域名 / 国内 IP”规则 → 直连,和上面四步完全一样;
- 命中“海外服务”规则 → 走代理,交给你选择的节点;
- 命中“广告”规则 → 拦截。
这就是机场与全局 VPN 最大的区别,详见《VPN 和机场有什么区别》。
2. DNS 在哪里解析?
如果请求要走代理,最好不要在本地解析域名,否则可能得到不准确的结果,或暴露访问记录。Clash 的 fake-ip 模式会先返回一个虚拟 IP 让程序继续运行,实际的域名随代理请求一起交给节点,由节点在远端解析。
3. 封装与转发
客户端把请求用代理协议(Shadowsocks、Trojan、VLESS 等)加密封装,发送到节点。节点解开后,代替你完成与目标网站的 TCP、TLS 连接与 HTTP 请求,再把响应加密传回。协议区别见《什么是 VLESS、Trojan 与 Hysteria2》。
4. 为什么代理会增加延迟?
数据多走了一段“你 → 节点”的路程,所以每次握手的往返时间变长。节点越近、线路越好(如 IEPL 专线),增加的延迟越少。
系统代理与 TUN 模式
| 对比项 | 系统代理 | TUN 模式 |
|---|---|---|
| 工作方式 | 在系统设置中指定代理地址 | 创建虚拟网卡,修改路由 |
| 覆盖范围 | 遵守系统代理设置的程序(浏览器等) | 设备上几乎所有流量 |
| 典型问题 | 游戏、命令行工具可能不走代理 | 需要管理员权限或安装服务 |
| 适合 | 日常浏览 | 游戏、开发工具、全局接管 |
手机上的“VPN 开关”本质上也是一种 TUN:系统只允许通过 VPN 接口接管流量,所以机场客户端会创建本地 VPN 接口,再把流量交给代理协议处理。
用原理解释常见现象
| 现象 | 原因 |
|---|---|
| 延迟高时网页转圈很久 | DNS、TCP、TLS 每一步都要等往返 |
| 开了代理国内网站变慢 | 用了全局模式,国内流量也绕道海外 |
| 浏览器能用、游戏不行 | 游戏不读取系统代理,需要 TUN 模式 |
| 节点全部超时 | 订阅失效、系统时间错误导致 TLS 失败等 |
| 某些网站打开错误页面 | 本地 DNS 解析结果不准确 |
总结
一次网页访问 = DNS 解析 → TCP 握手 → TLS 握手 → HTTP 请求。代理在这条链路的最前面加了一步“规则匹配”,并把需要代理的请求交给远端节点完成。理解这条链路,排查网络问题时就能快速定位是哪一步出了问题。更多排查方法见《机场节点延迟高怎么办》。
常见问题
为什么打开网页之前要先 DNS 解析?
网络通信依靠 IP 地址,而人们记住的是域名。DNS 就像通讯录,把 example.com 这样的域名翻译成服务器的 IP 地址。
开了代理后,DNS 在哪里解析?
取决于客户端设置。以 Clash 的 fake-ip 模式为例,本地先返回一个虚拟 IP,真实的域名会交给代理节点在远端解析,从而避免本地解析结果不准确或泄露访问记录。
系统代理和 TUN 模式有什么区别?
系统代理是在操作系统中设置一个代理地址,只对遵守该设置的程序(如浏览器)有效;TUN 模式创建虚拟网卡接管全部流量,能覆盖游戏、命令行等不读取系统代理的程序。
为什么建立连接这么多步骤,网页还能很快打开?
每一步通常只需要几十毫秒,而且浏览器会复用连接、缓存 DNS 结果,TLS 1.3 也减少了握手往返次数,所以整体仍然很快。延迟越低,这些步骤越快。



