Was ist HTTP3 und QUIC?
Dieses Tutorial gibt Dir eine Einführung und die Umsetzung in die Praxis.
Starten wir!
Was ist HTTP?
HTTP steht für „Hypertext Transfer Protocol“ und ist das Protokoll, das für die Übertragung von einem Teil der Daten im Internet verwendet wird. Es bildet die Grundlage für den Austausch von Informationen zwischen Deinem Webbrowser und einem Server.
Ein Client ist ein Gerät wie Dein Computer oder Handy, das eine Anfrage sendet – Abrufen einer Webseite. Ein Server ist ein Computer, der auf Anfragen wartet und mit einer Webseite / Daten darauf antwortet.
Beispielablauf von HTTP
Anfrage (Request): Wenn Du eine Webseite in Deinem Browser öffnest, sendet Dein Browser eine HTTP-Anfrage an den Server, auf dem die Webseite gespeichert ist. Beispiel einer Anfrage:
GET /index.html HTTP/1.1
Host: www.beispiel.com
Hier fordert der Browser die Datei „index.html“ von der Website „www.beispiel.com“ an.
Antwort (Response): Der Server antwortet auf die Anfrage des Browsers mit einer HTTP-Antwort. Beispiel einer Antwort:
HTTP/1.1 200 OK Content-Type: text/html
<html>
<body>
Inhalt der Webseite...
</body>
</html>
Hier gibt der Server an, dass die Anfrage erfolgreich war (Statuscode 200) und sendet den HTML-Inhalt der Webseite zurück. HTTP-Statuscodes geben an, ob eine Anfrage erfolgreich war oder ob ein Problem aufgetreten ist. Zum Beispiel:
- 200 OK: Erfolgreiche Anfrage.
- 404 Not Found: Die angeforderte Ressource wurde nicht gefunden.
- 500 Internal Server Error: Ein Serverfehler ist aufgetreten.
Was ist QUIC?
QUIC ist ein Protokoll, welches regelt, wie Daten von einem Server zu Deinem Handy kommen. Das Protokoll überträgt Webseiten, Bilder, Texte, Programme und vieles mehr.
HTTP 1 und 2 mit TCP waren die Vorgänger, welche QUIC ersetzen will. QUIC ist ein Multitasker, welche viele Schritte kombiniert und dabei superschlank ist. Schon bei der ersten Verbindung gibt QUIC alle nötigen Informationen mit, um eine Verschlüsselung zu starten und sendet direkt relevante Daten.
Noch schneller geht es mit QUIC-0-RTT, welche bei einer kürzlichen Verbindung einfach direkt Daten sendet. Dieses Vorgehen ist „revolutionär“ im Vergleich zu den alten Protokollen, welche sehr formalistisch alle Schritte einzeln abgearbeitet haben, bevor überhaupt das erste Bit von der Webseite übertragen wurde.
Was ist das Problem von HTTP 1?
HTTP/1.0 und HTTP/1.1 sind ältere Versionen des HTTP-Protokolls, während HTTP/2 eine Weiterentwicklung darstellt.
- Langsame Ladezeiten: Bei HTTP/1.0 wurde für jede Ressource eine separate TCP-Verbindung aufgebaut. Das führte zu langen Ladezeiten, insbesondere bei Webseiten mit vielen Ressourcen (Bilder, Styles, externe Skripte, Bibliotheken, Videos).
- Unnötige Verbindungen: Jedes Mal, wenn eine Ressource geladen wurde, wurde eine neue Verbindung hergestellt und nach dem Laden geschlossen. Dies führte zu einem Mehraufwand und erhöhtem Antwortzeit (Latenz).
Was ist das Problem von HTTP 2?
- Netzwerkfragmentierung: In einigen Netzwerken kann es zu Problemen mit der Fragmentierung von Paketen kommen, insbesondere wenn es um die Übertragung großer Datenmengen geht.
- Upgradeprobleme: Die Einführung von HTTP/2 erfordert die Aktualisierung sowohl auf Server- als auch auf der Clientseite. Einige ältere (Web)Systeme oder Infrastrukturen unterstützen möglicherweise nicht HTTP/2.
- Potenzielle Latenz bei kleinen Dateien: Während HTTP/2 die Ladezeiten für komplexe Seiten mit vielen Ressourcen verbessert, könnte es bei kleinen Dateien oder einzelnen Ressourcen aufgrund des Overheads zu einer geringen Latenzsteigerung kommen.
- Ressourcenpriorisierung nicht immer optimal: Obwohl HTTP/2 Ressourcenpriorisierung unterstützt, kann die Art und Weise, wie dies von verschiedenen Servern implementiert wird, zu unterschiedlichen Ergebnissen führen, und die Priorisierung wird möglicherweise nicht immer optimal genutzt.
Deshalb ist HTTP/3 für Dich ein Must-Have
HTTP/3 oder auch Quick UDP Internet Connections (QUIC)
- Verbessert die Performance: UDP ist ein Kapselung für Daten, welche deutlich schlanker als TCP ist, welche bislang der Standard ist.
- Weniger Latenz: Bevor das erste produktive Bit (also die erste Textzeile aus diesem Beitrag) übertragen wird, braucht es bei QUIC weniger Verbindung als bei TCP / HTTP 2
- Stauverhinderer: Nicht nur auf der Autobahn staut es sich, sondern auch im Netzwerk. Bei QUIC sollen die Nutzerprogramme, also der Browser, den Stau auflösen und die Pakete wieder in die richtige Reihenfolge bringen.
Wieso ist HTTP/3 nicht beliebt?
HTTP3 ist lange noch nicht der Standard in der IT-Welt, obwohl dieser sehr gute Performance und Effizienz verspricht. Viele Programme nutzen immer noch HTTP 1 oder HTTP 1.1. Die Steigerung zu HTTP/2 ist bereits enorm. Die meisten Browser-Nutzer (Firefox, Chrome) können seit Jahren HTTP/3 verwenden, aber die Webseitenanbieter schlafen. Das hat mehrere Gründe:
- HTTP/3 Implementierung sind oft noch experimentell. Die Hersteller wollen nur auf robuste Software setzen
- HTTP/3 aktiv angeschaltet werden – viele Betreiber juckt es nicht. Der Server läuft doch, bzw. sie kennen die Technologie nicht.
- Schlechte Verfügbarkeit – nicht nur Webserver nutzten HTTP, sondern eine Menge an Software. Hier muss erst der Code neu kompiliert werden. Einige Software, die schon 20 Jahre im Einsatz ist, wird in der Regel nicht mehr neu kompiliert, weil die Entwickler über alle Berge sind oder die verkaufenden Unternehmen es nicht mehr anbieten wollen.
Tutorial – Turbo Boost anschalten
Wenn Du Deinen eigenen Server hast und Software installieren kannst, kannst Du Dir die neuste Version von NGINX (ab 1.25.0) installieren. HTTP/3 ist am 15.12.2023 im experimentellen Status, aber Du kannst die Software verwenden.
QUIC funktioniert nur, wenn Du ein SSL-Zertifikat hast. Wenn Du bisher unverschlüsselt durch das Leben gekommen bist, solltest Du jetzt zu HTTPS upgraden. QUIC bettet die Verschlüsselung gleich in ihrer ersten Anfrage ein, um Zeit zu sparen.
CDN
Am Einfachsten kannst Du NGINX mit einen Content Delivery Network oder einem Reverse Proxy einrichten. Ein CDN erstellt viele Kopien Deiner Webseite weltweit und positioniert diese so, dass die Inhalte überall auf der Welt schnell verfügbar sind. Um die Bereitstellung noch weiter zu beschleunigen, bietet Cloudflare den HTTP3 Modus an.
- Logge Dich in das Cloudflare Dashboard ein:
- Wählen Dein Konto / Zone
- Gehe auf Geschwindigkeit > Optimierung > Protokoll-Optimierung.
- Schalte für HTTP/3 den Schalter auf Ein.
Cloudflare arbeitet dabei wie ein Reverse Proxy. Er nimmt die Anfragen von Kunden entgegen und nimmt die Inhalte von Deiner Webseite und transferiert diese zu den Kunden.
Reverse Proxy
Du kannst auch Dein eigener Mittelsmann sein und Deinen eigenen Reverse Proxy betreiben. Ein Beispiel ist Caddy 2, die Software kannst Du einfach mit Docker Compose installieren und loslegen.
- Überprüfe, ob Caddy auf Version 2 ist:
$ caddy version
v2.0.0-rc.2
- Füge am Anfang der Caddyfile die Option hinzu:
{
experimental_http3
}
- Erlaube UDP (und TCP) Traffic über die Firewall. Bei ufw geht es z. B. mit
sudo ufw allow 443/udp
Hier ist die Doku für Profis, welche in die Materie einstelligen wollen: https://nginx.org/en/docs/quic.html
Hallo Steffen,
ich finde deine Arbeit wirklich ausgezeichnet, hab zwar nie was umgesetzt aber es ist schon zu lesen auf was man so Beachten muss. Vielen Dank! Hast du schon mal was von Deeper Network gehört ein DPN Adapter? Ich überlege es mir zu kaufen aber ich bin mir nicht sicher ob das wirklich helfen soll?
Hallo Fafa,
danke. Mit Deeper Network kenne ich mich nicht aus, aber vom Prinzip bieten diese ein Overlay-Netzwork an, welche ähnlich zu dem TOR Netzwerk ist. Du verschleierst Deine Identität, in dem die Anfragen über die Geräte des Unternehmens zufällig routest. Der Verkauf solcher Gerät ist meines Erachtens nicht sinnvoll, weil andere Overlay-Netzwerk nur mit einer Software auskommen kann. Den Coin, welchen Du Dir bei der Mitarbeit verdienst, kann ich nicht bewerten. Anderen Projekte finanzieren sich ohne Geld – du spendest den Strom für den Betrieb der Software.