ADC

HTTP3 über QUIC-Protokoll

HTTP/2 über TCP ist der bevorzugte Standard für das Senden mehrerer Streams von HTTP-Anfragen über eine einzige Verbindung. Im TCP-Transportmechanismus gibt es jedoch gewisse Einschränkungen und Latenzprobleme beim Zugriff auf Websites und Webanwendungen. Wenn Sie mehrere Anfragen über dieselbe Verbindung multiplexieren, unterliegen sie der Zuverlässigkeit derselben Verbindung. Wenn das Paket für eine Anforderung verloren geht, verzögern sich alle anderen multiplexierten Anfragen, bis das verlorene Paket erkannt und erneut übertragen wird. Dies führt zu Verzögerungen beim Blockieren von Head-of-Line-Blockierungen und Latenzproblemen.

Für Verbindungs- und Transportverzögerungen verwendet HTTP/3 QUIC anstelle des TCP-Protokolls. Das QUIC ist ein aufkommendes Protokoll, das UDP anstelle von TCP als Basistransport verwendet. In HTTP-over-Quic können Sie mehrere unabhängige Anfragen multiplexen, ohne von einer einzigen TCP-Verbindung abhängig zu sein. QUIC implementiert eine zuverlässige Verbindung, auf der Sie mehrere HTTP-Anfragen streamen können. QUIC enthält auch TLS als integrierte Komponente und nicht als zusätzliche Layer wie in HTTP/1.1 oder HTTP/2.

Vorteil der Verwendung des HTTP/3-Protokolls

Einige der wichtigen Vorteile der Verwendung des QUIC-Protokolls für den HTTP/3-Datentransport sind nachstehend aufgeführt:

• Stream-Multiplexen • Strömungssteuerung auf Stream- und Verbindungsebene • Verbindungsaufbau mit niedriger Latenz • Verbindungsmigration und Widerstandsfähigkeit zur NAT-Wiederbindung • Authentifizierter und verschlüsselter Header und Payload

Transportstapel in HTTP-Protokollen

Die folgende Abbildung zeigt den Transportstapel in den Protokollen HTTP/1.1, HTTP/2 und HTTP/3.

Transportstapel in HTTP-Protokollen

Wie QUIC- und HTTP/3-Verbindungsmanagement in NetScaler funktioniert

Die folgende Abbildung zeigt, wie QUIC- und HTTP/3-Verbindungsmanagement in einer NetScaler Appliance und wie die Komponenten miteinander interagieren.

So funktionieren QUIC- und HTTP/3-Verbindungsmanagement

Schritt 1: Clientseitige HTTP/3-Anfrage über das QUIC-Protokoll an die NetScaler Appliance. Schritt 2: Anforderung, die von NetScaler AS HTTP/1.1 oder HTTP/2 weitergeleitet wird, abhängig von der Unterstützung des Back-End-Servers. Schritt 3: Antwort über HTTP/2 oder HTTP/1.1 vom Back-End-Server zu NetScaler. Schritt 4: ADC leitet die Antwort als HTTP/3-Antwort an den Client weiter.

So funktioniert das HTTP/3-Protokoll

Wenn ein Client in HTTP/3 weiß, dass ein HTTP/3-Server an einem bestimmten Endpunkt vorhanden ist, öffnet er eine QUIC-Verbindung. Das QUIC-Protokoll bietet Multiplexing und Flusskontrolle. Innerhalb jedes Streams ist die Basiseinheit der HTTP/3-Kommunikation ein Frame. Jeder Frame-Typ dient einem anderen Zweck. Zum Beispiel bilden HEADER und DATENRAHMEN die Grundlage für HTTP-Anfragen und -Antworten.

Das Multiplexen von Anfragen wird mit der QUIC-Stream-Abstraktion durchgeführt. Jedes Request-Response-Paar verbraucht einen einzelnen QUIC-Stream. Streams sind unabhängig voneinander, daher verhindert ein Stream, der blockiert ist oder einen Paketverlust erleidet, den Fortschritt in anderen Streams nicht. Server-Push ist ein in HTTP/2 eingeführter Interaktionsmodus, der es einem Server ermöglicht, einen Request-Response-Austausch an einen Client zu senden, in Erwartung, dass der Client die angegebene Anfrage stellt. Dies wird von der Netzauslastung gegen einen möglichen Latenzgewinn gehandelt. Zum Verwalten von Server-Push werden mehrere HTTP/3-Frames verwendet, wie PUSH_PROMISE, MAX_PUSH_ID und CANCEL_PUSH. Wie in HTTP/2 werden Anforderungs- und Antwortfelder zur Übertragung komprimiert. Da HPACK auf die orderweise Übertragung komprimierter Feldabschnitte angewiesen ist (eine Garantie, die nicht von QUIC bereitgestellt wird), ersetzt HTTP/3 HPACK durch QPACK. QPACK verwendet separate unidirektionale Streams, um den Status der Feldtabellen zu ändern und zu verfolgen, während codierte Feldabschnitte auf den Status der Tabelle verweisen, ohne ihn zu ändern.

So funktioniert das HTTP/3-Protokoll

HTTP3 über QUIC-Protokoll