SPDY

A Wikipédiából, a szabad enciklopédiából

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.

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 prioritizá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]

Design[szerkesztés | forrásszöveg szerkesztése]

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 prioritizá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 prioritizá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 | forrásszöveg szerkesztése]

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 | forrásszöveg szerkesztése]

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 | forrásszöveg szerkesztése]

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 | forrásszöveg szerkesztése]

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 | forrásszöveg szerkesztése]

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 | forrásszöveg szerkesztése]

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 | forrásszöveg szerkesztése]

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.

Jegyzetek[szerkesztés | forrásszöveg szerkesztése]

  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)
  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. (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
  17. SPDY Protocol - Draft 2: "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
  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
  24. spdy-dev mailing list: SPDY on Google servers?
  25. Twitter Adopts SPDY
  26. Jetty Feature SPDY
  27. indutny/node-spdy · GitHub. Github.com. (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. (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. (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. http://www.f5.com/news-press-events/press/2012/20120508b.html
  34. Announcing SPDY draft 2 implementation in nginx. Nginx, Inc., 2012. június 15. (Hozzáférés: 2012. június 16.)
  35. Beaver, Doug: HTTP2 Expression of Interest. W3C. (Hozzáférés: 2012. július 15.)

Források[szerkesztés | forrásszöveg szerkesztése]


További információk[szerkesztés | forrásszöveg szerkesztése]


Kapcsolódó szócikkek[szerkesztés | forrásszöveg szerkesztése]

Fordítás[szerkesztés | forrásszöveg szerkesztése]

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.