SPDY

SPDY (wymawiaj jak (ang.) przymiotnik "speedy") – przestarzały[a], oparty na TCP protokół warstwy aplikacji pierwotnie projektowany do transmisji stron WWW. Powstał w firmie Google jako podprojekt przeglądarki WWW Chromium.

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[1]. W lutym 2015 r. Google zadeklarował, że w związku z zatwierdzeniem standardu HTTP/2 wycofuje wsparcie dla SPDY[2].

Podstawowa charakterystyka

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

Celem projektu było skrócenie czasu pobierania stron WWW[4] dzięki priorytetowemu pobieraniu elementów stron, które najbardziej wpływają na ich działanie, a także poprzez zwielokrotnianie połączeń, 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[5]. 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[6][3]. Wymogiem 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[6], co stało się potem przyczyną problemów (patrz niżej).

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

Stan implementacji

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)[10][11]. 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[11][b].

SPDY było wykorzystywane w komunikacji pomiędzy Chrome a serwerami Google już w styczniu 2011 roku[7]. W związku certyfikacją HTTP/2 i porzuceniem na jego rzecz SPDY przez Google 51. wersja Chrome w 2016 ostatecznie usunęła wsparcie dla protokołu.

Mozilla Firefox posiadała obsługę protokołu począwszy od wersji 11 (początkowo domyślnie wyłączoną, aktywowaną w pełni od wersji 13[12]) do 50, gdy wsparcie dla niego zostało usunięte[13]. Presto, oryginalny silnik przeglądarki Opera obsługuje protokół SPDY od wersji 12.10[14] 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ługuje protokołu SPDY.

Uwagi

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

Przypisy

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

Linki zewnętrzne