HTTP/2 – das neue Protokoll fürs Internet
HTTP/2 komprimiert Daten und erlaubt Server-Pushs
von Andreas Dumont - 14.03.2015
Eine große Webseite braucht zum vollständigen Laden gut 50 HTTP-Anfragen. Dadurch entsteht ein nicht unerheblicher HTTP-Overhead. Hier setzt die neue Komprimierungsfunktion von HTTP/2 an, bei der ein neuer Algorithmus namens HPACK zum Einsatz kommt. Er schließt auch die HTTP-Header ein und reduziert damit das Datenaufkommen. HTTP/2 überträgt zudem die Inhalte binär codiert. Binäre Daten lassen sich effizienter analysieren, sind kompakter und weniger fehleranfällig als textbasierte Protokolle wie HTTP 1.x.
Push-Funktion
Um nicht auf Folgeanfragen vom Client warten zu müssen, kann der Server auch selbst Datenübertragungen initiieren. Man spricht hier vom Push-Verfahren.
Mit HTTP/2 kann ein Server also von sich aus Daten auf den Weg schicken, von denen er annimmt, dass der Client sie ohnehin gleich braucht. Das erspart dem Client gesonderte Anfragen etwa für Javascripts oder CSS-Dateien.
HTTP/2 versus HTTP 1.1 |
|||
HTTP 1.1 |
Dauer |
HTTP/2 |
Dauer |
Der Client baut eine TCP-Verbindung zum Server auf |
1 RTT für SYN/SYN-ACK |
Der Client baut eine TCP-Verbindung zum Server auf |
1 RTT für SYN/SYN-ACK |
Der Client sendet GET für die Datei „index.html“ |
1 RTT |
Der Client sendet GET für die Datei „index.html“ und erhält per Push vom Server die Dateien „javascript.js“ und „stylesheet.css“ |
1 RTT |
Parsing: Der Client liest „index.html“ und muss „javascript.js“ und „stylesheet.css“ nachladen |
10 ms |
||
Der Client sendet GET für „javascript.js“ auf der bestehenden Verbindung |
1 RTT |
||
Der Client baut eine zweite TCP-Verbindung auf |
1 RTT für SYN/SYN-ACK |
||
Der Client sendet GET für „stylesheet.css“ |
1 RTT |
||
Summe |
5 RTT + 10 ms |
2 RTT |
Für eine gewöhnliche Webseite mit Javascript und Stylesheet werden mit dem neuen Protokoll nur zwei Round Trip Times (RTT) benötigt – gegenüber fünf RTT plus die Zeit fürs Parsing bei HTTP 1.1.
Sicherheit
Mit HTTP/2 ändert sich auch in Sachen Sicherheit einiges: Die HTTP-Arbeitsgruppe hatte sich zwar zunächst weitgehend darauf verständigt, alle Datentransfers bei HTTP/2 verschlüsselt abzuwickeln. Es sollte nur noch URLs mit https:// geben. Diese Haltung hat das Gremium aber wieder aufgegeben. Nun soll Verschlüsselung per TLS – Transport Layer Security – anders als bei SPDY bei HTTP/2 nicht obligatorisch sein.
Die Möglichkeit, HTTP/2 auch unverschlüsselt zu verwenden, wollte die Arbeitsgruppe nicht komplett ausschließen, etwa weil Proxy- und Firewall-Hersteller Zugriff auf die Inhalte benötigen. Die Entwickler von Chrome und Firefox haben jedoch angekündigt, HTTP/2 nur über verschlüsselte Verbindungen zu unterstützen.
Unternehmensnetzwerke
Der neue Standard soll vollständig abwärtskompatibel zu HTTP 1.1 sein. System-Administratoren und Entwickler müssen also nicht Monate damit verbringen, ältere Websites zu aktualisieren oder die Unternehmensnetzwerke anzupassen. Die Reduzierung von Anfragen an die Server und die damit einhergehende Reduzierung der Verbindungen nimmt viel Last aus dem Unternehmensnetzwerk.
Microsoft hat die Unterstützung von HTTP/2 mit der neuen Version des Internet Explorers angekündigt, die das Unternehmen voraussichtlich im Herbst zusammen mit Windows 10 ausliefern will.