SPDY
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ő | |
Kategória | há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]
Design
szerkesztésA 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ésA 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ésA 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ésAhhoz, 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ésAz 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ésA 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ésJelenleg (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ésA 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- ↑ a b c d e SPDY: An experimental protocol for a faster web. Chromium Developer Documentation. (Hozzáférés: 2009. november 13.)
- ↑ SPDY Protocol. (Hozzáférés: 2012. február 8.)
- ↑ SPDY on Google servers?. (Hozzáférés: 2012. február 28.)
- ↑ a b c Mozilla Bug 528288 - Implement SPDY protocol
- ↑ 5 Black Hat Attack Vulnerabilities & Defensive Strategies, 2011. augusztus 11. (Hozzáférés: 2011. szeptember 29.)
- ↑ Google Permissions: Guidelines for Third Party Use of Google Brand Features. Google. (Hozzáférés: 2011. szeptember 30.)
- ↑ A 2x Faster Web. Official Google Chromium Blog, 2009. november 11. (Hozzáférés: 2009. november 13.)
- ↑ 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.)
- ↑ Mirko Lindner: Google stellt HTTP-Alternative SPDY vor, 2009. november 13. (Hozzáférés: 2011. október 21.)(németül)
- ↑ 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.)
- ↑ What's next for HTTP. (Hozzáférés: 2012. május 18.)
- ↑ 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.)
- ↑ Internet-Draft: Transport Layer Security (TLS) Next Protocol Negotiation Extension
- ↑ NPN protocol and explanation about it's need to tunnel SPDY over HTTPS
- ↑ Openssl 1.0.1 changelog
- ↑ 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.)
- ↑ 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)."
- ↑ Chromium SPDY client implementation
- ↑ Chromium: SPDY proxy examples. [2010. december 23-i dátummal az eredetiből archiválva]. (Hozzáférés: 2011. január 18.)
- ↑ List of Chromium Command Line Switches
- ↑ Mozilla Bug 724563
- ↑ Ryan Paul: Amazon's Silk Web browser adds new twist to old idea, 2011. szeptember 28. (Hozzáférés: 2011. október 21.)
- ↑ 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.)
- ↑ spdy-dev mailing list: SPDY on Google servers?
- ↑ Twitter Adopts SPDY. [2012. március 11-i dátummal az eredetiből archiválva]. (Hozzáférés: 2012. május 14.)
- ↑ Jetty Feature SPDY. [2012. május 27-i dátummal az eredetiből archiválva]. (Hozzáférés: 2012. május 14.)
- ↑ 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.)
- ↑ 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.)
- ↑ mod-spdy - Apache SPDY module - Google Project Hosting. Code.google.com. (Hozzáférés: 2012. május 10.)
- ↑ 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.)
- ↑ https://twitter.com/#!/nginxorg/status/192301063934705665
- ↑ mod_spdy - mod_spdy — Google Developers. Developers.google.com. (Hozzáférés: 2012. május 10.)
- ↑ Archivált másolat. [2012. június 11-i dátummal az eredetiből archiválva]. (Hozzáférés: 2012. augusztus 6.)
- ↑ 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.)
- ↑ Beaver, Doug: HTTP2 Expression of Interest. W3C. (Hozzáférés: 2012. július 15.)
Források
szerkesztésTovábbi információk
szerkesztésKapcsolódó szócikkek
szerkesztésFordítás
szerkesztésEz 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.