SPDY - SPDY

SPDY (ausgesprochen "speedy") ist ein veraltetes Kommunikationsprotokoll mit offener Spezifikation , das hauptsächlich von Google für den Transport von Webinhalten entwickelt wurde . SPDY manipuliert den HTTP- Datenverkehr mit dem besonderen Ziel, die Latenz beim Laden von Webseiten zu reduzieren und die Websicherheit zu verbessern . SPDY erreicht eine reduzierte Latenz durch Komprimierung , Multiplexing und Priorisierung, obwohl dies von einer Kombination aus Netzwerk- und Website-Bereitstellungsbedingungen abhängt. Der Name "SPDY" ist eine Marke von Google und kein Akronym .

SPDY wurde die Grundlage für die HTTP/2-Spezifikation. HTTP/2 wich jedoch von SPDY ab und schließlich umfasste HTTP/2 alle Anwendungsfälle von SPDY. Nachdem HTTP/2 als Standard ratifiziert wurde, haben wichtige Implementierer, darunter Google, Mozilla und Apple, SPDY zugunsten von HTTP/2 eingestellt. Ab 2021 unterstützt kein moderner Browser SPDY.

Geschichte

HTTP/2 wurde erstmals diskutiert, als sich herausstellte, dass SPDY bei Implementierern (wie Mozilla und nginx) an Bedeutung gewann und signifikante Verbesserungen gegenüber HTTP/1.x zeigte. Nach einer Aufforderung zur Einreichung von Vorschlägen und einem Auswahlverfahren wurde SPDY als Grundlage für HTTP/2 ausgewählt. Seitdem hat es eine Reihe von Änderungen gegeben, die auf Diskussionen in der Arbeitsgruppe und Rückmeldungen von Umsetzern basieren.

Im Juli 2012 gab die SPDY-Entwicklungsgruppe öffentlich bekannt, dass sie auf eine Standardisierung hinarbeitet (verfügbar als Internet Draft ). Der erste Entwurf von HTTP/2 verwendete SPDY als Arbeitsgrundlage für seinen Spezifikationsentwurf und die Bearbeitung.

Während des gesamten Prozesses waren die Kernentwickler von SPDY an der Entwicklung von HTTP/2 beteiligt , darunter Mike Belshe und Roberto Peon.

Chromium , Mozilla Firefox , Opera , Amazon Silk , Internet Explorer und Safari drückten damals ihre Unterstützung für SPDY aus.

Im Februar 2015 kündigte Google an, dass nach der Ratifizierung des HTTP/2-Standards die Unterstützung für SPDY eingestellt und die Unterstützung für SPDY eingestellt werde. Am 15. Mai 2015 wurde HTTP/2 offiziell als RFC  7540 ratifiziert .

Am 11. Februar 2016 gab Google bekannt, dass Chrome SPDY nach dem 15. Mai 2016, dem einjährigen Jubiläum von RFC  7540, das HTTP/2 standardisierte, nicht mehr unterstützen wird .

Am 25. Januar 2019 gab Apple bekannt, dass SPDY zugunsten von HTTP/2 eingestellt und in zukünftigen Versionen entfernt werden würde.

Google hat die SPDY-Unterstützung in Google Chrome 51 entfernt . Mozilla hat sie in Firefox 50 entfernt. Apple hat die Technologie in macOS 10.14.4 und iOS 12.2 eingestellt.

Design

Das Ziel von SPDY ist es, die Ladezeit von Webseiten zu verkürzen. Dies wird erreicht, indem die Übertragung von Webseiten-Unterressourcen priorisiert und gemultiplext wird, sodass nur eine Verbindung pro Client erforderlich ist. TLS - Verschlüsselung ist nahezu ubiquitär in SPDY Implementierungen und Übertragungs Header ist gzip - oder DEFLATE gestaucht nach Design (im Gegensatz zu HTTP, wo die Header als Menschen lesbaren Text gesendet werden). Darüber hinaus können Server Inhalte andeuten oder sogar pushen, anstatt auf einzelne Anfragen für jede Ressource einer Webseite zu warten.

SPDY erfordert die Verwendung von SSL/TLS (mit TLS-Erweiterung ALPN ) aus Sicherheitsgründen, unterstützt aber auch den Betrieb über reines TCP . Die SSL-Anforderung dient der Sicherheit und der Vermeidung von Inkompatibilitäten, wenn die Kommunikation über einen Proxy erfolgt .

Beziehung zu HTTP

SPDY ersetzt HTTP nicht; es ändert die Art und Weise, wie HTTP-Anfragen und -Antworten über die Leitung gesendet werden . Dies bedeutet, dass alle vorhandenen serverseitigen Anwendungen ohne Modifikation verwendet werden können, wenn eine SPDY-kompatible Übersetzungsschicht eingesetzt wird.

SPDY ist praktisch ein Tunnel für die Protokolle HTTP und HTTPS. Beim Senden über SPDY werden HTTP-Anfragen verarbeitet, tokenisiert, vereinfacht und komprimiert. Jeder SPDY-Endpunkt verfolgt beispielsweise, welche Header in früheren Anforderungen gesendet wurden, und kann ein erneutes Senden der Header, die sich nicht geändert haben, vermeiden. diejenigen, die gesendet werden müssen, werden komprimiert.

Die IETF-Arbeitsgruppe für HTTPbis hat den Entwurf von HTTP/2 veröffentlicht . Als Ausgangspunkt wurde SPDY (draft-mbelshe-httpbis-spdy-00) gewählt.

Protokollversionen

SPDY ist ein versioniertes Protokoll. In seinen Steuerrahmen gibt es 15 dedizierte Bits, um die Version des Sitzungsprotokolls anzuzeigen.

  • Version 1: Version 1 des SPDY-Protokolls wird nicht mehr verwendet.
  • Version 2: wird bald eingestellt. Nginx unterstützt SPDY/2 in Versionen vor 1.5.10. Firefox 28 und neuere Versionen von Chrome lassen die Unterstützung dafür fallen. OpenLiteSpeed ​​1.1 und höher unterstützen SPDY/2.
  • Version 3: SPDY v3 führte Unterstützung für die Flusskontrolle ein, aktualisierte das Komprimierungswörterbuch und entfernte verschwendeten Speicherplatz aus bestimmten Frames, zusammen mit anderen kleineren Fehlerbehebungen. Firefox unterstützt SPDY v3 in Firefox 15. OpenLiteSpeed ​​1.1 und höher unterstützen SPDY/3.
  • Version 3.1: SPDY v3.1 führte Unterstützung für die Flusskontrolle auf Sitzungsebene ein und entfernte den CREDENTIALS-Rahmen (und die zugehörigen Fehlercodes). Firefox 27 hat SPDY 3.1-Unterstützung hinzugefügt. OpenLiteSpeed ​​1.2.7 führt SPDY/3.1-Unterstützung ein. Nginx 1.5.10 unterstützt SPDY/3.1. F5 BIGIP 11.6 unterstützt SPDY/3.1.
  • Version 4.0: SPDY v4 alpha3 ist stärker auf den HTTP/2-Entwurf ausgerichtet; Es verfügt über eine neue Streamflusskontrolle und Fehlercodes, die mit dem HTTP/2-Entwurf vereinheitlicht sind.

Protokollunterstützung

Für die Verwendung innerhalb von HTTPS benötigt SPDY die TLS- Erweiterung Next Protocol Negotiation (NPN) oder Application-Layer Protocol Negotiation (ALPN), daher hängt die Browser- und Serverunterstützung von der HTTPS-Bibliothek ab.

OpenSSL 1.0.1 oder höher führt NPN ein. Patches zum Hinzufügen von NPN-Unterstützung wurden auch für NSS und TLSLite geschrieben.

Security Support Provider Interface (SSPI) von Microsoft hat die NPN-Erweiterung in seiner TLS-Implementierung nicht implementiert. Dies hat die Aufnahme von SPDY in die neuesten .NET Framework-Versionen verhindert. Da die SPDY-Spezifikation verfeinert wird und HTTP/2 voraussichtlich die SPDY-Implementierung enthalten wird, könnte man erwarten, dass Microsoft die Unterstützung freigibt, nachdem HTTP/2 fertiggestellt ist.

Client (Browser) Support und Nutzung and

  • Google Chrome / Chrom . SPDY-Sitzungen in Chrome können über den URI überprüft werden : chrome://net-internals/#events&q=type:SPDY_SESSION%20is:active. Es gibt einen Befehlszeilenschalter für Google Chrome ( ), der eine frühe, experimentelle Implementierung von WebSocket über SPDY ermöglicht. Die SPDY-Protokollfunktionalität kann (de)aktiviert werden, indem die Einstellung "SPDY/4 aktivieren" auf der lokalen Seite umgeschaltet wird . Chromium wird voraussichtlich Anfang 2016 die Unterstützung für SPDY und Next Protocol Negotiation zugunsten von HTTP/2 und ALPN einstellen . Ab Version 40.x im Februar 2015 hat Chrome die Unterstützung für SPDY/3 bereits eingestellt und unterstützt in Zukunft nur noch SPDY/3.1. Dies hat dazu geführt, dass Apache-Websites beim Besuch von Google Chrome ohne SPDY-Unterstützung sind.--enable-websocket-over-spdychrome://flags
  • Firefox unterstützt SPDY 2 ab Version 11 und standardmäßig aktiviert seit 13 und höher. (Auch SeaMonkey Version 2.8+.) Die SPDY-Protokollfunktionalität kann (de)aktiviert werden, indem die network.http.spdy.enabledVariable in umgeschaltet wird about:config. Firefox 15 hat Unterstützung für SPDY 3 hinzugefügt. Firefox 27 hat Unterstützung für SPDY 3.1 hinzugefügt. Firefox 28 hat die Unterstützung von SPDY 2 entfernt about:networking(oder das HTTP/2- und SPDY-Indikator-Add-On) zeigt an, ob eine Website SPDY verwendet.
  • Der Opera-Browser hat ab Version 12.10 Unterstützung für SPDY hinzugefügt.
  • Internet Explorer 11 hat die Unterstützung für SPDY Version 3 hinzugefügt, jedoch nicht für die Windows 7-Version. Ein Problem bei einigen Benutzern von Windows 8.1 und Internet Explorer 11 ist, dass Google beim ersten Laden "Seite nicht gefunden" sagt, aber beim erneuten Laden ist es in Ordnung. Eine Lösung hierfür besteht darin, SPDY/3 in Internetoptionen > Erweitert zu deaktivieren. Nach Version 11 wird der IE die Unterstützung von SPDY einstellen, da HTTP/2 übernommen wird .
  • Der Silk- Browser von Amazon für den Kindle Fire verwendet das SPDY- Protokoll , um mit seinem EC2- Dienst zum Rendern von Webseiten zu kommunizieren .
  • Safari 8 und Anwendungen von Drittanbietern in OS X 10.10 und iOS 8 bieten Unterstützung für SPDY 2, 3 und 3.1.

Server-Support und -Nutzung

Ab Mai 2021 unterstützen etwa 0,1 % aller Websites SPDY, teilweise aufgrund der Umstellung auf HTTP/2 . Im Jahr 2016 waren NGINX und Apache die wichtigsten Anbieter von SPDY-Datenverkehr. Im Jahr 2015 hat NGINX 1.9.5 die SPDY-Unterstützung zugunsten von HTTP/2 eingestellt.

Einige Google-Dienste (z. B. Google-Suche , Gmail und andere SSL- fähige Dienste) verwenden SPDY, wenn verfügbar. Die Anzeigen von Google werden auch von SPDY-fähigen Servern geschaltet.

Eine kurze Geschichte der SPDY-Unterstützung bei den wichtigsten Web-Playern:

  • Im November 2009 kündigte Google SPDY als internes Projekt an, um die Geschwindigkeit des Webs zu erhöhen.
  • Im September 2010 hat Google SPDY in Chrome 6 auf allen Plattformen veröffentlicht.
  • Im Januar 2011 hat Google SPDY für alle Google-Dienste bereitgestellt.
  • Im März 2012 aktivierte Twitter SPDY auf seinen Servern und war damals die zweitgrößte bekannte Site, die SPDY einsetzte.
  • Im März 2012 kündigte der Open-Source- Jetty-Webserver die Unterstützung für SPDY in den Versionen 7.6.2 und 8.1.2 an, während andere Open-Source-Projekte an der Implementierung der Unterstützung für SPDY arbeiteten, darunter Node.js , Apache (mod_spdy), curl und, Nginx .
  • Im April 2012 begann Google mit der Bereitstellung von SPDY-Paketen für Apache-Server, was dazu führte, dass einige kleinere Websites SPDY-Unterstützung anbieten.
  • Im Mai 2012 kündigte F5 Networks die Unterstützung von SPDY in seinen BIG-IP Application Delivery Controllern an.
  • Im Juni 2012 kündigte der Open-Source-Webserver Nginx die Unterstützung von SPDY an.
  • Im Juli 2012 kündigte Facebook Umsetzungspläne für SPDY an. Bis März 2013 wurde SPDY von einigen ihrer öffentlichen Webserver implementiert.
  • Im August 2012 kündigte WordPress.com die Unterstützung von SPDY (mit Nginx) in allen gehosteten Blogs an.
  • Im Juni 2013 kündigte LiteSpeed ​​Technologies die Unterstützung von SPDY/2 und SPDY/3 auf OpenLiteSpeed, ihrem Open-Source-HTTP-Server, an. Die Unterstützung für SPDY/3.1 wurde im November 2013 angekündigt.
  • Im Januar 2014 gab Synology bekannt, dass SPDY im neuen DSM 5.0 enthalten ist.
  • Im Februar 2014 kündigte CloudFlare mit nginx die automatische Unterstützung von SPDY v3.1 für alle Kunden mit SSL/TLS-Zertifikaten an.
  • Im Mai 2014 kündigte MaxCDN mit nginx die Unterstützung für SPDY v3.1 über die Pull-Zone-Einstellungen der Kunden und deren API an.
  • Im Oktober 2014 zeigt Yahoo die Unterstützung von SPDY auf der Yahoo Homepage — www.yahoo.com
  • Im September 2015 hat die neueste Version des Nginx-Webservers die SPDY-Unterstützung zugunsten von HTTP/2 eingestellt
  • Im Mai 2016 veröffentlicht CloudFlare Patches für den Nginx-Webserver, die Patches unterstützen gleichzeitig HTTP/2 und SPDY.

Laut W3Techs verwenden ab Mai 2021 die meisten SPDY-fähigen Websites nginx, wobei der LiteSpeed-Webserver an zweiter Stelle steht.

Siehe auch

Verweise

Externe Links