[
  {
    "version": "0.9",
    "name": "HTTP/0.9",
    "year": 1991,
    "rfc": null,
    "description": "The original one-line protocol. Supports only GET requests with no headers, status codes, or versioning. Responses are raw HTML only."
  },
  {
    "version": "1.0",
    "name": "HTTP/1.0",
    "year": 1996,
    "rfc": "RFC 1945",
    "description": "Introduced request/response headers, status codes, content types, and support for methods beyond GET. Each request opens a new TCP connection."
  },
  {
    "version": "1.1",
    "name": "HTTP/1.1",
    "year": 1997,
    "rfc": "RFC 2068",
    "description": "Added persistent connections (keep-alive), chunked transfer encoding, the mandatory Host header, and cache-control directives. First specified in RFC 2068 (1997), revised by RFC 2616 (1999), RFCs 7230-7235 (2014) and RFC 9112 (2022). Remained the dominant protocol for over a decade."
  },
  {
    "version": "2",
    "name": "HTTP/2",
    "year": 2015,
    "rfc": "RFC 7540",
    "description": "Binary framing layer enabling multiplexed streams, header compression (HPACK), server push, and stream prioritization over a single TCP connection. RFC 7540 was obsoleted by RFC 9113 (2022), which deprecated the original prioritization scheme; browsers have since dropped server push."
  },
  {
    "version": "3",
    "name": "HTTP/3",
    "year": 2022,
    "rfc": "RFC 9114",
    "description": "Replaces TCP with QUIC (UDP-based, RFC 9000) to eliminate transport-level head-of-line blocking, reduce connection latency, and improve performance on lossy networks. Uses QPACK header compression."
  }
]
