Sukka 写前端、网络和基础设施时,习惯先把边界和代价摊开。把「HTTP/3:从 SPDY 到 QUIC | Sukka's Blog」整理成可落地的中文笔记:问题在哪、默认做法会踩什么坑、该怎么选。原站导航和广告已去掉。
硬币:HTTP/2 的正面和反面
在这之前,我用了三四千字写了一篇 HTTP/2 三大特性的介绍、以及讲述了如何将其用于更快速的递送静态资源,如果你还没有读过那篇「 静态资源递送:HTTP/2 和 Server Push 」的话,其实无伤大雅,反正我要把 HTTP/2 再总结一次。
HTTP/2 的多路复用使得只需要一个 TCP 连接、一股数据流就可以递送多个静态资源,在这基础上 HPACK 头部压缩技术使得在响应头上消耗的流量进一步减少。但是,HTTP/2 带来最深远的变革是,一个资源需要一个 TCP 连接的时代过去了。
快,造个新的轮子!
但是,HTTP/2 毕竟还是基于 TCP 的。丢包重传注定要面对「头部阻塞」。如果一个 TCP 连接中某个数据包丢失,那么整个 TCP 数据流必须暂停,丢失的数据包需要重新传输,然后数据流才能继续。在弱网环境下(想象一下宇宙射线、运营商 QoS、骨干网阻塞、部署不当的 4G 基站、打开了的微波炉都会导致数据包丢失),HTTP/2 的性能甚至不如 HTTP/1.1,因为 HTTP/2 只使用一个 TCP 连接,而在 HTTP/1.1 的年代人们会通过域名散列的方式同时使用六个连接、(暂时)没有受到丢包影响的 TCP 连接仍然可以继续传输数据。
坏消息是,现在互联网不是这么工作的。为了保证互联网的存在和工作,需要各式各样的设备:防火墙、NAT、路由器,还有一大堆其他的玩意。正是这些玩意组成了我们的互联网。互联网服务提供商(ISP)采购的设备有(很大的)可能支持常规的 TCP 和 UDP。除此以外,操作系统内核中关于网络栈的实现也需要一起更新。
UDP、TCP 或者,SCTP?
对那些组成互联网的设备全部进行更新换代、以及让一堆绞尽脑汁关闭 Windows Update 的用户升级他们的操作系统,这是一项耗时漫长、不切实际且几乎不可能完成的任务。
如果不能发明一个新的协议,那可以从 IETF 制定的 RFC 里碰碰运气、找找有没有符合要求的协议。一个想法是 HTTP 应该基于 SCTP —— 流控制传输协议,这一协议的相关规范由 RFC4960 制定。更棒的是,这个协议甚至还有现成的 UDP 实现(WebRTC)。但是:
拥抱 QUIC
当然,也有破坏性不那么大的、对现有的 TCP 进行改造的方案。 RFC7143 提出了 TCP Fast Open(一般被简称为 TFO),客户端在第一个 TCP SYN 报文中就可以包含有效数据。RFC7143 发布于 6 年前,但是对 TFO 提供兼容的操作系统和硬件仍然寥寥无几。而且似乎,针对 TFO 的 QoS 比 TFO 本身的发展还要快得多。
QUIC 不是什么缩写词(虽然它每个字母都是大写的)。QUIC 的意思就是 quick (有趣的事实,SPDY 的意思是 speedy ),目的是为了在 TLS 的基础上修补当时 SPDY(HTTP/2 的前身)未能解决的缺陷。
所以 QUIC 是从哪里来的?
正如其名,QUIC 在设计之初也是为了将数据更快的交付给最终用户。QUIC 在设计时允许在一个连接上建立两个独立平行的数据流,如果遭遇了丢包,只有某一个数据流需要暂停、而另一个数据流并不受影响。和依赖 TCP 三次握手加上 TLS 一次握手相比,QUIC 提供了 0-RTT 和 1-RTT 的握手,大大减少了协商建立新连接所需的时间;相比 TFO,QUIC 的「Early Data」在实现和使用上更加简便。
在保证快速的同时,QUIC 在设计时也强调了安全性。和 HTTP/2 不同(只有浏览器在实现 HTTP/2 时要求使用 HTTPS),QUIC 不被允许使用明文、所有握手和传输都需要加密,只有在进行加密协议协商时才会发送数个明文握手报文。
值得单独记下的点
- SCTP 在连接建立时需要协商并固定允许的数据流数量
落地时建议先做的 5 件事
- 用自己的流量和设备测,不要只抄厂商推荐最小配置。
- DNS、CDN、代理分流先画清 Fake IP 和 Real IP 的边界。
- 前端性能看 CLS、白屏和重复渲染,而不是只看打包体积。
- 基础设施变更走 Git,能复现、能回滚。
- 结论写成可检查的清单:接口、超时、失败样本、回滚版本。
和智能体产品怎么接
龙虾PRO做 OpenClaw 落地时,网络、DNS 和前端性能笔记最有用的是「边界」:哪一层该加速、哪一层不该假装智能。数字员工调用外部能力前,先把超时和失败路径写死。
本文侧重全链路风控方法论。落地时请用自身业务单据做回放验证,不要把示例阈值直接当生产策略。 相关:风控体检 · 方案资源
常见问题 FAQ
什么是AI智能系统?
「AI智能系统」可概括为:在这之前,我用了三四千字写了一篇 HTTP/2 三大特性的介绍、以及讲述了如何将其用于更快速的递送静态资源,如果你还没有读过那篇「 静态资源递送:HTTP/2 和 Server Push 」的话,其实无伤大雅,反正我要把 HTTP/2 再总结一次。 本文从定义、方法与实践要点展开说明。
为什么要关注AI智能系统?
关注AI智能系统,是因为它直接影响效率、风险与可复制性。文中指出:在这之前,我用了三四千字写了一篇 HTTP/2 三大特性的介绍、以及讲述了如何将其用于更快速的递送静态资源,如果你还没有读过那篇「 静态资源递送:HTTP/2 和 Server Push 」的话,其实无伤大雅,反正我要把 HTTP/2 再总结一次。
如何落地AI智能系统?有哪些关键步骤?
建议按以下路径推进AI智能系统:1) SCTP 在连接建立时需要协商并固定允许的数据流数量;2) 用自己的流量和设备测,不要只抄厂商推荐最小配置。;3) DNS、CDN、代理分流先画清 Fake IP 和 Real IP 的边界。;4) 前端性能看 CLS、白屏和重复渲染,而不是只看打包体积。;5) 基础设施变更走 Git,能复现、能回滚。。细节见正文对应章节。
AI智能系统适合哪些人或团队?
AI智能系统更适合:产品/技术负责人、运营与增长团队、需要落地智能体或自动化的中小团队、关注「AI智能系统」方向的读者。若你只需要单次聊天式问答,可先读概念;若要上生产,请重点看步骤、权限与风控相关段落。
关于「硬币:HTTP/2 的正面和反面」,本文给出了什么结论?
在「硬币:HTTP/2 的正面和反面」部分,要点是:P 连接、一股数据流就可以递送多个静态资源,在这基础上 HPACK 头部压缩技术使得在响应头上消耗的流量进一步减少。但是,HTTP/2 带来最深远的变革是,一个资源需要一个 TCP 连接的时代过去了。 快,造个新的轮子! 但是,HTTP/2 毕竟还是基于 TCP 的。丢包重传注定要面对「头部阻塞」。如果一个 TCP 连接中某个数据包丢失,那么整个 TCP 数据流必须暂停,丢失的数据包需要重新传输,然后数据流才能继续。在弱网环境下(想象一
关于「快,造个新的轮子!」,本文给出了什么结论?
在「快,造个新的轮子!」部分,要点是:能完成的任务。 如果不能发明一个新的协议,那可以从 IETF 制定的 RFC 里碰碰运气、找找有没有符合要求的协议。一个想法是 HTTP 应该基于 SCTP —— 流控制传输协议,这一协议的相关规范由 RFC4960 制定。更棒的是,这个协议甚至还有现成的 UDP 实现(WebRTC)。但是: 拥抱 QUIC 当然,也有破坏性不那么大的、对现有的 TCP 进行改造的方案。 RFC7143 提出了 TCP Fast Open(一般被简称为