A SPDY (ejtsd „szpídi”, a „gyors, sebes” jelentésű angol „speedy” kifejezésből)[1] az informatikában egy elsődlegesen a Google által fejlesztett kísérleti, alkalmazási rétegbeli protokoll, amelyet webes tartalmak továbbítására hoztak létre.[1] Bár jelenleg nem tartozik a szabványos protokollok közé, a SPDY fejlesztőcsapata nyilvánosan kijelentette, hogy törekednek a szabványosítására (jelenleg Internet Draft-ként elérhető[2]), kliensoldali referenciamegvalósításai pedig a Google Chrome,[3] a Mozilla Firefox[4] és az Opera részét képezik.

SPDY
FejlesztőGoogle
Kategóriahálózati protokoll
A SPDY weboldala

A SPDY igen hasonlít a HTTP-hez; annak egyes részeit lecseréli, más részeit kiegészíti. Fő céljai a weblapok késleltetési idejének csökkentése mellett a webes biztonság javítása. A weblapok gyorsabb betöltődését tömörítés, multiplexálás és priorizálás segítségével éri el.[1] A név nem mozaikszó, hanem a „speedy” rövid alakja.[5] A SPDY a Google bejegyzett védjegye.[6]

A SPDY célja a weboldalak betöltődési idejének csökkentése.[7] A HTTP protokollt egy fájl hatékony átvitelére tervezték; azóta a weboldalak sokkal komplexebbek lettek, nem ritka, hogy 60-nál is több képet, CSS-fájlokat, JavaScripteket, cookie-kat kell továbbítani megjelenítésükhöz. Ennek felgyorsítását az SPDY úgy éri el, hogy a weboldal számos erőforrásának priorizált és multiplexelt átvitelét biztosítja, méghozzá oly módon, hogy a kliens és a szerver között csak egyetlen kapcsolatra van szükség.[1][8]

A protokollt a kezdetektől úgy tervezték, hogy minden tartalom TLS-lel titkosítva és DEFLATE-tel (gzippel) tömörítve (a HTTP-vel ellentétben a fejléceket is tömöríti) kerüljön átvitelre. További gyorsítási lehetőséget jelent, hogy több tartalom együttes lekérésekor az általában statikus fejléceket (User-Agent, Host, Accept*) csak egyszer küldi át. A priorizálás célja, hogy egy nagyméretű fájl átvitele ne lassítsa le az oldal letöltődését. Fontos különbség még, hogy míg a HTTP-nél a szerver passzívan várakozik, hogy a kliens egyenként lekérje a weboldal fájljait, a SPDY esetében a szerverek javasolhatnak (hint) vagy akár le is küldhetnek (push) tartalmakat a kliensre.[9]

HTTP-vel való kapcsolata

szerkesztés

A SPDY újdonságai csak a kliens és a szerver közötti kommunikáció módozatait érintik; nem módosították a HTTP protokoll olyan részeit, ami miatt a weboldalakon változtatni kellene.[1] Ez azt jelenti, hogy a már meglévő szerveroldali alkalmazásokat változtatás nélkül tovább lehet használni egy SPDY-kompatibilitási réteg közbeiktatásával; csak a kliensen futó webböngészőn (user agent) és a webkiszolgáló alkalmazáson kell módosítani. A SPDY-n keresztül küldött HTTP-kérések feldolgozásra, tokenizálásra, egyszerűsítésre és tömörítésre kerülnek. Például minden SPDY végpont számon tartja, hogy milyen fejlécek lettek már elküldve a megelőző kérések során, és ezeket nem kell újra elküldenie; amit mégis el kell küldeni, azt tömörítve küldi.

Az IETF working group for HTTPbis 2012-ben megkezdte munkáját a HTTP 2.0-n, melynek a SPDY (draft-mbelshe-httpbis-spdy-00) lesz a kiinduló pontja (a Microsoft HTTP Speed+Mobility indítványa is versenyben volt egy ideig).[10][11]

Gyorsítótárazás

szerkesztés

A szerveroldali push-mechanizmus kitolja a böngésző felé a tartalmat a gyorsítótár létezésétől függetlenül, ami a sávszélesség pocsékolásához vezethet. A kerülő megoldás a szerveroldali „hint” (javaslat) mechanizmus használata.[12]

Protokolltámogatás

szerkesztés

Ahhoz, hogy a HTTPS-sel együttműködhessen, az SPDY igényli a Next Protocol Negotiation (NPN)[13] nevű TLS-kiterjesztést,[14] így a böngésző- és szerveroldali támogatás is a HTTPS-programkönyvtár támogatásának függvénye.

Az OpenSSL 1.0.1 és újabbi változatai ismerik az NPN-t,[15] az NSS-hez is hozzáadták a támogatását.[16]

Protokollverziók

szerkesztés

Az SPDY protokoll verziószámozást használ. A vezérlőkeretekben 15 dedikált bit jelzi a protokoll verziószámát. Az SPDY 1-es verziója már sehol sincs használatban.[17] A 3-as verzió a jelenleg legelterjedtebb, a 3.1-es, illetve 4 alpha verziókat pedig a Chrome tesztváltozataiban tesztelik.

Böngészőtámogatása

szerkesztés

A Google Chrome és a Chromium böngészők használják a SPDY-t[18][19] A Chrome-ban futó SPDY-munkamenetek a következő különleges URL-en tekinthetők meg: chrome://net-internals/#events&q=type:SPDY_SESSION%20is:active .

Létezik a Google Chrome-nak egy parancssori kapcsolója (--enable-websocket-over-spdy), ami lehetővé teszi a WebSocket SPDY protokoll fölötti korai, kísérleti implementációjának használatát.[20]

A Mozilla Firefox 11 és a SeaMonkey 2.8 támogatja a SPDY protokollt,[4] bár alapértelmezetten nincs bekapcsolva. Az about:config alatt, a network.http.spdy.enabled beállításnál engedélyezhető.[4] A Firefox 13-ban tervezik alapértelmezetten bekapcsolni az SPDY-t.[21] A Mozilla Firefox 18-as verziója alapértelmezés szerint támogatja az SPDY-t, ráadásul bekapcsolva találjuk mind az 1-es, 2-es és 3-as verziót is.

Az Amazon Kindle Fire-jében alkalmazott Silk böngészője a SPDY protokoll segítségével kommunikál az optimalizált, felhőalapú weboldal-megjelenítést nyújtó EC2 szolgáltatással.[22]

Az Opera böngésző 2012. november 6-án megjelent 12.1-es verziója az SPDY2 és SPDY3 protokollt is támogatja.

Az Internet Explorer 11 Windows 8.1 alatt rendelkezik SPDY-támogatással, Windows 7 alatt nem.[23]

Szerveroldali támogatása

szerkesztés

Jelenleg (2012 márciusában) nem általánosan elterjedt a weboldalakon a SPDY támogatása. Egyes Google-szolgáltatások (pl. Google kereső, Gmail, Chrome-szinkronizáció és a Google hirdetések kiszolgálása) ha lehetséges, SPDY-t használnak a böngészőkkel való titkosított kommunikáció során.[24]

A Twitter 2012 márciusában kapcsolta be az SPDY támogatását kiszolgálóin, így az övé a második legnagyobb, SPDY-t alkalmazó weboldal.[25]

Szintén 2012 márciusában jelent meg az open source Jetty Web Server 7.6.2-es verziója, már SPDY-támogatással,[26] és más open source projektek is dolgoznak a támogatáson, mint a node.js,[27][28] az Apache (mod_spdy),[29] a curl,[30] és a nginx is.[31]

2012 áprilisában a Google megjelentette az Apache-hoz írt SPDY csomagját, azóta egyes kisebb weboldalak is bevezették az SPDY támogatását.[32]

2012 májusában az F5 Networks bejelentette, hogy támogatja a SPDY-t BIG-IP application delivery controllerjeiben.[33]

2012 júniusában az NGINX, Inc. bejelentette a SPDY támogatását nyílt forrású webkiszolgálójában, az Nginx-ben.[34]

2012 júliusában a Facebook bejelentette SPDY-vel kapcsolatos implementációs terveit.[35]

Kritikája

szerkesztés

A SPDY kritikusai a kötelező TLS réteg miatti magas CPU-használatot és a proxy cache-elhetőség hiányát említik.

  1. a b c d e SPDY: An experimental protocol for a faster web. Chromium Developer Documentation. (Hozzáférés: 2009. november 13.)
  2. SPDY Protocol. (Hozzáférés: 2012. február 8.)
  3. SPDY on Google servers?. (Hozzáférés: 2012. február 28.)
  4. a b c Mozilla Bug 528288 - Implement SPDY protocol
  5. 5 Black Hat Attack Vulnerabilities & Defensive Strategies, 2011. augusztus 11. (Hozzáférés: 2011. szeptember 29.)
  6. Google Permissions: Guidelines for Third Party Use of Google Brand Features. Google. (Hozzáférés: 2011. szeptember 30.)
  7. A 2x Faster Web. Official Google Chromium Blog, 2009. november 11. (Hozzáférés: 2009. november 13.)
  8. Iljitsch van Beijnum: SPDY: Google wants to speed up the web by ditching HTTP. Ars Technica, 2009. november 12. (Hozzáférés: 2009. november 13.)
  9. Mirko Lindner: Google stellt HTTP-Alternative SPDY vor, 2009. november 13. (Hozzáférés: 2011. október 21.)(németül)
  10. WG Review: Hypertext Transfer Protocol Bis (httpbis). [2014. szeptember 3-i dátummal az eredetiből archiválva]. (Hozzáférés: 2012. november 15.)
  11. What's next for HTTP. (Hozzáférés: 2012. május 18.)
  12. Server Push and Server Hints - The Chromium Projects. Chromium.org. [2012. június 5-i dátummal az eredetiből archiválva]. (Hozzáférés: 2012. május 10.)
  13. Internet-Draft: Transport Layer Security (TLS) Next Protocol Negotiation Extension
  14. NPN protocol and explanation about it's need to tunnel SPDY over HTTPS
  15. Openssl 1.0.1 changelog
  16. TLS Next Protocol Negotiation. Section: Implementations. [2012. július 30-i dátummal az eredetiből archiválva]. (Hozzáférés: 2012. május 14.)
  17. SPDY Protocol - Draft 2 Archiválva 2012. május 25-i dátummal a Wayback Machine-ben: "Currently, the only valid string is "spdy/2" (spdy/1 isn't implemented anywhere anymore)."
  18. Chromium SPDY client implementation
  19. Chromium: SPDY proxy examples. [2010. december 23-i dátummal az eredetiből archiválva]. (Hozzáférés: 2011. január 18.)
  20. List of Chromium Command Line Switches
  21. Mozilla Bug 724563
  22. Ryan Paul: Amazon's Silk Web browser adds new twist to old idea, 2011. szeptember 28. (Hozzáférés: 2011. október 21.)
  23. Paul Thurrott's Supersite for Windows: Microsoft Releases Internet Explorer 11 for Windows 7. [2013. november 11-i dátummal az eredetiből archiválva]. (Hozzáférés: 2013. november 11.)
  24. spdy-dev mailing list: SPDY on Google servers?
  25. Twitter Adopts SPDY. [2012. március 11-i dátummal az eredetiből archiválva]. (Hozzáférés: 2012. május 14.)
  26. Jetty Feature SPDY. [2012. május 27-i dátummal az eredetiből archiválva]. (Hozzáférés: 2012. május 14.)
  27. indutny/node-spdy · GitHub. Github.com. [2013. október 30-i dátummal az eredetiből archiválva]. (Hozzáférés: 2012. május 10.)
  28. Fedor Indutny: What the $%@! is SPDY - blog.nodejitsu.com - scaling node.js applications one callback at a time. blog.nodejitsu.com, 2012. január 24. [2012. május 9-i dátummal az eredetiből archiválva]. (Hozzáférés: 2012. május 10.)
  29. mod-spdy - Apache SPDY module - Google Project Hosting. Code.google.com. (Hozzáférés: 2012. május 10.)
  30. libspdy. daniel.haxx.se, 2011. október 18. [2012. május 13-i dátummal az eredetiből archiválva]. (Hozzáférés: 2012. május 10.)
  31. https://twitter.com/#!/nginxorg/status/192301063934705665
  32. mod_spdy - mod_spdy — Google Developers. Developers.google.com. (Hozzáférés: 2012. május 10.)
  33. Archivált másolat. [2012. június 11-i dátummal az eredetiből archiválva]. (Hozzáférés: 2012. augusztus 6.)
  34. Announcing SPDY draft 2 implementation in nginx. Nginx, Inc., 2012. június 15. [2012. június 17-i dátummal az eredetiből archiválva]. (Hozzáférés: 2012. június 16.)
  35. Beaver, Doug: HTTP2 Expression of Interest. W3C. (Hozzáférés: 2012. július 15.)

További információk

szerkesztés

Kapcsolódó szócikkek

szerkesztés

Fordítás

szerkesztés

Ez a szócikk részben vagy egészben a SPDY című angol Wikipédia-szócikk ezen változatának fordításán alapul. Az eredeti cikk szerkesztőit annak laptörténete sorolja fel. Ez a jelzés csupán a megfogalmazás eredetét és a szerzői jogokat jelzi, nem szolgál a cikkben szereplő információk forrásmegjelöléseként.