主题
现代协议与队头阻塞
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 存在重放风险,服务器也可能拒绝早期数据。仅为可安全重放的操作启用。
