Sobes.tech
Middle

Was ist der Unterschied zwischen HTTP/1 und HTTP/2?

sobes.tech KI

Antwort von AI

Hauptunterschiede:

  • Multiplexing. HTTP/2 ermöglicht das Senden und Empfangen mehrerer Anfragen und Antworten über eine einzelne TCP-Verbindung gleichzeitig. HTTP/1.1 erforderte eine separate Verbindung für jede Anfrage/Antwort (außer bei Verwendung des pipelining-Mechanismus, der Einschränkungen hatte).
  • Header-Kompression. HTTP/2 verwendet die HPACK-Kompression für Header, um deren Größe und die übertragenen Daten zu reduzieren. Bei HTTP/1.1 werden Header im Textformat gesendet.
  • Stream-Priorisierung. In HTTP/2 kann der Client Prioritäten für verschiedene Streams (Anfragen/Antworten) angeben, was dem Server ermöglicht, die Datenlieferung zu optimieren. HTTP/1.1 hat kein solches Mechanismus.
  • Server Push. HTTP/2 erlaubt es dem Server, Ressourcen an den Client zu senden bevor dieser sie anfordert, basierend auf der Annahme, dass sie für die Anzeige der Seite notwendig sind. Bei HTTP/1.1 muss der Client jede Ressource explizit anfordern.
  • Frame-Format. HTTP/2 überträgt Daten im binären Format (Frames), was das Parsen erleichtert und die Effizienz im Vergleich zum Textformat von HTTP/1.1 erhöht.

Vergleichstabelle:

Merkmal HTTP/1.1 HTTP/2
Verbindung Eine Verbindung pro Anfrage (ohne pipelining) Eine Verbindung für mehrere Streams
Multiplexing Nein (oder eingeschränkt durch pipelining) Ja
Header-Kompression Nein HPACK (binäre Kompression)
Stream-Priorisierung Nein Ja
Server Push Nein Ja
Datenformat Text Binär (Frames)
Head-of-Line-Blocking Vorhanden Teilweise durch Multiplexing gelöst

Beispiel für eine Anfrage in HTTP/1.1:

// GET /index.html HTTP/1.1
// Host: example.com
// User-Agent: curl/7.68.0
// Accept: */*

Beispiel für eine teilweise Darstellung von Daten in HTTP/2 (der Austausch von Frames ist komplexer und wird hier nicht so einfach gezeigt):

// In HTTP/2 erfolgt die Interaktion auf Frame-Ebene (HEADERS, DATA usw.),
// die binär sind und auf Anwendungsebene für den Benutzer verborgen sind.
// Es ist schwierig, sie nur zur Veranschaulichung in einfachem Text darzustellen.
// Header werden komprimiert und im HEADERS-Frame übertragen.
// Der Antwortkörper wird in DATA-Frames übertragen.