Loading

HTTP/1 HTTP/2 HTTP/3 对比分析

HTTP1.0

特点:

  • 每次请求都需要与服务器建立一个TCP连接,服务器处理完成后立即断开TCP连接
  • 不跟踪每个浏览器的历史请求

缺点:

  • 连接无法复用-每次请求都需建立一个TCP连接,费时费力。
  • 队头阻塞(Head of Line Blocking)下一个请求必须再前一个请求响应到达后发送。如果某请求一直不到达,那么下一个请求就一直不发送。

HTTP1.1

特点:

  • 支持长连接(PersistentConnection)通过Keep-Alive保持HTTP连接不断开,避免重复建立TCP连接
  • 管道化(pipelining) 通过长连接实现在一个连接中传输多个文件
  • 加入缓存处理 【新字段 cache-control】
  • 支持断点续传
  • 增加了Host字段(允许一个服务器创建多个web站点)

缺点:

  • 队头阻塞仍未解决(管道化,服务端仍需按顺序传输,如果前一个文件未收到,后面的文件无法传输)

HTTP2

核心:

SPeeDY(二进制分帧层)

通过在应用层和传输层间增加一个二进制分帧层,突破HTTP1.1的性能限制、改进传输性能

特点:

  • 多路复用(实现正真的并行传输,在一个TCP上进行任意数量HTTP请求 基于【二进制分帧】的特性)
  • 头部压缩
  • 服务器推送

缺点:

  • TCP的队头阻塞没有彻底解决
    • TCP的”超时重传“机制。当HTTP2出现丢包时,整个TPC都要等待重传,那会阻塞该TCP连接中的所有请求
  • TCP及TCP+TLS建立连接的延时
  • 多路复用容易超时
  • 多路复用导致服务器压力上升

HTTP3

核心:

使用了基于UDP的QUIC协议,完美解决”队头阻塞“问题。

特点:

  • 改进拥塞机制,可靠传输
  • 快速握手
  • 集成TLS1.3加密
  • 多路复用
  • 连接迁移
posted @ 2021-04-16 14:32  ZJH_BLOGS  阅读(701)  评论(0编辑  收藏  举报