api: YAML JSON TOON Database
version: 1.0.0
format: yaml
dataset:
  id: 425
  slug: http-protocol-evolution
  title: "HTTP Protocol Evolution: HTTP/1.1 to HTTP/3"
  description: "The evolution of HTTP from HTTP/1.1 through HTTP/2 to HTTP/3 (QUIC): key differences, performance implications, migration strategies, and adoption status."
  category: Web Technologies
  category_slug: web-technologies
  tags: http,http2,http3,quic,protocol,performance,networking,tls
  view_count: 2
  created_at: 1781275786
  updated_at: 1781275786
data:
  versions:
    - version: HTTP/1.1
      year: 1999
      transport: TCP
      rfc: RFC 7230-7235 (updated), RFC 2616 (original)
      key_features:
        - Persistent connections (keep-alive)
        - Chunked transfer encoding
        - Cache control (Cache-Control, ETag)
        - Content negotiation (Accept headers)
        - Range requests for partial content
      limitations:
        - Head-of-line blocking at application layer (one request at a time per connection)
        - Verbose text-based headers (no compression)
        - No server push capability
        - Multiple connections needed for parallelism (typically 6 per origin)
      performance_tips:
        - Domain sharding (splitting resources across multiple domains)
        - CSS sprites, image inlining, concatenation
        - Resource hints (preconnect, prefetch, preload)
        - Keep connection count optimal (not too many)
      adoption: Near 100% — every web server and client supports it
    - version: HTTP/2
      year: 2015
      transport: TCP (with binary framing layer)
      rfc: RFC 7540, RFC 7541
      key_features:
        - Binary framing layer (not text-based like HTTP/1.1)
        - Multiplexed streams (multiple requests in one connection)
        - HPACK header compression (eliminates redundant headers)
        - Server push (server sends resources before requested)
        - Stream prioritization (dependency tree)
        - Connection coalescing (multiple origins share one connection)
      limitations:
        - Head-of-line blocking at TCP layer (packet loss blocks ALL streams)
        - TCP congestion control affects all multiplexed streams
        - Server push often misused (better alternatives exist)
        - Requires TLS in practice (browsers only implement HTTP/2 over TLS)
        - Debugging harder than HTTP/1.1 (binary protocol)
      migration_notes: Enable via reverse proxy (Nginx, Caddy) or CDN. No application changes needed. TLS 1.2+ required. Use h2 ALPN negotiation.
      adoption: ~40% of all websites (declining as HTTP/3 grows)
    - version: HTTP/3
      year: 2022
      transport: QUIC (UDP-based, with TLS 1.3 built-in)
      rfc: RFC 9114, RFC 9000 (QUIC), RFC 9001 (TLS over QUIC)
      key_features:
        - "QUIC transport: 0-RTT connection establishment, connection migration"
        - No TCP-level HOL blocking (separate streams, independent delivery)
        - Built-in TLS 1.3 encryption (no separate TLS layer)
        - Connection migration (survives IP/network changes)
        - Faster handshake (0-1 RTT vs 2-3 RTT for TCP+TLS)
        - User-space implementation (faster protocol evolution)
      limitations:
        - UDP-based — some firewalls/nat devices block or throttle UDP
        - Higher CPU usage than TCP (user-space processing)
        - QUIC not as mature as TCP stack (kernel optimizations)
        - Less tooling for debugging compared to TCP-based protocols
        - Some middleboxes still interfere with UDP traffic
      performance_gains: "40-60% faster page loads on slow/mobile networks, especially with packet loss (3-10% loss: HTTP/3 vs HTTP/2 improvement is dramatic)"
      adoption: ~35%+ of websites as of 2026. All major CDNs (Cloudflare, Fastly, Akamai) support it. All modern browsers support it.
      migration_notes: Enable at CDN level first. Verify UDP is allowed on network path (typically port 443 UDP). Keep HTTP/2 fallback. Monitor for middlebox interference.
