- **HTTP 0.9 - 学术交流传输 HTML
- 只有一个请求行,并没有 HTTP 请求头和请求体,因为只需要一个请求行就可以完整表达客户端的需求了。
- 服务器也没有返回头信息,这是因为服务器端并不需要告诉客户端太多信息,只需要返回数据就可以了。
- 返回的文件内容是以 ASCII 字符流来传输的,因为都是 HTML 格式的文件,所以使用 ASCII 字节码来传输是最合适的。
- HTTP 1.0 - 多类型支持
- 支持多种文件类型,不限于 ASCII 编码
- 引入请求头和响应头(key-value 形式)
- 每个请求都需要建立新的 TCP 连接
- HTTP 1.1 - 持久连接优化请求效率
- 引入持久连接( keep-alive ):一个 TCP]连接可传输多个 HTTP 请求
- 默认开启 keep-alive,通常限制 6-8 个并发连接
- 存在队头阻塞问题:前面的请求阻塞会影响后续请求
- 引入 Host 字段,支持虚拟主机
- 引入 Chunk transfer 机制处理动态内容长度
- 引入更高效的缓存策略
- 引入更多的HTTP 请求方法,如 PUT、HEAD、OPTIONS
- HTTP 2.0 - 多路复用最大化地用带宽
- 一个域名只使用一个 TCP 长连接
- 引入二进制分帧层,实现多路复用
- 可对请求设置优先级
- 引入 HTTPS(HTTP + TLS) 加密
- HTTP/3.0 - QUIC 协议
- 基于 UDP 协议而非 TCP
- 实现了类似 TCP 的流量控制和可靠传输
- 集成 TLS 加密
- 实现多路复用
- 解决 TCP 队头阻塞问题