Journeys

The many versions of HTTP

Thirty years of HTTP, from the first written HTTP/1.0 and 1.1 specifications through the split into parts, to one shared set of semantics over HTTP/1.1, HTTP/2 and HTTP/3.

  1. 01

    HTTP/1.0 The first written spec

    RFC 1945 documented what browsers and servers were already doing in the mid-1990s. It is Informational, not a standard.

    RFC 1945 HTTP/1.0

  2. 02

    HTTP/1.1 arrives Persistent connections

    HTTP/1.1 added persistent connections, chunked transfer and better caching. The first version was superseded within two years by the revision that stayed in use for fifteen.

    RFC 2068 HTTP/1.1 (first)RFC 2616 HTTP/1.1 (revised)

  3. 03

    Split into parts 2014

    RFC 2616 was split into six documents covering messaging, semantics, conditional requests, ranges, caching and authentication. All six have since been replaced.

    RFC 7230 Message Syntax and RoutingRFC 7231 Semantics and ContentRFC 7232 Conditional RequestsRFC 7233 Range RequestsRFC 7234 CachingRFC 7235 Authentication

  4. 04

    One semantics, three syntaxes 2022

    The HTTP meaning of methods, status codes and header fields now lives in one document that every version of HTTP shares. HTTP caching and HTTP/1.1 messaging have their own documents.

    RFC 9110 HTTP SemanticsRFC 9111 HTTP CachingRFC 9112 HTTP/1.1

  5. 05

    HTTP/2 Multiplexing

    HTTP/2 puts requests in binary frames and multiplexes them on one TCP connection, with header compression (HPACK). RFC 7540 was replaced by RFC 9113 in 2022.

    RFC 7540 HTTP/2 (original)RFC 9113 HTTP/2 (current)RFC 7541 HPACK

  6. 06

    HTTP/3 and QUIC Over UDP

    HTTP/3 maps HTTP onto QUIC, a UDP-based transport with built-in encryption, so one lost packet no longer stalls every stream.

    RFC 9000 QUICRFC 9114 HTTP/3RFC 9204 QPACK