想象一个连资深工程师都会困惑的场景。你直接在浏览器中打开一个网站,在开发者面板里看到醒目的h2——连接走的是HTTP/2。然后你让同一个请求经过代理,却惊讶地发现服务器用老掉牙的HTTP/1.1回应。第二版协议去哪了?为什么代理像是把你带回了过去?最让人好奇的是:基于QUIC的HTTP/3,为什么就是不肯通过常见的代理,仿佛撞上了一堵无形的墙?

这篇文章是对代理环境下传输层的彻底剖析。我们不会涉及连接指纹或自动化检测的话题。我们的焦点是纯粹的机制:真正到达服务器的是什么,协议版本的协商在哪里发生,为什么UDP传输与经典代理不兼容,以及如何有意识地做出版本选择。读完本文,你将在这个主题上达到可以调试最复杂网络场景的水平。