HTTP各版本的特点(1.0/1.1/2.0/3.0)

1. HTTP-1.0

无状态无连接的应用层协议

  • 无法复用连接

    每次发送请求,都要重新建立连接。

  • 队头阻塞

    下个请求必须在上个请求响应到达后发送。如果上个请求响应丢失,则后面请求被阻塞

2. HTTP-1.1

HTTP1.1 继承了 HTTP1.0 的简单,克服了 HTTP1.0 性能上的问题。

  • 长连接

    新增Connection: keep-alive保持长连接

  • 管道化

    支持管道化请求,请求可以并行传输,但响应顺序应与请求顺序相同。实际场景中,浏览器采用建立多个TCP会话的方式,实现真正的并行,通过域名限制大会话数量。

  • 缓存处理

    新增Cache-control,支持强缓存协商缓存

  • 断点续传

  • 主机头

    新增Host字段,使得一个服务器创建多个站点。

3. HTTP-2.0

HTTP2.0进一步改善了传输性能。

  • 二进制分帧

    在应用层和传输层间增加二进制分帧层

  • 多路复用

    建立双向字节流,帧头部包含所属流 ID,帧可以乱序发送,数据流可设优先级和依赖。从而实现一个 TCP 会话上进行任意数量的HTTP请求,真正的并行传输。

  • 头部压缩

    压缩算法编码原来纯文本发送的请求头,通讯双方各自缓存一份头部元数据表,避免传输重复头。

  • 服务器推送

    服务端可主动向客户端推送资源,无需客户端请求。

4. HTTP-3.0

当一个 TCP 会丢包时,整个会话都要等待重传,后面数据都被阻塞。这是由于 TCP 本身的局限性导致的。HTTP3.0 基于 UDP 协议,解决 TCP 的局限性。

  • 0-RTT

    缓存当前会话上下文,下次恢复会话时,只需要将之前缓存传递给服务器,验证通过,即可传输数据。

  • 多路复用

    一个会话的多个流间不存在依赖,丢包只需要重发包,不需要重传整个连接

  • 更好的移动端表现

    移动端 IP 经常变化,影响 TCP 传输,HTTP3.0 通过 ID 识别连接,只要 ID 不变,就能快速连接。

  • 加密认证的根文

    TCP 协议头没有加密和认证,HTTP3.0 的包中几乎所有报文都要经过认证,主体经过加密,有效防窃听,注入和篡改。

  • 向前纠错机制

    每个包还包含其他数据包的数据,少量丢包可通过其他包的冗余数据直接组装而无需重传。数据发送上限降低,但有效减少了丢包重传所需时间。


参考:

《LeetBook》

你可能感兴趣的:(HTTP,学习记录,http,网络协议)