SPDY

SPDY (uttalas "speedy") är ett föråldrat kommunikationsprotokoll med öppen specifikation utvecklat för att transportera webbinnehåll . SPDY blev grunden för HTTP/2 -specifikationen. Men HTTP/2 avvek från SPDY och så småningom subsumerade HTTP/2 alla användningsfall av SPDY. Efter att HTTP/2 ratificerats som standard avvisade stora implementerare, inklusive Google, Mozilla och Apple, SPDY till förmån för HTTP/2. Sedan 2021 har ingen modern webbläsare stöd för SPDY.

av 2009 och implementerades 2010. SPDY manipulerar HTTP- trafik, med särskilda mål att minska webbsidans laddningsfördröjning och förbättra webbsäkerheten . SPDY uppnår minskad latens genom komprimering , multiplexering och prioritering, även om detta beror på en kombination av nätverks- och webbplatsdistributionsvillkor. Namnet "SPDY" är ett varumärke som tillhör Google och är inte en akronym .

Historia

HTTP/2 diskuterades först när det blev uppenbart att SPDY fick draghjälp hos implementerare (som Mozilla och nginx), och visade betydande förbättringar jämfört med HTTP/1.x. Efter en utlysning och en urvalsprocess valdes SPDY som grund för HTTP/2. Sedan dess har det skett ett antal förändringar, baserat på diskussioner i arbetsgruppen och feedback från implementerare.

Från och med juli 2012 uppgav gruppen som utvecklade SPDY offentligt att den arbetade mot standardisering (tillgänglig som ett Internetutkast ) . Det första utkastet till HTTP/2 använde SPDY som arbetsbas för dess specifikationsutkast och redigering. IETF:s arbetsgrupp för HTTPbis har släppt utkastet till HTTP/2 . SPDY (draft-mbelshe-httpbis-spdy-00) valdes som utgångspunkt.

Under hela processen har kärnutvecklarna av SPDY varit involverade i utvecklingen av HTTP/2, inklusive både Mike Belshe och Roberto Peon.

Chromium , Mozilla Firefox , Opera , Amazon Silk , Internet Explorer och Safari uttryckte stöd för SPDY vid den tiden.

  I februari 2015 meddelade Google att efter ratificering av HTTP/2-standarden skulle stödet för SPDY fasas ut och att stödet för SPDY skulle dras in. Den 15 maj 2015 ratificerades HTTP/2 officiellt som RFC 7540 .

  Den 11 februari 2016 meddelade Google att Chrome inte längre skulle stödja SPDY efter den 15 maj 2016, ettårsdagen för RFC 7540 som standardiserade HTTP/2 .

Den 25 januari 2019 meddelade Apple att SPDY skulle fasas ut till förmån för HTTP/2 och skulle tas bort i framtida utgåvor.

Google tog bort SPDY-stödet i Google Chrome 51 som släpptes 2016. Mozilla tog bort det i Firefox 50. Apple har tagit bort tekniken i macOS 10.14.4 och iOS 12.2.

Protokollversioner

SPDY är ett versionerat protokoll. SPDY-kontrollramar innehåller 15 dedikerade bitar för att indikera versionen av protokollet som används för den aktuella sessionen.

  • Version 1: version 1 av SPDY-protokollet används inte längre.
  • Version 2: kommer snart att upphöra. Nginx stöder SPDY/2 i versioner före 1.5.10. Firefox 28 och nyare versioner av Chrome släpper stöd för det. OpenLiteSpeed ​​1.1 och uppåt stöder SPDY/2.
  • Version 3: SPDY v3 introducerade stöd för flödeskontroll, uppdaterade komprimeringsordlistan och tog bort bortkastat utrymme från vissa ramar, tillsammans med andra mindre buggfixar. Firefox stöder SPDY v3 i Firefox 15. OpenLiteSpeed ​​1.1 och uppåt stöder SPDY/3.
  • Version 3.1: SPDY v3.1 introducerade stöd för sessions-lagerflödeskontroll och tog bort CREDENTIALS-ramen (och tillhörande felkoder). Firefox 27 har lagt till stöd för SPDY 3.1. OpenLiteSpeed ​​1.2.7 introducerar SPDY/3.1-stöd. Nginx 1.5.10 stöder SPDY/3.1. F5 BIGIP 11.6 stöder SPDY/3.1.
  • Version 4.0: SPDY v4 alpha3 är mer anpassad till HTTP/2-utkastet; den har en ny strömflödeskontroll och felkoder förenade med HTTP/2-utkastet.

Design

Målet med SPDY är att minska laddningstiden för webbsidor. Detta uppnås genom att prioritera och multiplexera överföringen av webbsidors underresurser så att endast en anslutning per klient krävs. TLS- kryptering är nästan allestädes närvarande i SPDY-implementeringar, och överföringshuvuden är gzip - eller DEFLATE - komprimerade genom design (i motsats till HTTP, där rubrikerna skickas som läsbar text). Dessutom kan servrar antyda eller till och med pusha innehåll istället för att invänta individuella förfrågningar för varje resurs på en webbsida.

SPDY kräver användning av SSL/TLS (med TLS-tillägget ALPN ) för säkerhet men det stöder också drift över vanlig TCP . Kravet på SSL är för säkerhet och för att undvika inkompatibilitet när kommunikation sker över en proxy .

Relation till HTTP

SPDY ersätter inte HTTP; det ändrar hur HTTP-förfrågningar och svar skickas över tråden . Detta innebär att alla befintliga applikationer på serversidan kan användas utan ändringar om ett SPDY-kompatibelt översättningslager sätts på plats.

SPDY är faktiskt en tunnel för HTTP- och HTTPS-protokollen. När de skickas över SPDY bearbetas HTTP-förfrågningar, tokeniseras, förenklas och komprimeras. Till exempel, varje SPDY-slutpunkt håller reda på vilka rubriker som har skickats i tidigare förfrågningar och kan undvika att skicka om rubrikerna som inte har ändrats; de som måste skickas komprimeras.

Protokollstöd

För användning inom HTTPS kräver SPDY TLS- tillägget Next Protocol Negotiation (NPN) eller Application-Layer Protocol Negotiation (ALPN) så webbläsar- och serverstöd beror på HTTPS-biblioteket.

OpenSSL 1.0.1 eller senare introducerar NPN. Patchar för att lägga till NPN-stöd har också skrivits för NSS och TLSLite.

Security Support Provider Interface (SSPI) från Microsoft har inte implementerat NPN-tillägget till dess TLS-implementering. Detta har förhindrat SPDY-inkludering i de senaste .NET Framework-versionerna. Eftersom SPDY-specifikationen håller på att förfinas och HTTP/2 förväntas inkludera SPDY-implementering kan man förvänta sig att Microsoft släpper support efter att HTTP/2 har slutförts.

Klient (webbläsare) stöd och användning

  • Google Chrome / Chromium . SPDY-sessioner i Chrome kan inspekteras via URI : n chrome://net-internals/#events&q=type:SPDY_SESSION%20is:active . Det finns en kommandoradsväxel för Google Chrome ( -- enable-websocket-over-spdy ) som möjliggör en tidig, experimentell implementering av WebSocket över SPDY. SPDY-protokollets funktionalitet kan (av)aktiveras genom att växla inställningen "Aktivera SPDY/4" på den lokala sidan chrome://flags . Chromium förväntas ta bort stödet för SPDY och Next Protocol Negotiation i början av 2016, till förmån för HTTP/2 och ALPN . Från och med version 40.x i februari 2015 har Chrome redan tagit bort stödet för SPDY/3 och stöder endast SPDY/3.1 framöver. Detta har gjort att Apache-webbplatser saknar SPDY-stöd när de besöks från Google Chrome.
  • Firefox stöder SPDY 2 från version 11 och är standardaktiverad sedan 13 och senare. (Även SeaMonkey version 2.8+.) SPDY-protokollets funktionalitet kan (av)aktiveras genom att växla variabeln network.http.spdy.enabled i about:config . Firefox 15 har lagt till stöd för SPDY 3. Firefox 27 har lagt till stöd för SPDY 3.1. Firefox 28 har tagit bort stödet för SPDY 2. about:networking (eller HTTP/2- och SPDY-indikatortillägget) visar om en webbplats använder SPDY.
  • Opera-webbläsaren lade till stöd för SPDY från och med version 12.10.
  • Internet Explorer 11 lade till stöd för SPDY version 3, men inte för Windows 7-versionen. Ett problem som upplevs av vissa användare av Windows 8.1 och Internet Explorer 11 är att vid den första inläsningen säger Google "Sidan hittades inte" men vid omladdning går det bra. En lösning för detta är att inaktivera SPDY/3 i Internetalternativ > Avancerat. Efter version 11 kommer IE att ta bort stödet för SPDY, eftersom det kommer att använda HTTP/2 .
  • Amazons Silk -webbläsare för Kindle Fire använder SPDY- protokollet för att kommunicera med deras EC2 -tjänst för webbsidorrendering.
  • Safari 8 och tredjepartsapplikationer i OS X 10.10 och iOS 8 lägger till stöd för SPDY 2, 3 och 3.1.

Serversupport och användning

Från och med maj 2021 stöder cirka 0,1 % av alla webbplatser SPDY, delvis på grund av övergången till HTTP/2 . Under 2016 var NGINX och Apache de största leverantörerna av SPDY-trafik. Under 2015 släppte NGINX 1.9.5 SPDY-stödet till förmån för HTTP/2.

Vissa Google-tjänster (t.ex. Google Sök , Gmail och andra SSL- aktiverade tjänster) använder SPDY när det är tillgängligt. Googles annonser visas också från SPDY-aktiverade servrar.

En kort historik om SPDY-stöd bland stora webbspelare:

  • I november 2009 tillkännagav Google SPDY som ett internt projekt för att öka hastigheten på webben.
  • I september 2010 släppte Google SPDY i Chrome 6 på alla plattformar.
  • I januari 2011 implementerade Google SPDY i alla Googles tjänster.
  • I mars 2012 aktiverade Twitter SPDY på sina servrar, vilket gjorde den till den näst största platsen som är känd för att distribuera SPDY.
  • I mars 2012 tillkännagav Jetty Web Server stöd för SPDY i version 7.6.2 och 8.1.2, medan andra projekt med öppen källkod arbetade med att implementera stöd för SPDY, inklusive Node.js , Apache (mod_spdy), curl och Nginx .
  • I april 2012 började Google tillhandahålla SPDY-paket för Apache-servrar vilket ledde till att några mindre webbplatser gav SPDY-stöd.
  • I maj 2012 tillkännagav F5 Networks stöd för SPDY i sina BIG-IP-applikationsleveranskontroller.
  • I juni 2012 tillkännagav Nginx open source webbserver stöd för SPDY.
  • I juli 2012 tillkännagav Facebook implementeringsplaner för SPDY. I mars 2013 implementerades SPDY av några av deras offentliga webbservrar.
  • I augusti 2012 tillkännagav WordPress.com stöd för SPDY (med hjälp av Nginx) i alla deras värdbloggar.
  • I juni 2013 tillkännagav LiteSpeed ​​Technologies stöd för SPDY/2 och SPDY/3 på OpenLiteSpeed, deras HTTP-server med öppen källkod. Stöd för SPDY/3.1 tillkännagavs i november 2013.
  • I januari 2014 meddelade Synology att SPDY ingår i nya DSM 5.0.
  • I februari 2014 tillkännagav CloudFlare som använder nginx automatiskt stöd för SPDY v3.1 för alla kunder med SSL/TLS-certifikat.
  • I maj 2014 tillkännagav MaxCDN som använder nginx stöd för SPDY v3.1 via kundernas Pull Zone-inställningar och deras API.
  • I oktober 2014 visar Yahoo stöd för SPDY på Yahoos hemsida – www.yahoo.com
  • I september 2015 släppte den senaste versionen av Nginx-webbservern SPDY-stödet till förmån för HTTP/2
  • I maj 2016 släpper CloudFlare patchar till Nginx webbserver, patcharna stöder HTTP/2 och SPDY samtidigt.

Enligt W3Techs, från och med maj 2021, använder de flesta SPDY-aktiverade webbplatser nginx, med LiteSpeed-webbservern på andra plats.

Se även

externa länkar