HTTP/0.9 - 1991
- 请求只有一行,只有GET方法
- 响应只包含body
- 仅支持HTML文本
HTTP/1.0 - 1996
- 支持更多类型(如图片、视频等)
- 更多方法:POST, HEAD
- 加入了请求/响应头
- 状态码
- …
- ASCII编码方式
- 一次事务仅完成一个请求的响应(然后丢弃连接)
HTTP/1.1 - 1999
- PUT, PATCH, OPTIONS, DELETE
- 头部必须包含“Host”
- 持久连接(keep-alive)的引入
- Pipelining
- 字符集、语言、客户端cookies等
HTTP/2.0 (HTTP-NG) - 2015
- 二进制编码
- 多线
- HPACK
- 服务器推送
- 请求优先级
- TLS
- 非强制要求,但是事实上几乎强制要求
- TLS版本1.2以上
HTTP/3.0
- 采用基于UDP的QUIC协议
- QUIC理想情况下是希望直接建立在IP协议上,但现实原因使其不得不采用UDP过渡
- 可以视作TCP/2.0,同样是可靠传输协议
- 与TLS深度集成(默认的、强制的)
- 使用Connection ID和帧
参考
- Everything you need to know about HTTP
- HTTP/3 From A To Z: Core Concepts
- HTTP/3: Performance Improvements (Part 2)