<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Web Performance on 飞鸽跳转</title><link>https://feige301.com/zh-cn/categories/web-performance/</link><description>Recent content in Web Performance on 飞鸽跳转</description><generator>Hugo</generator><language>zh-CN</language><lastBuildDate>Mon, 02 Feb 2026 19:34:12 +0800</lastBuildDate><atom:link href="https://feige301.com/zh-cn/categories/web-performance/index.xml" rel="self" type="application/rss+xml"/><item><title>UDP的逆袭：QUIC协议与 HTTP/3</title><link>https://feige301.com/zh-cn/posts/2026/2026/udp-renaissance-quic-http3-anti-hijacking-connectivity.html</link><pubDate>Mon, 02 Feb 2026 19:34:12 +0800</pubDate><guid>https://feige301.com/zh-cn/posts/2026/2026/udp-renaissance-quic-http3-anti-hijacking-connectivity.html</guid><description>&lt;p>伴随互联网技术进步的，会有日益复杂的网络环境和层出不穷的连接挑战。今天，我想和大家聊聊一个曾经被视为“不可靠”的协议——UDP，是如何在QUIC协议的加持下，实现了一场华丽的逆袭，并为我们应对“区域性网络封锁”、“ISP劫持”等难题提供了新的思路。&lt;/p>
&lt;h3 id="问题的背景传统协议的困境与用户痛点">
 问题的背景：传统协议的困境与用户痛点
 &lt;a class="anchor" href="#%e9%97%ae%e9%a2%98%e7%9a%84%e8%83%8c%e6%99%af%e4%bc%a0%e7%bb%9f%e5%8d%8f%e8%ae%ae%e7%9a%84%e5%9b%b0%e5%a2%83%e4%b8%8e%e7%94%a8%e6%88%b7%e7%97%9b%e7%82%b9">#&lt;/a>
&lt;/h3>
&lt;p>在互联网的世界里，我们对速度和稳定性的追求永无止境。然而，当我们尝试访问一个全球性的“高并发商业站点”或“数字娱乐平台”时，却常常会遇到一些令人沮丧的问题：页面加载缓慢、图片无法显示，甚至连接中断。这背后，往往是复杂的网络环境在作祟。&lt;/p>
&lt;p>传统的互联网通信基石是TCP/IP协议栈。TCP（传输控制协议）以其可靠性著称，通过三次握手建立连接，确保数据按序、完整地送达。然而，这种可靠性也带来了固有的开销。每一次连接建立、每一次数据包丢失后的重传，都需要额外的往返时间（Round-Trip Time, RTT）。在网络延迟较高或丢包率不稳定的“特定网络区域”，这些开销会被放大，导致用户体验显著下降。&lt;/p>
&lt;p>更深层次的挑战来自网络中的“中间设备”和“DPI（深度包检测）设备”。这些设备在网络路径中扮演着流量网关的角色，它们能够识别、分析甚至干预网络流量。由于TCP和TLS（传输层安全协议）的握手过程具有相对固定的模式和可识别的特征，这些“中间设备”可以根据预设的规则对流量进行精细化管理，有时甚至会导致“ISP劫持”或无意的“区域性网络封锁”。例如，某些“局部局域网环境”可能会对特定协议或端口进行限制，导致合法的业务流量无法顺畅传输。&lt;/p>
&lt;p>对于网站管理员、运维人员和开发者而言，这些问题直接转化为用户流失、业务受损的痛点。他们迫切需要一种更高效、更健壮、更难以被干扰的通信协议，来保障网站的全球可达性和用户体验。正是在这样的背景下，QUIC协议和HTTP/3应运而生。&lt;/p>
&lt;h3 id="tcpip协议栈的传统困境为何我们需要变革">
 TCP/IP协议栈的传统困境：为何我们需要变革？
 &lt;a class="anchor" href="#tcpip%e5%8d%8f%e8%ae%ae%e6%a0%88%e7%9a%84%e4%bc%a0%e7%bb%9f%e5%9b%b0%e5%a2%83%e4%b8%ba%e4%bd%95%e6%88%91%e4%bb%ac%e9%9c%80%e8%a6%81%e5%8f%98%e9%9d%a9">#&lt;/a>
&lt;/h3>
&lt;p>要理解QUIC的价值，我们首先需要回顾一下传统TCP和HTTP/2所面临的挑战。&lt;/p>
&lt;ol>
&lt;li>
&lt;p>&lt;strong>TCP的队头阻塞（Head-of-Line Blocking）&lt;/strong>
TCP协议在传输数据时，为了保证可靠性和顺序性，会把所有数据流看作一个整体。如果一个数据包在传输过程中丢失，即使它后面的数据包已经到达，也必须等待丢失的包被重传并成功接收后，才能向上层应用交付。这就好比一条单车道，如果前面一辆车抛锚了，后面所有的车都得停下来等待，这就是“队头阻塞”。在HTTP/2中，虽然引入了多路复用，允许在同一TCP连接上同时发送多个请求和响应，但底层的TCP协议仍然存在队头阻塞问题。这意味着，如果一个HTTP/2流的数据包丢失，会阻塞该TCP连接上的所有其他HTTP/2流。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>冗长的连接建立过程&lt;/strong>
一个典型的HTTPS连接需要经历两个串行的握手过程：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>TCP三次握手：&lt;/strong> 客户端和服务器需要进行三次消息交换才能建立TCP连接。这至少需要一个RTT。&lt;/li>
&lt;li>&lt;strong>TLS握手：&lt;/strong> 在TCP连接建立之后，还需要进行TLS握手，以协商加密参数、交换证书和密钥。这通常需要两个RTT（对于TLS 1.2）或一个RTT（对于TLS 1.3）。
这意味着，一个全新的HTTPS连接，在真正传输应用数据之前，可能就需要消耗2到3个RTT。在网络延迟较高的场景下，这会显著增加页面的首次加载时间（TTFB, Time To First Byte）。&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>连接迁移的复杂性&lt;/strong>
传统的TCP连接由四元组（源IP、源端口、目的IP、目的端口）唯一标识。当用户从Wi-Fi切换到蜂窝网络时，其IP地址会发生变化，导致TCP连接中断，需要重新建立所有连接。这对于移动设备用户来说，意味着中断和延迟。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>对中间设备的可见性与脆弱性&lt;/strong>
TCP和TLS协议的报文结构相对固定，握手过程也具有明显的特征。这使得“DPI设备”可以很容易地识别出TLS握手、HTTP请求等信息。虽然TLS加密了应用数据，但它并不能完全隐藏连接的元数据（如服务器名称指示SNI）。在某些“流量网关”或“中间设备”的配置下，这些可识别的特征可能被用于进行“区域性网络封锁”或“ISP劫持”，从而干扰正常的网络通信。&lt;/p>
&lt;/li>
&lt;/ol>
&lt;p>这些固有的问题，使得我们急需一种全新的传输协议来打破僵局。&lt;/p>
&lt;h3 id="udp被低估的潜力">
 UDP：被低估的潜力
 &lt;a class="anchor" href="#udp%e8%a2%ab%e4%bd%8e%e4%bc%b0%e7%9a%84%e6%bd%9c%e5%8a%9b">#&lt;/a>
&lt;/h3>
&lt;p>长期以来，UDP（用户数据报协议）在传输层中常被视为TCP的“简化版”或“不可靠版”。它不建立连接、不保证数据顺序、不进行重传，因此被广泛应用于对实时性要求高但对少量丢包不敏感的场景，如在线游戏、音视频流媒体和DNS查询。&lt;/p>
&lt;p>然而，正是UDP的这些“缺点”，在特定场景下却蕴含着巨大的潜力：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>无连接性：&lt;/strong> 没有繁琐的握手过程，可以直接发送数据，减少了延迟。&lt;/li>
&lt;li>&lt;strong>轻量级：&lt;/strong> 协议开销小，传输效率高。&lt;/li>
&lt;li>&lt;strong>灵活性：&lt;/strong> 由于UDP不负责可靠性，上层应用可以根据自身需求，在UDP之上构建定制化的可靠性机制，从而实现更精细的控制。&lt;/li>
&lt;/ul>
&lt;p>这种灵活性，正是QUIC协议能够大展拳脚的舞台。QUIC没有试图“修复”TCP，而是选择在UDP之上，重新构建一套完整的、面向流的、可靠且安全的传输协议。它充分利用了UDP的轻量和无连接特性，同时又在应用层实现了TCP所提供的所有可靠性、拥塞控制和安全性功能，甚至做得更好。&lt;/p>
&lt;h3 id="quic协议的诞生与核心创新">
 QUIC协议的诞生与核心创新
 &lt;a class="anchor" href="#quic%e5%8d%8f%e8%ae%ae%e7%9a%84%e8%af%9e%e7%94%9f%e4%b8%8e%e6%a0%b8%e5%bf%83%e5%88%9b%e6%96%b0">#&lt;/a>
&lt;/h3>
&lt;p>QUIC（Quick UDP Internet Connections）协议最初由Google开发，旨在解决TCP和TLS在HTTP/2中存在的性能瓶颈。经过多年的实践和标准化，它已成为IETF（互联网工程任务组）的正式标准，并作为HTTP/3的基础传输协议。&lt;/p>
&lt;p>QUIC的核心创新点在于：&lt;/p>
&lt;ol>
&lt;li>
&lt;p>&lt;strong>0-RTT/1-RTT连接建立：&lt;/strong>
QUIC将TCP的连接建立和TLS的握手过程融合在一起。对于首次连接，它只需要一个RTT即可完成加密和传输层的握手，比TLS 1.3 over TCP快了一个RTT。更令人兴奋的是，对于后续连接，如果客户端之前与服务器建立过QUIC连接，并且服务器的加密配置没有改变，客户端甚至可以在发送第一个数据包时就携带应用数据，实现&lt;strong>0-RTT&lt;/strong>（零往返时间）连接恢复。这就像你第一次去酒店需要办理入住手续，但之后你有了房卡，下次直接刷卡进门一样便捷。这种极致的低延迟，对于提升“高并发商业站点”的加载速度至关重要。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>多路复用无队头阻塞（Multiplexing without Head-of-Line Blocking）：&lt;/strong>
QUIC在单个UDP连接上实现了多路复用，但与HTTP/2 over TCP不同的是，QUIC的流是独立的。如果一个流的数据包丢失，只会影响该流的传输，而不会阻塞同一连接上的其他流。这就像多条独立的快递通道，即使其中一条通道因为某个包裹丢失而暂停，其他通道上的包裹仍然可以继续派送，互不影响。这彻底解决了TCP的队头阻塞问题，在丢包率较高的网络环境下，能显著提升性能。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>连接迁移（Connection Migration）：&lt;/strong>
QUIC连接的标识符是一个Connection ID，而不是传统的IP地址和端口号四元组。这意味着，当客户端的IP地址或端口发生变化时（例如，从Wi-Fi切换到蜂窝网络），QUIC连接可以无缝地迁移，而无需重新建立连接。这对于移动用户来说，是极大的福音，能够提供更流畅、不中断的网络体验。同时，这也使得“ISP劫持”等基于IP/端口的传统劫持手段更难奏效。&lt;/p></description></item></channel></rss>