SPDY (wymawiaj jak ang. speedy) – przestarzały[a], oparty na TCP protokół warstwy aplikacji pierwotnie projektowany do transmisji stron WWW jako szybsza alternatywa HTTP[3]. Powstał w firmie Google jako podprojekt przeglądarki WWW Chromium i został zaprezentowany w 2009 roku[4].

W trakcie rozwoju SPDY jego główni programiści zostali włączeni przez firmę w opracowywanie HTTP/2, którego pierwszy szkic finalnie został oparty na SPDY[5]. W lutym 2015 r. Google zadeklarował, że w związku z zatwierdzeniem standardu HTTP/2 wycofuje wsparcie dla SPDY[6].

Podstawowa charakterystyka edytuj

Nazwa „SPDY” wbrew swej postaci nie jest akronimem. Została utworzona od angielskiego słowa „SPeeDY” – tj. szybki, prędki – i miała podkreślać założoną szybkość działania nowego protokołu wobec niedomagań starzejącego się HTTP[4].

Celem projektu było skrócenie czasu pobierania stron WWW[3] dzięki priorytetowemu pobieraniu elementów stron, które najbardziej wpływają na ich działanie, a także poprzez zwielokrotnianie żądań, które w oryginalnych implementacjach HTTP była niedostępne, a później jedynie emulowane przy pomocy awaryjnego pipeliningu. W SPDY przeniesienie kilku plików wymagało tylko jednego połączenia[7]. Serwery SPDY mogły zarówno sugerować klientowi pobieranie określonych zasobów, jak i wysyłać je niejako bez pytania w tzw. trybie push, uprzedzając żądanie klienta[4][8]. Wymogiem protokołu było szyfrowanie całej transmisji przy pomocy TLS. Jednocześnie, kompresji podlegały nie tylko dane – jak w HTTP – ale także nagłówki protokołu[8], co stało się potem przyczyną problemów (patrz niżej).

Dzięki temu, że serwery Google były jednymi z pierwszych[9] wdrażających protokół, Chrome, przeglądarka tej firmy w pierwszym rzędzie używał SPDY[10][11] do komunikowania się z firmowymi usługami jak wyszukiwarka, Gmail, Sync czy też pobierania reklam AdSense.

Stan implementacji edytuj

Wszystkie wersje SPDY – ze względu na wykorzystanie kompresji nagłówków poprzez zlib/deflate – podatne są na upubliczniony w 2012 atak na transmisję szyfrowaną znany jako CRIME (CVE-2012-4929)[12][13]. Przeglądarki internetowe implementujące SPDY obeszły błąd poprzez wyłączenie kompresji nagłówków, sama specyfikacja protokołu pozostała jednak podatna[13][b].

SPDY było wykorzystywane w komunikacji pomiędzy przeglądarką Google Chrome a serwerami firmy już w styczniu 2011 roku[9]. W związku certyfikacją HTTP/2 w roku 2015 i porzuceniem SPDY przez Google wersja 51. przeglądarki Chrome z 2016 wydana została już bez implementacji protokołu[1].

Firefox posiadał obsługę protokołu począwszy od wersji 11 z marca 2012 (początkowo domyślnie wyłączoną[14], aktywowaną w pełni od wersji 13 w połowie 2012[15]) do wersji 50 z listopada 2016, gdy wsparcie dla niego zostało wyłączone[2]. Presto, oryginalny silnik przeglądarki Opera obsługuje protokół SPDY od wersji 12.10[16] do 12.16, gdy zaprzestano jego rozwoju (nowsze wersje bazują na Chromium).

W Windows 8.1 SPDY jest dostępny w całym systemie dzięki komponentom Internet Explorer 11. Jednakże ta sama przeglądarka na wersji Windows 7 nie obsługiwała protokołu SPDY.

Uwagi edytuj

  1. W 2020 SPDY nie jest wspierane przez żadną z dominujących na rynku przeglądarek WWW, a implementacje są usuwane z oprogramowania serwerowego[1][2].
  2. Ostatecznie problem został rozwiązany dopiero w protokole HTTP/2 poprzez zastosowanie niepodatnego na atak mechanizmu kompresji nagłówków.

Przypisy edytuj

  1. a b Transitioning from SPDY to HTTP/2. Chromium Blog. [dostęp 2022-12-06]. (ang.).
  2. a b Bugzilla@Mozilla Bug 1287132 - Disable SPDY 3.1. [dostęp 2017-02-26]. (ang.).
  3. a b Mike Belshe, Roberto Peon: A 2x Faster Web. Chromium Blog, 2009-11-11. (ang.).
  4. a b c Iljitsch van Beijnum: SPDY: Google wants to speed up the web by ditching HTTP. 2009-11-12. [dostęp 2022-12-06]. (ang.).
  5. Mark Nottingham: First draft of HTTP/2. HTTP Working Group Mailing List. [dostęp 2012-12-02].
  6. Hello HTTP/2, Goodbye SPDY. Google, 9 lutego 2015. (ang.).
  7. SPDY: An experimental protocol for a faster web.
  8. a b SPDY whitepaper
  9. a b SPDY on Google servers?. [dostęp 2020-10-03].
  10. Chromium SPDY client implementation
  11. Chromium: SPDY proxy examples. [dostęp 2017-08-28]. [zarchiwizowane z tego adresu (2017-09-19)].
  12. CVE-2012-4929. Mitre Corporation. [dostęp 2022-08-23]. (ang.).
  13. a b Adam Langley: CRIME. 2012-09-21. [dostęp 2022-08-23]. (ang.).
  14. Firefox Notes - Desktop. www.mozilla.org, 2012-03-13. [dostęp 2023-04-24]. (ang.).
  15. Firefox Notes - Desktop. www.mozilla.org. [dostęp 2017-11-26]. (ang.).
  16. David Honneffer: Opera: Opera 12.10 Changelog. [zarchiwizowane z tego adresu (2012-11-10)].

Linki zewnętrzne edytuj