HTTP/2 und HTTP/3 Protokolle im Überblick: Leistung, Sicherheit und Vorteile
Du nutzt es jeden Tag und hast das Protokoll vielleicht mal nebenläufig gelesen. Im Grunde ist es hier eine normale Entwickung in Richtung Sicherheit und Bereitstellung moderner Strukturen.
HTTP ist das Protokoll, das das World Wide Web antreibt. Während HTTP/1.1 über Jahrzehnte den Standard setzte, brachten HTTP/2 und HTTP/3 erhebliche Leistungsverbesserungen. In diesem Artikel erkläre ich Dir die Unterschiede, Vorteile und technischen Grundlagen im Prüfungsstil.
Warum HTTP weiterentwickelt werden musste
HTTP/1.1 hat zwei grundlegende Probleme:
- Head-of-Line Blocking: Über eine TCP-Verbindung läuft nur eine Anfrage nach der anderen. Browser umgehen dies durch mehrere parallele Verbindungen, aber jede Verbindung kostet Zeit für Aufbau und TLS-Handshake.
- Unkomprimierte Header: Header werden bei jeder Anfrage und Antwort vollständig und unkomprimiert übertragen. Das erzeugt bei vielen Anfragen erheblichen Overhead.
Diese Probleme führten zu HTTP/2 und HTTP/3.
HTTP/2 Grundlagen
HTTP/2 wurde 2015 als RFC 7540 veröffentlicht. Es ändert die Übertragungsschicht, nicht die Semantik. Anfragen und Antworten sehen für Webentwickler gleich aus, werden aber effizienter transportiert.
Binary Framing
HTTP/1.1 überträgt Daten als lesbaren Text. HTTP/2 verwendet ein binäres Framing. Nachrichten werden in kleine Pakete, sogenannte Frames, aufgeteilt. Diese Frames gehören zu Streams, die wiederum zu einer Verbindung gehören.
Beispiel:
Wenn Du eine Webseite aufrufst, werden HTML, CSS, JavaScript und Bilder über separate Streams innerhalb einer TCP-Verbindung übertragen.
Multiplexing
HTTP/2 ermöglicht Multiplexing. Mehrere Anfragen und Antworten laufen gleichzeitig über eine einzige TCP-Verbindung. Das beseitigt das Head-of-Line Blocking von HTTP/1.1.
Vergleich: HTTP/1.1 ist eine einspurige Straße. HTTP/2 ist eine mehrspurige Autobahn.
Header Compression mit HPACK
HTTP/2 verwendet HPACK, um Header zu komprimieren. Wiederkehrende Headerfelder werden in einer Tabelle gespeichert und nur bei Änderungen übertragen.
Beispiel: User-Agent: Mozilla/5.0 wird bei HTTP/1.1 bei jeder Anfrage neu übertragen. Bei HTTP/2 wird es nach der ersten Anfrage referenziert.
Server Push
Mit HTTP/2 kann der Server Ressourcen proaktiv an den Client senden, bevor dieser sie explizit anfragt. Wenn der Client eine HTML-Datei anfordert, kann der Server CSS und JavaScript mitschicken. Server Push ist in der Praxis umstritten, weil es zu übermäßigem Datentransfer führen kann.
Stream Priorisierung
HTTP/2 erlaubt die Priorisierung einzelner Streams. Wichtige Ressourcen wie CSS oder kritisches JavaScript werden zuerst übertragen.
HTTP/2 Leistungsvorteile
- Schnellere Ladezeiten: Multiplexing und Header Compression reduzieren Latenz.
- Weniger TCP-Verbindungen: Eine Verbindung pro Host reicht meist.
- Bessere Ressourcennutzung: Server und Netzwerk werden effizienter genutzt.
- Geringerer Overhead: Binäre Übertragung und komprimierte Header sparen Daten.
HTTP/3 Grundlagen
HTTP/3 wurde 2022 als RFC 9114 veröffentlicht. HTTP/2 setzt auf TCP, HTTP/3 auf QUIC, das auf UDP basiert.
QUIC statt TCP
QUIC ist ein von Google entwickeltes Transportprotokoll:
- Schneller Verbindungsaufbau: QUIC kombiniert Verbindungsaufbau und TLS-Handshake in einem Schritt. Das spart typischerweise ein Round Trip.
- 0-RTT Resumption: Bei erneutem Verbindungsaufbau kann der Client sofort Daten senden, ohne neuen Handshake.
- Connection Migration: QUIC verwendet eine VerbindungsID, die unabhängig von IP-Adresse und Port ist. Wechsel von WLAN auf Mobilfunk bleibt dadurch nahtlos.
UDP als Basis
UDP ist verbindungslos und unzuverlässig. Es gibt keine Garantie für Reihenfolge oder Empfang. QUIC baut auf UDP auf und übernimmt selbst Zuverlässigkeit, Reihenfolge und Flusskontrolle.
TLS 1.3 Integration
HTTP/3 erfordert TLS 1.3. Sicherheit ist bei HTTP/3 obligatorisch. TLS 1.3 ist schneller als TLS 1.2, weil es den Handshake reduziert und veraltete Algorithmen entfernt.
Verbessertes Head-of-Line Blocking
Bei HTTP/2 kann ein verlorenes TCP-Paket alle Streams blockieren. Bei HTTP/3 ist jeder Stream unabhängig. Ein verlorenes Paket blockiert nur den betroffenen Stream.
HTTP/3 Leistungsvorteile
- Noch schnellerer Verbindungsaufbau: Durch QUIC und TLS 1.3 entfällt der separate TCP-Handshake.
- Bessere Mobilität: Connection Migration ermöglicht nahtlosen Netzwerkwechsel.
- Weniger Head-of-Line Blocking: Streams sind unabhängiger.
- Höhere Sicherheit: TLS 1.3 ist obligatorisch.
- Bessere Performance bei schlechten Netzwerken: QUIC reagiert schneller auf Paketverluste.
Vergleich HTTP/1.1, HTTP/2 und HTTP/3
| Eigenschaft | HTTP/1.1 | HTTP/2 | HTTP/3 |
|---|---|---|---|
| Transportprotokoll | TCP | TCP | UDP mit QUIC |
| Übertragung | Text | Binär | Binär |
| Multiplexing | Nein | Ja | Ja |
| Header Compression | Nein | HPACK | QPACK |
| Server Push | Nein | Ja | Optional |
| Verbindungsaufbau | Langsam | Schneller | Am schnellsten |
| TLS | Optional | Optional | Obligatorisch |
| Head-of-Line Blocking | Auf Anwendungsebene | Auf TCP-Ebene | Auf Stream-Ebene |
| Connection Migration | Nein | Nein | Ja |
Sicherheit bei HTTP/2 und HTTP/3
HTTP/2 Sicherheit
HTTP/2 wird in der Praxis fast immer mit TLS eingesetzt. Wichtige Sicherheitsaspekte:
- TLS-Verschlüsselung: Daten werden während der Übertragung geschützt.
- HPACK DoS Schutz: Grenzen für Headergrößen und Streamanzahlen erschweren Denial-of-Service-Angriffe.
- Ressourcenlimits: Server begrenzen die Anzahl gleichzeitiger Streams.
HTTP/3 Sicherheit
- TLS 1.3 obligatorisch: Es gibt keine unverschlüsselte HTTP/3-Verbindung.
- Schnellere Sicherheit: Der TLS-Handshake ist effizienter.
- 0-RTT Risiken: 0-RTT Resumption kann theoretisch für Replay-Angriffe missbraucht werden. Sensible Aktionen sollten nicht im ersten 0-RTT-Paket ausgeführt werden.
Welche TLS-Version sollte mein Server unterstützen?
Wenn Du einen Webserver oder HTTP-Server einrichtest, kannst Du oft mehrere TLS-Versionen aktivieren. Die Frage ist, welche sinnvoll sind und welche Du besser deaktivierst.
Nur TLS 1.2 und TLS 1.3 aktivieren
Das ist die empfohlene Standardeinstellung für moderne Webserver:
- TLS 1.3 ist die aktuelle Version. Sie ist schneller und sicherer als TLS 1.2.
- TLS 1.2 ist noch nötig, weil einige ältere Clients oder Systeme TLS 1.3 nicht unterstützen.
TLS 1.0 und TLS 1.1 deaktivieren
Diese Versionen solltest Du nicht mehr verwenden:
- Sicherheitslücken: TLS 1.0 und TLS 1.1 enthalten bekannte Schwachstellen wie BEAST und POODLE.
- Veraltete Algorithmen: Sie unterstützen unsichere Cipher Suites wie RC4 oder SHA-1.
- Browserunterstützung: Moderne Browser warnen vor Seiten, die TLS 1.0 oder 1.1 verwenden.
SSL 2.0 und SSL 3.0 auf keinen Fall aktivieren
SSL ist die Vorgängerversion von TLS. SSL 2.0 und SSL 3.0 gelten als unsicher und sollten vollständig deaktiviert sein.
Alle TLS-Versionen aktivieren ist falsch
Es mag verlockend klingen, Kompatibilität zu maximieren, indem Du alle Versionen erlaubst. Das ist aber ein Sicherheitsrisiko:
- Downgrade-Angriffe: Ein Angreifer kann eine Verbindung auf eine schwächere TLS-Version zwingen, wenn ältere Versionen erlaubt sind.
- Veraltete Algorithmen: Ältere TLS-Versionen erlauben unsichere Verschlüsselungsverfahren.
- Compliance: Viele Sicherheitsstandards wie PCI DSS verbieten TLS 1.0 und 1.1.
Empfohlene Einstellung
Für die meisten modernen Webserver gilt:
- TLS 1.3 aktivieren: Ja, immer.
- TLS 1.2 aktivieren: Ja, für ältere Kompatibilität.
- TLS 1.1 und TLS 1.0: Nein, deaktivieren.
- SSL: Nein, auf keinen Fall.
Wenn Du ausschließlich moderne Clients bedienst, kannst Du auch TLS 1.2 deaktivieren und nur TLS 1.3 erlauben. Für öffentliche Webseiten solltest Du aber TLS 1.2 zusätzlich aktivieren, um ältere Clients nicht auszuschließen.
Und bedenke immer: Ein Client mit alten Strukturen willst Du ggf. auch nicht als Besucher haben.
Praktische Beispiele http
Die folgenden Beispiele erklären relativ gut, warum NEU auch BESSER ist.
Beispiel 1: Ladezeit einer Webseite
Eine Webseite benötigt 100 Ressourcen. Bei HTTP/1.1 öffnet der Browser mehrere TCP-Verbindungen. Bei HTTP/2 werden alle Ressourcen parallel übertragen. Bei HTTP/3 entfällt zusätzlich der TCP-Handshake.
Beispiel 2: Video-Streaming
Bei Video-Streaming ist niedrige Latenz wichtig. HTTP/3 reagiert schneller auf Netzwerkwechsel und ist weniger stark durch Paketverluste beeinträchtigt.
Beispiel 3: Mobile Apps
Mobile Geräte wechseln häufig zwischen WLAN und Mobilfunk. HTTP/3 mit QUIC kann die Verbindung trotz IP-Wechsel aufrechterhalten.
Wann verwendest Du welche Version?
- HTTP/1.1: Nur noch für ältere oder spezielle Legacy-Systeme.
- HTTP/2: Heute der weit verbreitete Standard für Webseiten und APIs.
- HTTP/3: Zunehmend verbreitet, besonders bei mobilen Anwendungen, Streaming und Cloud-Diensten.
HTTP/2 und HTTP/3 lösen die größten Schwächen von HTTP/1.1. HTTP/2 bietet durch Multiplexing und Header Compression deutliche Leistungsvorteile. HTTP/3 geht mit QUIC und UDP einen Schritt weiter und verbessert Verbindungsaufbau, Mobilität und Robustheit bei Paketverlusten. Für moderne Webentwicklung ist das Verständnis dieser Protokolle essenziell.
Buchempfehlungen zur Web-Entwicklung
Wenn Du Dich weiter mit Netzwerkprotokollen, Web-Performance und moderner Webentwicklung beschäftigen möchtest, empfehlen wir Dir die folgenden Bücher:
Web-Entwicklung
Bücher über React, Vue, Frontend und Backend
JavaScript: Das umfassende Handbuch. JavaScript lernen und verstehen von Philip Ackermann
Bei Amazon ansehenAffiliate-Link: Bei einem Kauf erhalten wir möglicherweise eine Provision.
React: Das umfassende Handbuch. Moderne Web-Apps mit React, Hooks und TypeScript von Philip Ackermann
Bei Amazon ansehenAffiliate-Link: Bei einem Kauf erhalten wir möglicherweise eine Provision.
Fullstack-Entwicklung: Das Handbuch für Webentwickler
Bei Amazon ansehenAffiliate-Link: Bei einem Kauf erhalten wir möglicherweise eine Provision.
FAQ: HTTP/2 und HTTP/3
1. Was ist der Hauptunterschied zwischen HTTP/2 und HTTP/3?
2. Was ist Multiplexing bei HTTP/2?
3. Was ist QUIC?
4. Warum verwendet HTTP/3 UDP statt TCP?
5. Was ist HPACK?
6. Was ist Server Push?
7. Was ist Connection Migration?
8. Was ist 0-RTT Resumption?
9. Was ist QPACK?
10. Ist HTTP/3 schneller als HTTP/2?
11. Was ist Head-of-Line Blocking?
12. Welche TLS-Version wird für HTTP/3 benötigt?
13. Was sind Replay-Angriffe bei 0-RTT?
14. Wann sollte ich HTTP/2 verwenden?
15. Wann sollte ich HTTP/3 verwenden?
Weiter im API Lernpfad
Der nächste Artikel im API Lernpfad behandelt API-Design-Prinzipien — die wichtigsten Prinzipien für gutes API-Design von Ressourcen-Struktur bis Naming Conventions.





