RFC 7540 standardisiert HTTP/2

15.05.2015

Die neue Version des HTTP-Protokolls hat es nun zum RFC-Standard gebracht. 

Der jetzt veröffentlichte RFC 7540 standardisiert das neu entwickelte HTTP/2-Protokoll. Innerhalb der letzten zwei Jahre hat die zuständige IETF Working Group "httpbis" diverse Entwürfe erarbeitet, testweise implementiert und Interoperabilitätstests durchgeführt. Anfang dieses Jahres hat die Internet Engineering Steering Group (IESG) schließlich den Vorschlag für das HTTP/2-Protokoll angenommen , der dem Draft 17 entspricht. Zu großen Teilen basiert HTTP/2 auf einem Protokoll namens SPDY , das von Google-Programmierern entwickelt wurde. 

Das wesentliche Entwicklungsziel von HTTP/2 war, die Ladezeiten von Webseiten zu reduzieren. Dazu bietet es einige Techniken, zum Beispiel den Transport mehrerer Anfragen über eine einzige TCP-Verbindung, um so den Overhead für den Verbindungsaufbau zu reduzieren. Dazu führt HTTP/2 eine neue Zwischenschicht ein, bei der die gewohnten HTTP-Protokollelemente in Binärpakete (Frames) zerlegt und verpackt werden. Hierbei stecken die Header und die Nutzdaten in verschiedenen Frames, die über einen sogenannten Stream verschickt werden, der Anfrage und Antworten bündelt, die zu einer Verbindung zwischen Client und Server gehören. Zwischen den beiden kann es gleichzeitig mehrere Streams geben, die aber alle innerhalb einer einzigen TCP-Verbindung abgewickelt werden.

Die Priorisierung von Requests sorgt dafür, dass wichtige Anfragen gegenüber anderen bevorzugt behandelt werden. Das soll das sogenannte Head-of-Line-Blocking verhindern, bei dem der Transport von Nachrichten zum Stillstand kommt, weil einer der beiden Kommunikationspartner auf ein wichtiges Paket wartet. Zusätzlich hat der Server die Möglichkeit, von sich aus Daten zum Client zu schicken, wenn er weiß, dass jener sie demnächst brauchen wird (Server Push). Allerdings gibt es bisher kaum erprobten Strategien, nach welchen Gesichtspunkten Clients und Server Prioritäten verwenden beziehungsweise von selbst Daten vom Server zum Client pushen.

Mit einem Verfahren namens HPACK, das formal in einem zweiten Standard festgelegt ist, komprimiert HTTP/2 die übertragenen Header, um das Datenvolumen zu reduzieren. Hierbei kommt aber kein Komprimierungsverfahren wie Zip zum Einsatz, sondern eine indexbasierte Methode, die auf beiden Seiten der Verbindung Header-Felder speichert und in den folgenden Frames nur noch die geänderten Felder überträgt. Dank der zusätzlichen Schicht des Binär-Framings konnten die Entwickler die HTTP-1-Semantik mit den bekannten HTTP-Methoden (GET, POST,...) sowie Response- und Status-Codes erhalten. Für Anwendungen auf Server- und Client-Seite ist das neue Protokoll damit transparent, denn sie kümmern sich nicht um das darunterliegende Binary Framing. 

Verschlüsselung per TLS ist in HTTP/2 nicht, wie anfangs geplant, obligatorisch, aber die meisten Browser-Entwickler wie Google und Mozilla haben angekündigt, das neue Protokoll nur mit TLS-Unterstützung zu implementieren. Google hat das neue Protokoll in Chrome implementiert, der Support von SPDY soll Anfang 2016 auslaufen. Außerdem soll die TLS-Erweiterung NPN (Next Protocol Negotiation) durch ALPN (Application-Layer Protocol Negotiation) ersetzt werden, um das in einer TLS-verschlüsselten Verbindung verwendete Protokoll auszuhandeln. Auch in Firefox ist seit Version 36 der Support für HTTP/2 integriert. Beim Internet Explorer können Anwender der Windows 10 Technical Preview mit HTTP/2 experimentieren. 

Auf der Serverseite müssen die Entwickler meist etwas größere Umbauten vornehmen. So berichtet Owen Garrett von Nginx , dass viele Arbeiten am Kern des Webservers nötig waren, um eine leistungsfähige Implementierung von SPDY zu erreichen. Der Lohn dafür sei allerdings, dass derzeit mehr beinahe 95 Prozent aller SPDY-fähigen Webserver auf Nginx laufen. Der Umbau auf HTTP/2 sollte nun einfacher vonstatten gehen und Ende 2015 abgeschlossen sein.

Ein Sorgenkind ist dagegen der populäre Webserver Apache. Hier gibt es einige Vorarbeiten von Google, das ein SPDY-Modul für Apache geschrieben und es später an die Apache Software Foundation übergeben hat. Seither ist damit aber wenig passiert und offizielle Pläne zu HTTP/2 sind nicht bekannt. Ein Third-Party-Modul auf Github mit dem Name " mod_h2 " befindet sich noch im Anfangsstadium. Auch die Windows 10 Technical Preview bringt eine Version des Internet Information Server (IIS) mit, der HTTP/2 beherrscht.

Ähnliche Artikel

comments powered by Disqus
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Ausgabe /2023