Skip to main content

http1.0、http1.1、http2 版本对比

http 1.0

缺点

  • 无状态
  • 无法复用连接,每次请求都需要TCP连接。
  • 队头阻塞,下一个请求必须在前一个请求响应到达之前才能发送,假设前一个请求响应一直不到达,那么下一个请求就不发送,后面的请求就阻塞了。
  • 不支持断点续传,每次都会传送全部的页面和数据。

http 1.1

优点

  • 持久连接,通过设置 Connection: keep-alive 保持HTTP连接不断
  • 管道机制,同一个TCP连接里,客户端可以同时发送多个请求
  • 支持断点续传, 通过设置 Range 来实现

缺点

  • 可以通过管道传输,多个请求同时发送,但是会出现 「队头阻塞(Head-Of-Line Blocking)」(前一个响应慢,后面的请求就排队等着)。
  • 明文传输,不安全
  • 不支持服务器推送
  • 无状态,头部开销巨大,每次请求都要发送一个新的请求头

http 2.0

优点

  • 二进制分帧,header 和 data 分离
  • 多路复用,使用多个 steam,每个stream又分帧传输,使得一个TCP可以处理多个http请求
  • 头部压缩,两端维护一个 header索引,通过key匹配
  • 服务器推送

缺点

  • TCP + TLS建立连接的延时
  • TCP的队头拥塞并没有彻底解决
  • 多路复用导致服务器压力上升,容易超时

HTTP 3.0

优点

  • 基于 Google的QUIC协议(UDP实现的)
  • 减少了 TCP 三次握手,以及TLS握手的时间