应用层通用 Web 隧道 · 200 Connection Established · 系统全局与终端代理基石
基于 IETF RFC 2817 与 RFC 9110 标准化的 HTTP CONNECT 隧道代理机制[1]。 允许客户端指示代理服务器与目标服务器建立一条端到端的不透明双向 TCP 通道, 是整个现代万维网安全访问 HTTPS 资源的核心基础,也是操作系统全局代理与开发终端环境变量(http_proxy)的最通用承载者[2]。
IETF 在 HTTP/1.1 规范中正式定义 CONNECT 方法,用于请求网关切换为盲目双向透明 TCP 管道。
发布 RFC 2817,正式规范客户端如何利用 CONNECT 穿透企业代理并建立安全的端到端 HTTPS 会话。
发布最新的核心标准 RFC 9110,在第 9.3.6 节系统性重构和标准化 CONNECT 隧道的生命周期与响应行为。
编写口径:所有时间节点严格以 IETF 官方 RFC 文档发布日期为权威依据。
在 Web 诞生的最初几年,HTTP 代理服务器充当的是内容缓存与明文请求转发的角色(如针对 GET、POST 请求做就近缓存)。 然而随着全网对数据安全与端到端加密的诉求提升,HTTPS(HTTP over TLS)迅速普及。 由于代理服务器无法、也不应该解密用户的加密会话,传统的明文代理模式遭遇了根本性失效。
为了在保护加密完整性的同时允许企业与个人跨越网关, IETF 在 RFC 2616 与 RFC 2817 中正式确立了 CONNECT 方法[2]: 客户端向代理服务器发出一条纯文本的指令 CONNECT example.com:443 HTTP/1.1, 代理服务器连接目标后,返回 HTTP/1.1 200 Connection Established 状态码。 从那一刻起,该 TCP 连接退化为一个盲目的、不透明的原始字节流管道, 客户端与目标服务器在管道内直接展开 TLS 握手并传输加密数据[1]。
HTTP CONNECT 代理是现代计算机网络中兼容性最高、渗透最深的基础设施机制。 尽管因其握手头部包含明文 ASCII 域名而绝对不能在跨境公网裸跑, 但它与 SOCKS5 共同构成了现代所有翻墙客户端在本机向系统暴露的不可或缺的双重入站接口。
CONNECT authority HTTP/1.1, 可选携带 Proxy-Authorization: Basic [Base64] 头进行代理鉴权[1]。CONNECT api.github.com:443 HTTP/1.1\r\nHost: api.github.com:443\r\n\r\n。HTTP/1.1 200 Connection Established\r\n\r\n。HTTP CONNECT 握手首行包含了纯文本的目标主机名与端口。 如果将未加密的 HTTP 代理直接部署在海外服务器并供国内访问,GFW 的深度包检测设备可以在几微秒内读取 CONNECT 首行, 对未备案域名或受阻断目标直接注入虚假 TCP RST 并将服务端 IP 列入临时黑名单。
以下时间线记录了 HTTP CONNECT 机制从 1999 年 HTTP/1.1 提出、TLS 隧道标准化、HTTP/2 多路复用扩展到现代 RFC 9110 的历史全景:
在 HTTP/1.1 规范中正式收录 CONNECT 方法,允许客户端向代理服务器发起端到端 TCP 隧道请求。
IETF RFC 2616 §9.9 CONNECT规范了客户端通过 CONNECT 与远端服务器协商 TLS 的完整生命周期,使 HTTPS 能够穿透任何企业防火墙与代理。
IETF RFC 2817 规范文件在二进制分帧的 HTTP/2 中扩展 CONNECT,允许在单一 TCP 连接上并发开辟多个独立的隧道流。
IETF RFC 7540: HTTP/2 规范通过在本地同一端口兼顾 SOCKS5 与 HTTP CONNECT,终端用户仅需配置一次 http_proxy 即可接管所有开发环境。
Clash 项目历史架构演进替代历史 RFC 7231,在第 9.3.6 节系统性重写 CONNECT 隧道的权威语义规范与错误处理准则。
IETF RFC 9110 官方规范MASQUE 工作组将 CONNECT 语义从纯 TCP 字节流正式推广到 UDP 数据报中继,开启下一代现代代理新纪元。
IETF RFC 9298 (CONNECT-UDP)HTTP CONNECT 享有现代 Web 体系最高级别的通用性,所有命令行工具与浏览器皆原生内置支持。
| 软件 / 内核 | 类型 | 支持平台 | 支持级别 | 起始版本 | 发布日期 | 特性说明 |
|---|---|---|---|---|---|---|
| 全平台主流浏览器 (Chrome / Safari / Firefox) | 客户端 | Windows, macOS, Linux, iOS, Android | 官方原生支持 | 全版本内置 | 1999.06.01 | 操作系统网络设置中的“HTTP / HTTPS 代理”均无一例外采用标准的 CONNECT 隧道。 |
| cURL / Git / Wget | 客户端 | 全平台开发环境 | 官方原生支持 | 全版本内置 | 1998.03.20 | 通过 http_proxy / https_proxy 环境变量天然继承并使用 HTTP CONNECT 隧道发起请求。 |
| Mihomo (Clash Meta) | 核心内核 | 全平台 | 官方参考入站 | v1.0.0+ | 2022.01.15 | 本地混合端口同时支持 HTTP CONNECT 与 SOCKS5,智能识别首包并按规则分流。 |
| sing-box | 核心内核 | 全平台 | 官方参考入站 | v1.0.0+ | 2022.07.18 | 极低内存占用的原生 HTTP 代理入站实现,支持 Basic 鉴权与精准流量嗅探。 |
| Squid Caching Proxy | 核心内核 | Linux, Unix, BSD | 经典企业级代理 | 2.0+ | 1998.07.28 | 全球部署最广泛的企业前置代理服务器,具备详尽的 CONNECT 访问控制列表(ACL)控制。 |
终端开发环境变量:在终端中执行 export http_proxy=http://127.0.0.1:7890,令 Git、npm、pip、Homebrew 一键翻墙; 操作系统全局网络代理:Windows、macOS 与 GNOME 的图形化代理设置主要依赖 HTTP / HTTPS 代理标准; 老旧系统与轻量脚本:很多极简嵌入式环境或 Python 脚本原生不包含 SOCKS5 库,但 100% 支持 HTTP CONNECT。
原生不支持 UDP 数据报:传统 HTTP CONNECT 只能承载 TCP 流,无法中继在线语音、FPS 电竞加速等 UDP 流量; 明文 ASCII 严禁公网直连:绝对不可在海外云服务器上裸跑开放 8080 端口给境内直连,会在数秒内被深度包检测拦截; 代理泄露与鉴权安全:明文 HTTP 代理如果开放公网且缺乏复杂强密码鉴权,会迅速被全网扫描器发现并沦为肉鸡爬虫中继。
词条事实与技术定义均以 IETF RFC 官方文献与 W3C 规范为准: