HTTP3

HTTP/1.x

  • 开始便有了队头阻塞问题,请求头部未经压缩便发送,而且发送冗长的首部每次还会发出重复的为压缩头部报文。
    • 按顺序请求响应的,如果服务器响应慢会导致后面的数据阻塞。

    HTTP/2

  • 头部压缩,HTTP/2 通过 Stream 的并发能力,解决了队头阻塞问题,但是却卡在了TCP这一层。
    • TCP层必须保证收到的字节数据是完整且连续的如果当前字节没有到达时后面的字节只能暂时存放在缓冲区中等待这个字节到达,这就是HTTP2的队头阻塞问题。

    HTTP/3

  • 使用了以不可靠传输协议UDP为基本的UQIC可靠协议。
    • QUIC协议的某个流发生丢包时,只会阻塞这个流,其他流不会受到影响,因此不存在队头阻塞问题
    • 更快的建立连接,比起HTTP2的首先要经过TCP握手然后再TLS握手,QUIC内部便包含了TLS,会在自己的帧中携带TLS里的"记录",加上QUIC使用的是TLS1.3,所以连接的建立也会更快。