HTTP - Draft

HTTP #

HTTP 1.0 #

Every request to the same server requires a separate TCP connection

1.0
1.0_2

HTTP 1.1 #

Was published in 1997

A TCP connection can be left open for reuse (persistent connection)

1.1

HTTP pipelining #

HTTP pipelining is a feature of HTTP/1.1, which allows multiple HTTP requests to be sent over a single TCP connection without waiting for the corresponding responses. HTTP/1.1 requires servers to respond to pipelined requests correctly

HOL (head-of-line) blocking issue #

When the number of allowed parallel requests in the browser is used up, subsequent requests need to wait for the former ones to complete

HTTP 2.0 #

Was published in 2015

It addresses HOL issue through request multiplexing, which eliminates HOL blocking at the application layer, but HOL still exists at the transport (TCP) layer. As you can see in the diagram, HTTP 2.0 introduced the concept of HTTP “streams”: an abstraction that allows multiplexing different HTTP exchanges onto the same TCP connection. Each stream doesn’t need to be sent in order

2

HTTP 3.0 #

HTTP over QUIC

  • Was published in 2020
  • It is the proposed successor to HTTP 2.0. It uses QUIC instead of TCP for the underlying transport protocol, thus removing HOL blocking in the transport layer
  • QUIC is based on UDP. It introduces streams as first-class citizens at the transport layer. QUIC streams share the same QUIC connection, so no additional handshakes and slow starts are required to create new ones, but QUIC streams are delivered independently such that in most cases packet loss affecting one stream doesn’t affect others

quic

Reference #