HTTP/2

HTTP/2 is HTTP/1 but more efficient. The protocol unit is a “frame” (frame types include HEADERS, DATA, SETTINGS, etc.). Requests are represented as “streams” which are multiplexed over a single connection. It supports flow-control, prioritization and header compression (via HPACK).

HTTP/1.0 requires many connections because it allows only 1 outstanding request per connection. HTTP/1.1 pipelining isn’t much better because it suffers from head-of-line blocking. Also, expensive connection establishment is often required for a new requests. All of this leads to bad network utilization.

HTTP/2 addresses this by multiplexing many requests over a single connection. This allows for less, longer lived connections and less frequent connection establishment. Additionally, it adds header compression because headers are verbose. It’s binary message framing is also more efficient. All of this leads to better network utilization.

References