HTTP/1.1 öffnete für jede Anfrage eine neue Verbindung oder verwendete einige wenige wieder, wodurch Browser gezwungen waren, etwa sechs parallele Verbindungen zu einer Website zu öffnen. Jede Verbindung kostete einen eigenen Handshake, und eine langsame Antwort auf einer Verbindung blockierte die anderen dahinter. Das Web war aus strukturellen, nicht aus technischen Gründen langsam.
Googles SPDY bewies die Lösung: die Methoden, Header und Statuscodes von HTTP genau so zu belassen, wie sie sind, den Datenverkehr aber in eine einzige Verbindung zu verlagern, die viele gemultiplexte Streams trägt. Die IETF übernahm diese Arbeit und standardisierte sie als HTTP/2 in RFC 7540, mit binärer Rahmung und HPACK-Header-Komprimierung.
Da die Semantik identisch blieb, konnten Server und Browser es übernehmen, ohne neu zu überdenken, was eine HTTP-Anfrage bedeutet. Der Transport änderte sich; der Vertrag nicht, sodass jede Website die Geschwindigkeitsverbesserung kostenlos erhielt.
Die Semantik von HTTP einfrieren; Streams über eine einzige Verbindung laufen lassen.
Weil die HTTP-Semantik unangetastet blieb, konnten bestehende Server Unterstützung hinzufügen, ohne zu ändern, wie Anwendungen Antworten schreiben.
Eine Verbindung mit vielen Streams beseitigt den Engpass von sechs Verbindungen und die Steuer auf den Verbindungsaufbau bei jeder Ressource.
HPACK komprimiert wiederholte Header, sodass dieselben Cookie- und User-Agent-Felder nicht mehr bei jeder Anfrage erneut gesendet werden.
Server Push ermöglichte es einem Server, Assets zu senden, bevor der Client sie anforderte, und sparte so einen Roundtrip ein.
Ein kompatibilitätsbewahrender Transport kann gewinnen, selbst wenn sich die Semantik nicht ändert; den Vertrag beibehalten und die Leitungen austauschen.
RFC 7540 wurde im Mai 2015 finalisiert und wurde zum Standard für praktisch den gesamten HTTPS-Datenverkehr. Sein wichtigstes verbleibendes Problem war die Head-of-Line-Blockierung von TCP, die direkt zu QUIC und HTTP/3 führte. HTTP/2 ermöglichte außerdem Request Smuggling und das 2023 entdeckte DoS-Muster „HTTP/2 Rapid Reset“.
DEN BELEGEN FOLGEN
Die Quellen
- RFC 7540: Hypertext Transfer Protocol Version 2 (HTTP/2) IETF / RFC Editor · rfc-editor.org
- HTTP/2 Wikipedia · en.wikipedia.org