SPDY

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

A SPDY (ejtsd „szpídi”, a „gyors, sebes” jelentésű angol „speedy” kifejezésből) 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. 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ő), kliensoldali referenciamegvalósításai pedig a Google Chrome, a Mozilla Firefox é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 priorizálás segítségével éri el. A név nem mozaikszó, hanem a „speedy” rövid alakja. A SPDY a Google bejegyzett védjegye.

Design

A SPDY célja a weboldalak betöltődési idejének csökkentése. 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.

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.

HTTP-vel való kapcsolata

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. 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).

Gyorsítótárazá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.

Protokolltámogatás

Ahhoz, hogy a HTTPS-sel együttműködhessen, az SPDY igényli a Next Protocol Negotiation (NPN) nevű TLS-kiterjesztést, í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, az NSS-hez is hozzáadták a támogatását.

Protokollverziók

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. 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

A Google Chrome és a Chromium böngészők használják a SPDY-t 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.

A Mozilla Firefox 11 és a SeaMonkey 2.8 támogatja a SPDY protokollt, bár alapértelmezetten nincs bekapcsolva. Az about:config alatt, a network.http.spdy.enabled beállításnál engedélyezhető. A Firefox 13-ban tervezik alapértelmezetten bekapcsolni az SPDY-t. 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.

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.

Szerveroldali támogatása

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.

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.

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, és más open source projektek is dolgoznak a támogatáson, mint a node.js, az Apache (mod_spdy), a curl, és a nginx is.

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.

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

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.

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

Kritikája

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

  1. 1 2 3 4 5 "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. 1 2 3 "Mozilla Bug 528288 - Implement SPDY protocol".
  5. ↑ Schachinger, Kristine (2011. augusztus 11.). "5 Black Hat Attack Vulnerabilities & Defensive Strategies". 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 (2009. november 12.). "SPDY: Google wants to speed up the web by ditching HTTP". Ars Technica. Hozzáférés: 2009. november 13.
  9. ↑ Mirko Lindner (2009. november 13.). "Google stellt HTTP-Alternative SPDY vor". Hozzáférés: 2011. október 21.(németül)
  10. ↑ "WG Review: Hypertext Transfer Protocol Bis (httpbis)". 2014. szeptember 3. dátummal az eredeti címről archiválva. Hozzáférés: 2012. november 15.
  11. ↑ "What's next for HTTP". Hozzáférés: 2012. május 18. {{cite web}}: |first1= missing |last1= (súgó); Unknown parameter |lastl= ignored (súgó)
  12. ↑ "Server Push and Server Hints - The Chromium Projects". Chromium.org. 2012. június 5. dátummal az eredeti címrő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". openssl-library.org. Hozzáférés: 2026. március 20.
  16. ↑ "TLS Next Protocol Negotiation. Section: Implementations". 2012. július 30. dátummal az eredeti címrő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. dátummal az eredeti címrő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 (2011. szeptember 28.). "Amazon's Silk Web browser adds new twist to old idea". 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. dátummal az eredeti címrő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. dátummal az eredeti címről archiválva. Hozzáférés: 2012. május 14.
  26. ↑ "Jetty Feature SPDY". 2012. május 27. dátummal az eredeti címről archiválva. Hozzáférés: 2012. május 14.
  27. ↑ "indutny/node-spdy · GitHub". Github.com. 2013. október 30. dátummal az eredeti címről archiválva. Hozzáférés: 2012. május 10.
  28. ↑ Fedor Indutny (2012. január 24.). "What the $%@! is SPDY - blog.nodejitsu.com - scaling node.js applications one callback at a time". blog.nodejitsu.com. 2012. május 9. dátummal az eredeti címrő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. dátummal az eredeti címrő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. dátummal az eredeti címrő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. dátummal az eredeti címrő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.

Források

További információk

Kapcsolódó szócikkek

Fordítá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.