【网络】HTTP/1.0、HTTP/1.1、HTTP/2、HTTP/3比对
HTTP/3是HTTP协议的最新版本,它基于QUIC协议,而QUIC最初由Google开发,后来被IETF标准化。以下是包含HTTP/1.0、HTTP/1.1、HTTP/2和HTTP/3(基于QUIC)的对比表格:
特性 | HTTP/1.0 | HTTP/1.1 | HTTP/2 | HTTP/3 (基于QUIC) |
---|---|---|---|---|
发布日期 | 1996年 | 1999年 | 2015年 | 2020年左右(标准化完成) |
连接复用 | 每个请求都需要新的TCP连接 | 支持持久连接 | 单一连接上支持多路复用 | 单一连接上支持多路复用 |
管道化 | 不支持 | 允许但存在队头阻塞 | 多路复用消除了队头阻塞 | 内置多路复用,无队头阻塞 |
头部压缩 | 无 | 无 | 使用HPACK进行头部压缩 | 继续使用HPACK或改进的头部压缩 |
服务端推送 | 不支持 | 不支持 | 支持服务器主动推送资源 | 支持,但实现细节可能有所不同 |
分块传输编码 | 不支持 | 支持 | 支持,但通过二进制分帧实现 | 不直接适用,因为QUIC处理数据流 |
协议类型 | 基于文本的协议 | 基于文本的协议 | 二进制分帧层 | 基于UDP的QUIC协议 |
优先级控制 | 不支持 | 不支持 | 支持对请求设置优先级 | 支持更细粒度的流量控制 |
加密需求 | 不强制要求 | 不强制要求 | 虽不强制,但多数实现依赖TLS | 强制加密,QUIC内置TLS 1.3 |
性能改进 | 较少 | 相对于HTTP/1.0有所改进 | 显著提升,尤其是加载速度和资源利用效率 | 进一步提升,特别是减少延迟和提高可靠性 |
默认主机头 | 不需要 | 必须包含Host头部 | 继承自HTTP/1.1 | 继承自HTTP/2 |
错误处理 | 简单 | 更加详细和规范化的错误处理 | 继承自HTTP/1.1并进一步优化 | 继承自HTTP/2,并受益于QUIC的错误恢复机制 |
网络条件适应性 | 无 | 有限 | 改进,但仍然受限于TCP的特性 | 更好,QUIC设计以适应不同的网络条件 |
HTTP/3的主要特点在于它基于QUIC协议,这是一个基于UDP的新传输层协议。QUIC旨在解决TCP的一些固有问题,如连接建立时间长、拥塞控制算法不够灵活等。由于QUIC内置了TLS 1.3,所以HTTP/3总是加密的。此外,QUIC提供了更快的连接建立和更好的网络条件适应性,例如在切换网络时能保持连接不中断。这使得HTTP/3在移动网络和其他高延迟、不稳定网络环境中表现尤为出色。