Ugrás a tartalomhoz

SPDY

Ellenőrzött
A Wikipédiából, a szabad enciklopédiából
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)[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 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 | 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]

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]

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]

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]

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. 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: September 30,2011. {{cite web}}: Check date values in: |accessdate= (súgó)
  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..

További információk

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

Kapcsolódó szócikkek

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