Die drei HTTP-Versionen: Eine technische Analyse

HTTP/1.1

HTTP/1.1 wurde 1997 standardisiert und bildet die Grundlage vieler heutiger Webanwendungen. Es operiert über TCP und nutzt ein einfaches, textbasiertes Anfrage-Antwort-Modell.

Merkmale

  • Persistente Verbindungen (Keep-Alive): TCP-Verbindungen bleiben für mehrere HTTP-Anfragen offen, was den Overhead von Verbindungsaufbauten reduziert.
  • Pipelining: Ermöglicht das Senden mehrerer HTTP-Anfragen, ohne auf die jeweiligen Antworten zu warten. Allerdings führt Head-of-Line-Blocking zu Verzögerungen, da eine blockierte Anfrage nachfolgende Anfragen aufhält.
  • Textbasiertes Protokoll: Header und Nutzdaten werden in Klartext übertragen, was einfach zu debuggen, aber weniger effizient ist.

HTTP/2

HTTP/2 wurde 2015 eingeführt und verbessert die Effizienz der Datenübertragung erheblich, ohne die grundlegende HTTP-Semantik zu verändern.

Merkmale

  • Binäres Protokoll: Statt Klartext verwendet HTTP/2 ein binäres Framing-Layer, was die Parsing-Effizienz erhöht und Fehler reduziert.
  • Multiplexing: Mehrere Datenströme können gleichzeitig über eine einzelne TCP-Verbindung übertragen werden. Dies mindert das Head-of-Line-Blocking auf Anwendungsebene.
  • Header-Komprimierung (HPACK): Nutzt effiziente Komprimierung von Header-Feldern, um die Overhead-Größe zu reduzieren.
  • Server Push: Der Server kann proaktiv Ressourcen senden, die der Client wahrscheinlich anfordern wird, was die Ladezeiten verbessert.

HTTP/3

HTTP/3 ist die neueste HTTP-Version und basiert auf dem QUIC-Protokoll. Es adressiert die Limitierungen von TCP, insbesondere in Bezug auf Latenz und Head-of-Line-Blocking.

Merkmale

  • QUIC-Protokoll: QUIC (Quick UDP Internet Connections) ist ein von Google entwickeltes Transportprotokoll, das auf UDP aufbaut. Es kombiniert Funktionen von TCP, TLS und HTTP/2.
    • Schneller Verbindungsaufbau: QUIC ermöglicht 0-RTT-Verbindungen, bei denen wiederholte Verbindungen ohne zusätzlichen Handshake sofort initiiert werden können.
    • Integrierte Verschlüsselung: Sicherheitsfunktionen sind von Anfang an integriert und basieren auf TLS 1.3. Jede QUIC-Verbindung ist verschlüsselt.
    • Stream-Multiplexing ohne Head-of-Line-Blocking: Jeder Datenstrom wird unabhängig behandelt. Paketverluste in einem Stream beeinflussen nicht die Übertragung anderer Streams.
    • Fehlerkorrektur: QUIC implementiert eigene Mechanismen zur Verlusterkennung und -wiederherstellung, unabhängig von TCP.
  • UDP-basiert: Durch die Verwendung von UDP umgeht QUIC die Begrenzungen von TCP, insbesondere das Head-of-Line-Blocking auf Transporteebene.

Vergleichstabelle der Vorteile

MerkmalHTTP/1.1HTTP/2HTTP/3
ProtokolltypTextbasiertBinärBinär
MultiplexingEingeschränktJaJa
Head-of-Line-BlockingJa (TCP & Anwendung)Ja (TCP)Nein
Header-KomprimierungNeinHPACKQPACK
Server PushNeinJaJa
TransportprotokollTCPTCPQUIC (UDP-basiert)
Integrierte SicherheitOptional (TLS)Meistens mit TLSImmer mit TLS 1.3
VerbindungsaufbauzeitHoch (mehrere RTTs)Moderat (TLS-Handshakes)Niedrig (0-RTT möglich)
Fehlerkorrektur bei PaketverlustTCP-RetransmissionTCP-RetransmissionQUIC-spezifisch

Tags

HTTPHTTP1.1HTTP2HTTP3QUICTCPUDPNetzwerkProtokolleWebentwicklung

AVSW-Overview