SPDY – Der Nachfolger von HTTP?

SPDY ist ein von Google entwickeltes Netzwerkprotokoll, das zum Ziel hat das Web schneller zu machen. Die Ladezeiten von Webseiten sollen mit dem Protokoll signifikant verringert werden. Es ist keine komplette Neuentwicklung, SPDY ändert die Art wie HTTP Anfragen und Antworten über die Leitung geschickt werden. Es ist im Prinzip ein weiterer Layer, der HTTP Anfragen bearbeitet, vereinfacht und komprimiert. Somit sind alle serverseitigen Anwendungen kompatibel und können ohne Änderungen weiterverwendet werden.

Das Protokoll befindet sich momentan noch in einem experimentellen Status. Bisher wird es nur von Google Chrome, Mozilla Firefox (seit Version 11 implementiert und mit Version 13 standardmäßig aktiviert), Mozilla Seamonkey (Version 2.8 implementiert, Version 2.10 aktiviert) und Amazon Silk (zum EC2 Rendering Service) unterstützt. SPDY ist jedoch nicht der einzige Kandidat auf eine Nachfolge von HTTP 1.1. Microsoft Speed + Mobility und einige Vorschläge von Open Source Autoren werden ebenfalls von einer Arbeitsgruppe der IETF (Internet Engineering Task Force) untersucht.

Mit SPDY ändern sich die URLs nur unwesentlich, die Webseiten verwenden dann HTTPS für sichere Verbindungen anstatt HTTP. Somit ist es für den Nutzer nicht ersichtlich, ob eine Webseite SPDY verwendet. Es gibt jedoch Browserplugins (Chrome, Firefox), die SPDY erkennen.

Ziele

  • Halbierung der Seitenladezeiten, durch Verbesserung der Latenz
  • Minimaler Umstellungsaufwand
  • Viele parallele HTTP Abfragen mit einer einzelnen TCP Verbindung
  • Reduzierung der benötigten Bandbreite
  • SSL als Transportprotokoll verwenden für mehr Sicherheit
  • Serverseite Möglichkeit den Datenverkehr zu starten

Features

  • Multiplexe Datenströme

SPDY erlaubt beliebig viele parallele Ströme über eine einzelne TCP Verbindung, weil Anfragen auf einem Kanal verschachtelt sind, ist die Effizienz von TCP viel höher. Weniger Verbindungen müssen erstellt werden und weniger, aber “dichter bepackte” Pakete werden verwendet.

  • Priorisierung der Anfragen

Es können bei SPDY zwar beliebig viele Anfragen zur gleichen Zeit beantwortet werden, jedoch ist die Bandbreite der Verbindung begrenzt. Damit unwichtige Daten keine kritischen Daten blockieren, kann jeder Anfrage eine Priorität zugewiesen werden.

  • HTTP Header Komprimierung

Die Komprimierung des Headers führt zu weniger Paketen und Daten die übertragen werden müssen, die Komprimierungsrate liegt bei über 80%.

  • Server Push

SPDY bietet die Möglichkeit, dass der Server von sich aus Daten zum Client schickt. Dies wird durch den X-Associated-Content Header realisiert, dieser informiert den Client, dass der Server Daten schickt, bevor der Client nach ihnen verlangt hat.

  • Server hint

Bei diesem Feature schickt der Server nicht automatisch die Daten zum Client, sondern er schlägt dem Client vor, dass er nach den Ressourcen fragen soll.

Mögliche Verbreitung

Aktuell wird SPDY serverseitig von dem Apache HTTP Server und nginx per Plugin unterstützt, diese zwei Server haben aktuell zusammen einen Marktanteil von ca. 75% (laut Netcraft Statistik von Juni 2012), somit wäre es also ohne große Schwierigkeiten möglich bei einem Großteil der Webseiten SPDY einzusetzen.

Graph of market share for top servers across all domains, August 1995 - June 2012

Auf der Clientseite sieht es zwar nicht ganz so gut aus, aber immerhin ca. 58% (laut StatCounter im Juni 2012) weltweit setzen, mit den aktuellen Versionen von Chrome und Firefox, einen SPDY kompatiblen Browser ein.

Statcounter Statistik für Juni 2012

Sicherheit

Aktuell wird ein Großteil der Anfragen im Internet über HTTP unverschlüsselt gesendet. Angreifer können jedoch den Datenstrom abgreifen und weil die Abfragen und Antworten im Klartext in den Paketen stehen, ist es ein leichtes sensible Daten abzugreifen. SPDY hingegen verwendet für alle Abfragen eine SSL Verschlüsselung. Dies ist zwar etwas langsamer und rechenintensiver, jedoch ist es für Angreifer nicht mehr einfach möglich an die Daten zu kommen. Die Daten sind nur noch für Server und Client sichtbar, das Internet wird damit ein Stück sicherer.

Fazit

SPDY ist eine sinnvolle Weiterentwicklung von HTTP, durch die vollständige Abwärtskompatibilität ist es einfach für Seitenbetreiber zu migrieren. Auch durch die bereits recht weit fortgeschrittene Verbreitung von SPDY fähigen Clients und Servern sehe ich gute Chancen, dass sich SPDY etabliert. Man muss sicherlich sehen, was die IETF macht, ob HTTP 2.0 eine neues Protokoll wird oder ob mit Google zusammen SPDY weiter verbessert wird und der neue Standard im Web wird. Aktuell kann es nicht schaden SPDY zu verwenden, es gibt etliche Vorteile und nur einen geringen Aufwand auf Serverseite das Protokoll anzubieten, falls man Apache oder nginx verwendet.