每一代HTTP解决了什么问题?
下面的图表显示了它们的关键特点。
🔹HTTP 1.0于1996年完成并完全记录。每个向同一服务器的请求需要一个单独的TCP连接。
🔹HTTP 1.1于1997年发布。TCP连接可以保持打开以进行重用(持久连接),但它无法解决HOL(线路开头阻塞)问题。
HOL阻塞-当浏览器中允许的并行请求数量用完时,后续请求需要等待前面的请求完成。
🔹HTTP 2.0于2015年发布。它通过请求多路复用解决了HOL问题,该复用消除了应用层中的HOL阻塞,但是在传输(TCP)层仍存在HOL问题。
正如您在图表中看到的,HTTP 2.0引入了HTTP“流”的概念:一种允许将不同的HTTP交换多路复用到同一TCP连接的抽象。每个流不需要按顺序发送。
🔹HTTP 3.0的稿于2020年发布。它是HTTP 2.0的继任者。它使用QUIC而不是TCP作为底层传输协议,因此消除了传输层中的HOL阻塞。
QUIC基于UDP。它将流作为公民引入传输层。QUIC流共享相同的QUIC连接,因此无需创建新连接,也不需要慢启动,但QUIC流独立交付,因此在大多数情况下影响一个流的数据包丢失不会影响其他流。