1. Introduction (Einführung)
HTTP-Semantik (HTTP Semantics) ([HTTP]) wird für eine breite Palette von Diensten im Internet verwendet. Diese Semantik wurde am häufigsten mit HTTP/1.1 und HTTP/2 verwendet. HTTP/1.1 wurde über verschiedene Transport- und Sitzungsschichten verwendet, während HTTP/2 hauptsächlich mit TLS über TCP verwendet wurde. HTTP/3 unterstützt dieselbe Semantik über ein neues Transportprotokoll: QUIC.
1.1. Prior Versions of HTTP (Frühere Versionen von HTTP)
HTTP/1.1 ([HTTP/1.1]) verwendet durch Leerzeichen getrennte Textfelder zur Übertragung von HTTP-Nachrichten. Während diese Austausche für Menschen lesbar sind, führt die Verwendung von Leerzeichen für die Nachrichtenformatierung zu Parsing-Komplexität und übermäßiger Toleranz gegenüber variantem Verhalten.
Da HTTP/1.1 keine Multiplexing-Schicht (Multiplexing Layer) enthält, werden häufig mehrere TCP-Verbindungen verwendet, um Anfragen parallel zu bearbeiten. Dies hat jedoch negative Auswirkungen auf die Staukontrolle (Congestion Control) und die Netzwerkeffizienz, da TCP die Staukontrolle nicht über mehrere Verbindungen hinweg teilt.
HTTP/2 ([HTTP/2]) führte eine binäre Framing- (Binary Framing) und Multiplexing-Schicht ein, um die Latenz zu verbessern, ohne die Transportschicht zu ändern. Da jedoch die parallele Natur des Multiplexing von HTTP/2 für die Verlustrückgewinnungsmechanismen (Loss Recovery Mechanisms) von TCP nicht sichtbar ist, führt ein verlorenes oder neu geordnetes Paket dazu, dass alle aktiven Transaktionen einen Stillstand (Stall) erleben, unabhängig davon, ob diese Transaktion direkt vom verlorenen Paket betroffen war.
1.2. Delegation to QUIC (Delegation an QUIC)
Das QUIC-Transportprotokoll (QUIC Transport Protocol) integriert Stream-Multiplexing (Stream Multiplexing) und Stream-bezogene Flusskontrolle (Per-Stream Flow Control), ähnlich dem, was durch die HTTP/2-Framing-Schicht bereitgestellt wird. Durch die Bereitstellung von Zuverlässigkeit (Reliability) auf Stream-Ebene und Staukontrolle über die gesamte Verbindung hat QUIC die Fähigkeit, die Leistung von HTTP im Vergleich zu einer TCP-Zuordnung zu verbessern. QUIC integriert auch TLS 1.3 ([TLS]) auf der Transportschicht und bietet vergleichbare Vertraulichkeit (Confidentiality) und Integrität (Integrity) wie die Ausführung von TLS über TCP, mit der verbesserten Verbindungsaufbau-Latenz von TCP Fast Open ([TFO]).
Dieses Dokument definiert HTTP/3: eine Zuordnung der HTTP-Semantik über das QUIC-Transportprotokoll, die stark auf dem Design von HTTP/2 basiert. HTTP/3 verlässt sich auf QUIC, um Vertraulichkeit und Integritätsschutz von Daten, Peer-Authentifizierung (Peer Authentication) und zuverlässige, geordnete, stream-weise Zustellung bereitzustellen. Während Stream-Lebensdauer (Stream Lifetime) und Flusskontroll-Probleme an QUIC delegiert werden, wird auf jedem Stream ein binäres Framing ähnlich dem HTTP/2-Framing verwendet. Einige HTTP/2-Funktionen werden von QUIC subsumiert, während andere Funktionen auf QUIC aufgebaut werden.
QUIC wird in [QUIC-TRANSPORT] beschrieben. Eine vollständige Beschreibung von HTTP/2 finden Sie in [HTTP/2].