SPDY - SPDY

SPDY (wymawiane „szybki”) to przestarzały protokół komunikacyjny o otwartej specyfikacji , który został opracowany głównie w Google do przesyłania treści internetowych . SPDY manipuluje ruchem HTTP , mając na celu zmniejszenie opóźnienia ładowania strony internetowej i poprawę bezpieczeństwa sieci . SPDY osiąga zmniejszone opóźnienia dzięki kompresji , multipleksowaniu i ustalaniu priorytetów, chociaż zależy to od kombinacji warunków wdrażania sieci i witryny. Nazwa „SPDY” jest znakiem towarowym Google i nie jest akronimem .

SPDY stał się podstawą specyfikacji HTTP/2. Jednak HTTP/2 odszedł od SPDY i ostatecznie HTTP/2 przejął wszystkie przypadki użycia SPDY. Po ratyfikacji protokołu HTTP/2 jako standardu, główni realizatorzy, w tym Google, Mozilla i Apple, wycofali SPDY na rzecz HTTP/2. Od 2021 żadna nowoczesna przeglądarka nie obsługuje SPDY.

Historia

Protokół HTTP/2 został po raz pierwszy omówiony, gdy stało się jasne, że SPDY zyskuje na popularności wśród realizatorów (takich jak Mozilla i nginx) i wykazuje znaczną poprawę w stosunku do HTTP/1.x. Po naborze wniosków i procesie selekcji, SPDY został wybrany jako podstawa HTTP/2. Od tego czasu nastąpiło wiele zmian, opartych na dyskusji w Grupie Roboczej i informacjach zwrotnych od realizatorów.

W lipcu 2012 r. grupa rozwijająca SPDY oświadczyła publicznie, że pracuje nad standaryzacją (dostępna jako wersja internetowa ). Pierwsza wersja robocza protokołu HTTP/2 wykorzystywała SPDY jako podstawę roboczą dla projektu specyfikacji i edycji.

Przez cały czas w rozwój HTTP/2 zaangażowani byli główni programiści SPDY , w tym Mike Belshe i Roberto Peon.

Chromium , Mozilla Firefox , Opera , Amazon Silk , Internet Explorer i Safari wyraziły wówczas wsparcie dla SPDY.

W lutym 2015 r. Google ogłosił, że po ratyfikacji standardu HTTP/2 obsługa SPDY zostanie wycofana, a obsługa SPDY zostanie wycofana. 15 maja 2015 r. protokół HTTP/2 został oficjalnie ratyfikowany jako RFC  7540 .

11 lutego 2016 r. firma Google ogłosiła, że ​​po 15 maja 2016 r., w pierwszą rocznicę RFC  7540, która standaryzuje HTTP/2 , Chrome przestanie obsługiwać SPDY .

25 stycznia 2019 r. Apple ogłosił, że SPDY zostanie przestarzałe na rzecz HTTP/2 i zostanie usunięte w przyszłych wydaniach.

Google usunęło obsługę SPDY w Google Chrome 51. Mozilla usunęła ją w Firefoksie 50. Apple wycofał tę technologię w macOS 10.14.4 i iOS 12.2.

Projekt

Celem SPDY jest skrócenie czasu ładowania strony internetowej. Osiąga się to poprzez ustalanie priorytetów i multipleksowanie transferu podzasobów stron internetowych, dzięki czemu wymagane jest tylko jedno połączenie na klienta. Szyfrowanie TLS jest prawie wszechobecne w implementacjach SPDY, a nagłówki transmisji są skompresowane w formacie gzip lub DEFLATE (w przeciwieństwie do HTTP, gdzie nagłówki są wysyłane jako tekst czytelny dla człowieka). Co więcej, serwery mogą podpowiadać lub nawet przesyłać zawartość zamiast czekać na indywidualne żądania dla każdego zasobu strony internetowej.

SPDY wymaga użycia protokołu SSL/TLS (z rozszerzeniem TLS ALPN ) dla bezpieczeństwa, ale obsługuje również działanie przez zwykły TCP . Wymaganie SSL dotyczy bezpieczeństwa i uniknięcia niezgodności, gdy komunikacja odbywa się przez serwer proxy .

Związek z HTTP

SPDY nie zastępuje HTTP; modyfikuje sposób przesyłania żądań i odpowiedzi HTTP przez sieć . Oznacza to, że wszystkie istniejące aplikacje po stronie serwera mogą być używane bez modyfikacji, jeśli zostanie zainstalowana warstwa tłumaczeniowa zgodna z SPDY.

SPDY jest skutecznie tunelem dla protokołów HTTP i HTTPS. Wysyłane przez SPDY żądania HTTP są przetwarzane, tokenizowane, upraszczane i kompresowane. Na przykład każdy punkt końcowy SPDY śledzi, które nagłówki zostały wysłane w poprzednich żądaniach i może uniknąć ponownego wysyłania nagłówków, które nie uległy zmianie; te, które muszą zostać wysłane, są skompresowane.

Grupa robocza IETF ds. HTTPbis opublikowała projekt HTTP/2 . Jako punkt wyjścia wybrano SPDY (draft-mbelshe-httpbis-spdy-00).

Wersje protokołów

SPDY to protokół wersjonowany. W jego ramkach kontrolnych znajduje się 15 dedykowanych bitów wskazujących wersję protokołu sesji.

  • Wersja 1: wersja 1 protokołu SPDY nie jest już używana.
  • Wersja 2: wkrótce zostanie wycofana. Nginx obsługuje SPDY/2 w wersjach wcześniejszych niż 1.5.10. Firefox 28 i najnowsze wersje Chrome nie obsługują tego. OpenLiteSpeed ​​1.1 i nowsze obsługują SPDY/2.
  • Wersja 3: SPDY v3 wprowadziła obsługę kontroli przepływu, zaktualizowała słownik kompresji i usunęła zmarnowaną przestrzeń z niektórych ramek, wraz z innymi drobnymi poprawkami błędów. Firefox obsługuje SPDY v3 w Firefoksie 15. OpenLiteSpeed ​​1.1 i nowsze obsługują SPDY/3.
  • Wersja 3.1: SPDY v3.1 wprowadziła obsługę kontroli przepływu w warstwie sesji i usunęła ramkę CREDENTIALS (i powiązane kody błędów). Firefox 27 dodał obsługę SPDY 3.1. OpenLiteSpeed ​​1.2.7 wprowadza obsługę SPDY/3.1. Nginx 1.5.10 obsługuje SPDY/3.1. F5 BIGIP 11.6 obsługuje SPDY/3.1.
  • Wersja 4.0: SPDY v4 alpha3 jest ściślej dopasowany do wersji roboczej HTTP/2; ma nową kontrolę przepływu strumienia i kody błędów ujednolicone z wersją roboczą HTTP/2.

Obsługa protokołu

Do użytku w ramach HTTPS SPDY wymaga rozszerzenia TLS Next Protocol Negotiation (NPN) lub Application-Layer Protocol Negotiation (ALPN), dlatego obsługa przeglądarki i serwera zależy od biblioteki HTTPS.

OpenSSL 1.0.1 lub nowszy wprowadza NPN. Poprawki dodające obsługę NPN zostały również napisane dla NSS i TLSLite.

Interfejs dostawcy obsługi zabezpieczeń (SSPI) firmy Microsoft nie zaimplementował rozszerzenia NPN do swojej implementacji TLS. Uniemożliwiło to włączenie SPDY w najnowszych wersjach .NET Framework. Ponieważ specyfikacja SPDY jest udoskonalana i oczekuje się, że HTTP/2 będzie zawierał implementację SPDY, można oczekiwać, że Microsoft wyda wsparcie po sfinalizowaniu HTTP/2 .

Obsługa i użytkowanie klienta (przeglądarki)

  • Google Chrome / Chromium . Sesje SPDY w Chrome można sprawdzić za pomocą identyfikatora URI : chrome://net-internals/#events&q=type:SPDY_SESSION%20is:active. Dostępny jest przełącznik wiersza poleceń dla przeglądarki Google Chrome ( ), który umożliwia wczesną, eksperymentalną implementację WebSocket przez SPDY. Funkcjonalność protokołu SPDY można (de)aktywować, przełączając ustawienie „Włącz SPDY/4” na stronie lokalnej . Oczekuje się, że Chromium usunie obsługę SPDY i Next Protocol Negotiation na początku 2016 r. na rzecz HTTP/2 i ALPN . Począwszy od wersji 40.x w lutym 2015 r. Chrome już zrezygnował ze wsparcia dla SPDY/3 i od teraz obsługuje tylko SPDY/3.1. To spowodowało, że witryny Apache nie mają obsługi SPDY, gdy są odwiedzane z Google Chrome.--enable-websocket-over-spdychrome://flags
  • Firefox obsługuje SPDY 2 od wersji 11 i domyślnie włączony od 13 i nowszych. (Również SeaMonkey w wersji 2.8+.) Funkcjonalność protokołu SPDY można (de)aktywować, przełączając network.http.spdy.enabledzmienną w about:config. Firefox 15 dodał obsługę SPDY 3. Firefox 27 dodał obsługę SPDY 3.1. Firefox 28 usunął obsługę SPDY 2. about:networking(lub dodatek ze wskaźnikiem HTTP/2 i SPDY) pokazuje, czy witryna korzysta z SPDY.
  • Przeglądarka Opera dodała obsługę SPDY od wersji 12.10.
  • Internet Explorer 11 dodał obsługę SPDY w wersji 3, ale nie dla wersji Windows 7. Problem, którego doświadczają niektórzy użytkownicy Windows 8.1 i Internet Explorera 11, polega na tym, że podczas pierwszego ładowania Google mówi „Nie znaleziono strony”, ale po ponownym załadowaniu wszystko jest w porządku. Jednym z rozwiązań tego problemu jest wyłączenie SPDY/3 w Opcje internetowe > Zaawansowane. Po wersji 11 IE zrezygnuje ze wsparcia SPDY, ponieważ przyjmie HTTP/2 .
  • Przeglądarka Amazon Silk dla Kindle Fire używa protokołu SPDY do komunikacji z usługą EC2 w celu renderowania stron internetowych.
  • Safari 8 i aplikacje innych firm w systemach OS X 10.10 i iOS 8 dodają obsługę SPDY 2, 3 i 3.1.

Wsparcie i użytkowanie serwera

Od maja 2021 r. około 0,1% wszystkich witryn obsługuje SPDY, częściowo z powodu przejścia na HTTP/2 . W 2016 roku NGINX i Apache były głównymi dostawcami ruchu SPDY. W 2015 r. NGINX 1.9.5 zrezygnował z obsługi SPDY na rzecz HTTP/2.

Niektóre usługi Google (np. Wyszukiwarka Google , Gmail i inne usługi obsługujące protokół SSL ) używają SPDY, jeśli są dostępne. Reklamy Google są również wyświetlane z serwerów obsługujących SPDY.

Krótka historia wsparcia SPDY wśród głównych graczy internetowych:

  • W listopadzie 2009 roku Google ogłosił SPDY jako wewnętrzny projekt mający na celu zwiększenie szybkości sieci.
  • We wrześniu 2010 r. Google wydało SPDY w Chrome 6 na wszystkich platformach.
  • W styczniu 2011 r. firma Google wdrożyła SPDY we wszystkich usługach Google.
  • W marcu 2012 r. Twitter udostępnił SPDY na swoich serwerach, czyniąc go wówczas drugą co do wielkości witryną znaną z wdrażania SPDY.
  • W marcu 2012 r. serwer Jetty Web o otwartym kodzie źródłowym ogłosił wsparcie dla SPDY w wersji 7.6.2 i 8.1.2, podczas gdy inne projekty open source pracowały nad wdrożeniem wsparcia dla SPDY, w tym Node.js , Apache (mod_spdy), curl i Nginx .
  • W kwietniu 2012 r. Google zaczął dostarczać pakiety SPDY dla serwerów Apache, co spowodowało, że niektóre mniejsze strony internetowe zapewniły obsługę SPDY.
  • W maju 2012 F5 Networks ogłosiło wsparcie dla SPDY w swoich kontrolerach dostarczania aplikacji BIG-IP.
  • W czerwcu 2012 serwer WWW Nginx o otwartym kodzie źródłowym ogłosił wsparcie dla SPDY.
  • W lipcu 2012 roku Facebook ogłosił plany wdrożeniowe SPDY. Do marca 2013 r. SPDY zostało wdrożone przez niektóre z ich publicznych serwerów internetowych.
  • W sierpniu 2012 WordPress.com ogłosił wsparcie dla SPDY (przy użyciu Nginx) we wszystkich hostowanych blogach.
  • W czerwcu 2013 roku LiteSpeed ​​Technologies ogłosiło wsparcie dla SPDY/2 i SPDY/3 na OpenLiteSpeed, ich otwartym serwerze HTTP. Wsparcie dla SPDY/3.1 zostało ogłoszone w listopadzie 2013 roku.
  • W styczniu 2014 r. firma Synology ogłosiła, że ​​SPDY jest dołączany do nowego DSM 5.0.
  • W lutym 2014 r. CloudFlare korzystający z nginx ogłosił automatyczne wsparcie dla SPDY v3.1 dla wszystkich klientów z certyfikatami SSL/TLS.
  • W maju 2014 r. firma MaxCDN korzystająca z nginx ogłosiła wsparcie dla SPDY v3.1 za pośrednictwem ustawień strefy ściągania klientów i ich interfejsu API.
  • W październiku 2014 roku Yahoo pokazuje wsparcie dla SPDY na stronie głównej Yahoo — www.yahoo.com
  • We wrześniu 2015 najnowsza wersja serwera WWW Nginx zrezygnowała ze wsparcia SPDY na rzecz HTTP/2
  • W maju 2016 r. CloudFlare wypuszcza poprawki do serwera WWW Nginx, które obsługują jednocześnie HTTP/2 i SPDY.

Według W3Techs, według stanu na maj 2021 r., większość witryn obsługujących SPDY korzysta z nginx, a serwer LiteSpeed ​​zajmuje drugie miejsce.

Zobacz też

Bibliografia

Linki zewnętrzne