http目前经历了四个版本分别为 0.9, 1.0, 1.1, 2.0,3.0
Http 0.9
- 只支持GET请求
- 没有状态码、请求头、响应头
- 只能传输纯文本
- 没有持久链接,每个请求都需要新建立TCP链接
Http 1.0
- 引入请求头和响应头,可以在传输内容之外携带更多的信息比如音频图片
- 支持get post head请求方法
- 增加了状态码
- 仍旧没有持久链接,即每个请求都会新建和关闭一个TCP链接
Http 1.1
- 持久连接:支持链接复用,即TCP链接在一个请求结束后不会立即关闭,允许多个请求复用同一个链接
- 支持服务器讲数据分块传输,适合传输动态生成的内容
- 增加了PUT DELETE OPTIONS等方法
- 头部压缩: 通过 HPACK 压缩减少了头部大小,提高了传输效率。
Http 2
- 将Http请求和响应转换为二进制格式
- 允许多个请求和响应同时通过一个TCP链接,不会因为一个请求阻塞而影响其他请求
- 服务器可以主动向客户端推送资源,而不是等待客户端请求
Http3
- 不再基于TCP而是基于QUIC,这是一个新的协议,运行在UDP之上,具有更快的连接速度和更好的错误处理
整理表格
| 特性 | HTTP/0.9 | HTTP/1.0 | HTTP/1.1 | HTTP/2 | HTTP/3 |
|---|---|---|---|---|---|
| 请求方法 | 仅 GET | GET, POST, HEAD | 更多方法(PUT, DELETE) | 同 HTTP/1.1 | 同 HTTP/2 |
| 持久连接 | 不支持 | 不支持 | 支持 | 支持 | 支持 |
| 多路复用 | 不支持 | 不支持 | 不完全支持 | 支持 | 支持 |
| 传输格式 | 纯文本 | 文本 | 文本 | 二进制 | 二进制 |
| 头部压缩 | 无 | 无 | 无 | 支持 | 支持 |
| 基础协议 | TCP | TCP | TCP | TCP | QUIC(基于 UDP) |