HTTP 1.0 (1996年)
- 仅提供了最基本认证,用户名及密码未加密,不安全。
- 使用短连接,每次发送数据都会经过TCP三次握手和四次挥手,效率低。
- 只使用 header 中的 If-Modified-Since 和 Expires 作为缓存失效的标准。
- 不支持断点续传,每次都会传送全部页面和数据。
- 认为每台计算机只绑定一个IP,因此请求消息中的URL 并没有传递主机名。
HTTP 1.1 (1999年)
- 使用摘要算法进行身份验证
- 默认使用长连接,只需要建立一次连接就可以传输多次数据。连接时长通过请求头中的 keep-alive来设置。
- 增加 E-tag,If-Unmodified-Since,If-Match,If-None-Match 等缓存控制标头来控制缓存失效。
- 支持断点续传,通过使用请求头中的 Range 来实现。
- 使用虚拟网络,可以支持虚拟机共享同一个IP地址。
HTTP 2.0 (2015年)
- 使用 HPACK 算法进行头部压缩,HTTP 1.1 会出现cookie、user-agent 等字段占用几百个字节,导致头部偏重。
- 使用二进制格式而非ASCII码,提升了解析效率。
- 强化安全,HTTP 2.0 跑在 HTTPS 上。
- 多路复用,每个请求都是作为连接共享,一个请求对应一个id,一个连接上可以多个请求。
以上总结参考 https://mp.weixin.qq.com/s/qetBsYmDqwi_nJVnKmBw8Q