ゆるテックノート

HTTP version history in short

HTTP has evolved to be faster and safer: from the simple 0.9, to 1.1 keep-alive, to HTTP/2 multiplexing, and HTTP/3 over QUIC. Here’s the quick tour.

Quick timeline

Knowing the milestones helps when designing or debugging.

Key milestones

  • HTTP/0.9 (1991-ish): GET only, no headers, plain HTML.
  • HTTP/1.0 (1996): Headers, status codes, Content-Type; one request per connection.
  • HTTP/1.1 (1997): Keep-Alive by default, pipelining, Host header required, chunked transfer, Cache-Control.
  • SPDY (2009): Experimental multiplexing, header compression, prioritization → fed into HTTP/2.
  • HTTP/2 (2015): Binary framing, multiplexing, header compression (HPACK), prioritization.
  • HTTP/3 (2022): Runs over QUIC (UDP). Faster handshakes, better loss recovery, header compression is QPACK.

What changed by version

Each revision tackled specific pain points.

HTTP/1.0 → 1.1

  • Persistent connections reduce handshake overhead.
  • Host header makes virtual hosting practical.
  • Chunked transfer enables streaming-style responses.
  • Cache-Control and ETag clarify caching behavior.

HTTP/1.1 → 2

  • Multiplexing in a single connection, easing head-of-line blocking.
  • Header compression (HPACK) cuts overhead.
  • Prioritization helps critical resources arrive first.
  • Binary framing for extensibility.

HTTP/2 → 3

  • Transport changes to QUIC over UDP; connection IDs survive path changes and handshakes are faster.
  • Loss recovery reduces head-of-line blocking impact.
  • Header compression moves to QPACK; TLS is built into QUIC (encryption by default).

Using them today

1.1 is still common; 2 is the default for most browsers/CDNs; 3 support is growing but real-world share remains modest.

Practical notes

  • Modern browsers/CDNs do HTTP/2/3; ALPN negotiates the preferred protocol.
  • HTTP/3 can be blocked on some networks (UDP). Keep HTTP/2/1.1 as fallback.
  • Live traffic share of HTTP/3 is still relatively low and varies by CDN/region/ISP—enable gradually and watch logs.
  • Legacy 1.1 clients remain; servers often serve multiple versions in parallel.
  • Monitor per-version metrics (handshake time, retransmits, QoE) to locate issues.

Takeaway

HTTP keeps moving toward “persistent, parallel, encrypted by default.” Plan for coexistence of versions, favor HTTP/2 and HTTP/3 where possible.