Skip to content

现代协议与队头阻塞 ​

HTTP/1.1 请求排队与响应顺序 ​

HTTP/1.1 流水线允许在收到前一响应前发送后续请求,但服务端必须按请求顺序发送响应。慢响应会阻塞其后的响应。

多个连接可隔离部分排队,但增加握手与连接开销。

HTTP/2 的流级与连接级流控 ​

HTTP/2 分别维护每条流和整条连接的 DATA 流控窗口。接收端用 WINDOW_UPDATE 增加可用额度。

流级窗口耗尽会暂停该流,连接级窗口耗尽会限制所有流的 DATA。底层 TCP 还有独立流控。

TCP 丢包对 HTTP/2 多路复用的影响 ​

HTTP/2 可以交错多个流的帧,但 TCP 向应用交付有序字节。字节序列有缺口时,后续已到达字节需等待补齐。

受影响范围是同一 TCP 连接。应用层多路复用仍受底层交付顺序约束。

QUIC 流间隔离、丢包恢复与连接迁移 ​

QUIC 按流追踪偏移和交付顺序,丢失的数据可装入新包重发。连接 ID 可在地址变化时标识原连接,新路径需要验证。

流内仍要求有序交付。流共享连接级拥塞控制,单个丢包也可同时携带多个流的数据。

TLS 1.3 会话恢复与 0-RTT ​

会话恢复通常用先前获取的票据和关联 PSK 缩短后续握手。服务器允许时,客户端可在握手完成前发送早期数据。

0-RTT 存在重放风险,服务器也可能拒绝早期数据。仅为可安全重放的操作启用。

基于 MIT 许可发布