HTTP1.0/1.1/2.0/3.0本质对比

HTTP1.0/1.1/2.0

  1. HTTP1.0
    主要问题就是HTTP请求需要一个一个发,每次三次握手。并且不支持断点续传。
  2. HTTP1.1
    引入长连接,多个请求可以用一个TCP连接,但是会引起HTTP队头阻塞,也就是前一个请求没有被应答的话后面的请求也无法获得。管线化(同时发若干个请求)也无法避免队头阻塞。
  3. HTTP2.0
    基于二进制帧的传输,可以实现多路复用。若干个帧组成一个HTTP消息,若干个消息组成一个流。解决了HTTP队头阻塞的问题,but基于TCP的HTTP/2,尽管从逻辑上来说,不同的流之间相互独立,不会相互影响,但在实际传输方面,数据还是要一帧一帧的发送和接收,一旦某一个流的数据有丢包,则同样会阻塞在它之后传输的流数据传输
  4. HTTP3.0
    基于TLS1.3实现1RTT的握手,实现了TCP的流量控制和可靠传输,实现了HTTP2.0的多路复用,不同点是QUIC实现了同一个物理连接有多个独立的逻辑数据流,解决了TCP队头阻塞的问题。