Набор интернет-протоколов |
---|
Уровень приложения |
Транспортный уровень |
Интернет-уровень |
Связующий слой |
|
SPDY (произносится как «быстрый») [1] - устаревший протокол связи с открытой спецификацией , разработанный в основном в Google для передачи веб-контента . [1] SPDY управляет HTTP- трафиком с особыми целями по сокращению задержки загрузки веб-страниц и повышению безопасности в Интернете . SPDY обеспечивает снижение задержки за счет сжатия , мультиплексирования и определения приоритетов [1], хотя это зависит от комбинации условий развертывания сети и веб-сайта. [2] [3] [4] Название «SPDY» является товарным знаком [5] Google и не является аббревиатурой . [6]
На протяжении всего процесса основные разработчики SPDY принимали участие в разработке HTTP / 2 , включая Майка Белше и Роберто Пеона . В феврале 2015 года Google объявил, что после недавней окончательной ратификации стандарта HTTP / 2 поддержка SPDY будет прекращена, а поддержка SPDY будет прекращена. [7] Google удалил поддержку SPDY в Google Chrome 51. Mozilla удалила ее в Firefox 50. [8] Apple не рекомендует использовать эту технологию в macOS 10.14.4 и iOS 12.2. [9]
История [ править ]
По состоянию на июль 2012 [Обновить]года группа, разрабатывающая SPDY, публично заявила, что работает над стандартизацией (доступна в виде интернет-проекта ). [10] Первый черновик HTTP / 2 использовал SPDY в качестве рабочей основы для черновика и редактирования его спецификации. [11]
Реализации SPDY существуют в Chromium , [12] Mozilla Firefox , [13] Opera , [14] Amazon Silk , Internet Explorer , [15] и Safari , [16], причем реализации для Chromium и Firefox являются программным обеспечением с открытым исходным кодом .
В феврале 2015 года Google объявил о своих планах отказаться от поддержки SPDY в пользу HTTP / 2. HTTP / 2 впервые обсуждался, когда стало очевидно, что SPDY набирает популярность у разработчиков (таких как Mozilla и nginx) и демонстрирует значительные улучшения по сравнению с HTTP / 1.x. После конкурса предложений и процесса отбора SPDY был выбран в качестве основы для HTTP / 2. С тех пор был внесен ряд изменений, основанных на обсуждениях в Рабочей группе и отзывах разработчиков. [17]
11 февраля 2016 года Google объявил, что Chrome больше не будет поддерживать SPDY и NPN после 15 мая 2016 года, годовщины RFC 7540. [18]
25 января 2019 года Apple объявила, что SPDY будет устаревать в пользу HTTP / 2 и будет удален в будущих выпусках. [9]
Дизайн [ править ]
Цель SPDY - сократить время загрузки веб-страницы. [19] Это достигается за счет определения приоритетов и мультиплексирования передачи субресурсов веб-страниц, так что для каждого клиента требуется только одно соединение. [1] [20] Шифрование TLS почти повсеместно используется в реализациях SPDY, а заголовки передачи сжимаются с помощью gzip или DEFLATE по дизайну [21] (в отличие от HTTP, где заголовки отправляются в виде текста, удобочитаемого человеком). Более того, серверы могут намекать или даже отправлять контент вместо ожидания отдельных запросов для каждого ресурса веб-страницы. [22]
SPDY требует использования SSL / TLS (с расширением TLS ALPN ) для безопасности, но также поддерживает работу через простой TCP . SSL требуется для безопасности и во избежание несовместимости при обмене данными через прокси .
Связь с HTTP [ править ]
SPDY не заменяет HTTP; он изменяет способ отправки HTTP-запросов и ответов по сети . [1] Это означает, что все существующие серверные приложения могут использоваться без изменений, если установлен SPDY-совместимый уровень трансляции.
SPDY фактически является туннелем для протоколов HTTP и HTTPS. При отправке через SPDY HTTP-запросы обрабатываются, токенизируются, упрощаются и сжимаются. Например, каждая конечная точка SPDY отслеживает, какие заголовки были отправлены в прошлых запросах, и может избежать повторной отправки заголовков, которые не изменились; те, которые необходимо отправить, сжаты.
Рабочая группа IETF по HTTPbis выпустила проект HTTP / 2 . [23] SPDY (draft-mbelshe-httpbis-spdy-00) был выбран в качестве отправной точки. [24] [25]
Поддержка протокола [ править ]
Этот раздел необходимо обновить . Декабрь 2015 г. ) ( |
Для использования в HTTPS SPDY требуется расширение TLS Next Protocol Negotiation (NPN) [26], поэтому поддержка браузера и сервера зависит от библиотеки HTTPS.
OpenSSL 1.0.1 или выше представляет NPN. [27] Патчи для добавления поддержки NPN также были написаны для NSS и TLSLite. [28]
SPDY планирует перейти с NPN на согласование протокола уровня приложений (ALPN) до конца 2014 года. [29]
Интерфейс поставщика поддержки безопасности (SSPI) от Microsoft не реализовал расширение NPN в своей реализации TLS. Это предотвратило включение SPDY в последние версии .NET Framework. Поскольку спецификация SPDY уточняется и ожидается, что HTTP / 2 будет включать реализацию SPDY, можно ожидать, что Microsoft выпустит поддержку после того, как HTTP / 2 будет завершен.
Версии протокола [ править ]
SPDY - это версионный протокол. В его кадрах управления есть 15 выделенных битов для указания версии протокола сеанса. [ необходима цитата ]
- Версия 1: версия 1 протокола SPDY больше не используется. [30]
- Версия 2: скоро будет снята с производства. Nginx поддерживает SPDY / 2 в версиях до 1.5.10. [31] Firefox 28 и последние версии Chrome больше не поддерживают его. [32] [33] OpenLiteSpeed 1.1 и выше поддерживает SPDY / 2. [34]
- Версия 3: SPDY v3 представила поддержку управления потоком, обновила словарь сжатия и удалила ненужное пространство из определенных кадров, а также другие мелкие исправления ошибок. [21] Firefox поддерживает SPDY v3 в Firefox 15. [35] OpenLiteSpeed 1.1 и выше поддерживает SPDY / 3. [34]
- Версия 3.1: SPDY v3.1 представила поддержку управления потоком на уровне сеанса и удалила кадр CREDENTIALS (и связанные с ним коды ошибок). [36] Firefox 27 добавил поддержку SPDY 3.1. [37] OpenLiteSpeed 1.2.7 представляет поддержку SPDY / 3.1. [38] Nginx 1.5.10 поддерживает SPDY / 3.1. [39] F5 BIGIP 11.6 поддерживает SPDY / 3.1. [40]
- Версия 4.0: SPDY v4 alpha3 больше соответствует проекту HTTP / 2; он имеет новое управление потоком и коды ошибок, унифицированные с проектом HTTP / 2. [41]
Поддержка и использование клиента (браузера) [ править ]
- Google Chrome / Chromium . [42] [43] SPDY сессии в Chrome могут быть проверены с помощью URI :
chrome://net-internals/#events&q=type:SPDY_SESSION%20is:active
. Для Google Chrome ( ) есть переключатель командной строки, который позволяет раннюю экспериментальную реализацию WebSocket поверх SPDY. [44] Функциональность протокола SPDY можно (де) активировать, переключив настройку «Включить SPDY / 4» на локальной странице. Ожидается, что Chromium откажется от поддержки SPDY и Next Protocol Negotiation в начале 2016 года в пользу HTTP / 2 и ALPN . [45]--enable-websocket-over-spdy
chrome://flags
Начиная с версии 40.x в феврале 2015 года Chrome уже отказался от поддержки SPDY / 3 и в дальнейшем будет поддерживать только SPDY / 3.1. Это привело к тому, что веб-сайты Apache не поддерживали SPDY при посещении из Google Chrome. [46] - Firefox поддерживает SPDY 2 начиная с версии 11 и включен по умолчанию с 13 и более поздних версий. (Также SeaMonkey версии 2.8+.) Функциональность протокола SPDY можно (де) активировать, переключив network.http.spdy.enabledпеременную в
about:config
. [13] Firefox 15 добавил поддержку SPDY 3. [35] Firefox 27 добавил поддержку SPDY 3.1. [37] Firefox 28 удалил поддержку SPDY 2. [32]about:networking
(или надстройка индикатора HTTP / 2 и SPDY) [47] показывает, использует ли веб-сайт SPDY. - Браузер Opera добавил поддержку SPDY с версии 12.10. [48]
- В Internet Explorer 11 добавлена поддержка SPDY версии 3, [49] [50], но не для версии Windows 7. [51] Проблема, с которой сталкиваются некоторые пользователи Windows 8.1 и Internet Explorer 11, заключается в том, что при начальной загрузке Google сообщает «Страница не найдена», но при перезагрузке все в порядке. Одно из исправлений - отключить SPDY / 3 в «Свойства обозревателя»> «Дополнительно». [52] После версии 11 IE откажется от поддержки SPDY, поскольку он будет использовать HTTP / 2 . [53]
- Браузер Amazon Silk для Kindle Fire использует протокол SPDY для связи со своим сервисом EC2 для рендеринга веб-страниц. [54]
- Safari 8 и сторонние приложения в OS X 10.10 и iOS 8 добавляют поддержку SPDY 2, 3 и 3.1. [55]
Поддержка и использование сервера [ править ]
По состоянию на июль 2016 [Обновить]года примерно 7,1% всех веб-сайтов поддерживают SPDY. [56] Установленные версии двух самых популярных веб-серверов, NGINX и Apache, [57] являются основными поставщиками трафика SPDY. [58] хотя в последней версии NGINX теперь удалена поддержка SPDY. [59] Для сравнения, уровень принятия нового протокола HTTP / 2 составил 8,1%, который по состоянию на 2016 год [Обновить]обогнал принятие SPDY. [60]
Некоторые службы Google (например, поиск Google , Gmail и другие службы с поддержкой SSL ) используют SPDY, когда это возможно. [61] Объявления Google также обслуживаются с серверов с поддержкой SPDY. [62]
Краткая история поддержки SPDY среди основных веб-игроков:
- В ноябре 2009 года Google анонсировал SPDY как внутренний проект по увеличению скорости Интернета. [63]
- В сентябре 2010 года Google выпускает SPDY в Chrome для всех версий Chrome 6. [64]
- В январе 2011 года Google развернул SPDY во всех сервисах Google. [65]
- В марте 2012 года Twitter включил SPDY на своих серверах, что в то время сделало его вторым по величине сайтом, который использует SPDY. [66]
- В марте 2012 года Jetty Web Server с открытым исходным кодом объявил о поддержке SPDY в версиях 7.6.2 и 8.1.2, [67] в то время как другие проекты с открытым исходным кодом работали над реализацией поддержки SPDY, например node.js, [68] [69 ] Apache (mod_spdy), [70] curl, [71] и nginx. [72]
- В апреле 2012 года Google начал предоставлять пакеты SPDY для серверов Apache, что привело к тому, что некоторые небольшие веб-сайты начали предоставлять поддержку SPDY. [73]
- В мае 2012 года F5 Networks объявила о поддержке SPDY в своих контроллерах доставки приложений BIG-IP. [74]
- В июне 2012 года NGINX, Inc. объявила о поддержке SPDY в веб-сервере с открытым исходным кодом Nginx. [75]
- В июле 2012 года Facebook объявил о планах внедрения SPDY. [76] К марту 2013 года SPDY была внедрена на некоторых из их общедоступных веб-серверов. [77]
- В августе 2012 года WordPress.com объявил о поддержке SPDY (с использованием nginx) во всех своих размещенных блогах. [78]
- В июне 2013 года LiteSpeed Technologies объявила о поддержке SPDY / 2 и SPDY / 3 на OpenLiteSpeed, своем HTTP-сервере с открытым исходным кодом. [34] Поддержка SPDY / 3.1 была объявлена в ноябре 2013 года. [38]
- В январе 2014 года Synology объявила, что SPDY включен в новый DSM 5.0. [79]
- В феврале 2014 года CloudFlare, использующий nginx, объявила об автоматической поддержке SPDY v3.1 для всех клиентов с сертификатами SSL / TLS. [80]
- В мае 2014 года MaxCDN, использующий nginx, объявил о поддержке SPDY v3.1 через пользовательские настройки Pull Zone и их API. [81]
- В октябре 2014 года Yahoo демонстрирует поддержку SPDY на домашней странице Yahoo - www.yahoo.com [82]
- В сентябре 2015 года последняя версия веб-сервера Nginx отказалась от поддержки SPDY в пользу HTTP / 2 [59].
- В мае 2016 года CloudFlare выпускает исправления для веб-сервера Nginx, которые одновременно поддерживают HTTP / 2 и SPDY. [83]
По данным W3Techs, по состоянию на июль 2016 [Обновить]года большинство веб-сайтов с поддержкой SPDY используют nginx, а веб-сервер LiteSpeed занимает второе место. [58]
См. Также [ править ]
- Конвейерная обработка HTTP
- Постоянное соединение HTTP
- Скорость HTTP + Мобильность
- QUIC - еще один протокол связи транспортного уровня от Google. Базовый протокол HTTP / 3. [84]
- Оптимизированный протокол передачи изображений клиентам (OPTIC)
Ссылки [ править ]
- ^ a b c d e «SPDY: экспериментальный протокол для более быстрого Интернета» . Документация разработчика Chromium . Проверено 13 ноября 2009 .
- ^ Эльхатиб, Йехиа; Тайсон, Гарет; Вельцль, Майкл (2014). 2014 МФОИ Конференция Networking . С. 1–9. CiteSeerX 10.1.1.698.2343 . DOI : 10.1109 / IFIPNetworking.2014.6857089 . ISBN 978-3-901882-58-6. S2CID 13841087 .
- ^ Podjarny, Гай. «Не так SPDY, как вы думали» . Архивировано из оригинального 12 октября 2012 года . Проверено 12 октября 2012 года .
- ^ Абдельсалам, Ахмед; Целандрони, Недо; Коллина, Маттео; Cruickshank, Хайтам; Фэрхерст, Горри; Ферро, Эрина; Надо, Альберто; Луглио, Микеле; Розети, Чезаре (01.07.2015). «Глубокий анализ будущих веб-технологий и протоколов в широкополосных спутниковых сетях GEO». Международный журнал спутниковой связи и сетей . 33 (5): 451–472. DOI : 10.1002 / sat.1120 . ISSN 1542-0981 .
- ^ «Разрешения: наши товарные знаки» . Google . Проверено 23 февраля 2015 .
- ^ "Часто задаваемые вопросы SPDY" . Проекты Chromium . Проверено 23 февраля 2015 .
Нам нужно было название, отражающее скорость.
SPDY, произносится как «SPeeDY», фиксирует это, а также показывает, как сжатие может помочь повысить скорость.
- ^ Chris Bentzel & Бенс Béky (9 февраля 2015). «Привет, HTTP / 2, прощай, SPDY» .
- ^ «1287132 - Отключить SPDY 3.1» . bugzilla.mozilla.org .
- ^ a b Маршалл, Скотт (2019-01-25). «Удаление поддержки устаревшего протокола SPDY» . WebKit . Проверено 7 марта 2019 .
- ^ "Протокол SPDY на IETF" . Проверено 8 февраля 2012 .
- ^ Ноттингем, Марк. «Первый черновик HTTP / 2» . Список рассылки рабочей группы HTTP . Проверено 2 декабря 2012 года .
- ^ "SPDY на серверах Google?" . Проверено 28 февраля 2012 .
- ^ a b «Ошибка Mozilla 528288 - реализация протокола SPDY» .
- ^ «Opera: Встроенная поддержка протокола SPDY» . Проверено 6 ноября 2012 .
- ^ "IE11 SPDY / 3 подтвержден" . 2013-06-25 . Проверено 25 июня 2013 .
- ^ «Apple - Информация для прессы - Apple объявляет о выпуске OS X Yosemite» . 2 июня 2014 . Проверено 2 июня 2014 .
- ^ «HTTP / 2 Часто задаваемые вопросы» . http2.github.io .
- ^ Béky Бенс (11 февраля 2016). «Переход с SPDY на HTTP / 2» . Проверено 12 февраля, 2016 .
- ^ «В 2 раза быстрее Интернет» . Официальный блог Google Chromium. 2009-11-11 . Проверено 13 ноября 2009 .
- ^ Iljitsch ван Beijnum (2009-11-12). «SPDY: Google хочет ускорить работу Интернета, отказавшись от HTTP» . Ars Technica . Проверено 13 ноября 2009 .
- ^ a b «Протокол SPDY - Проект 3» . Проверено 25 августа 2012 года .
- ↑ Мирко Линднер (13 ноября 2009 г.). "Google stellt HTTP-Alternative SPDY vor" (на немецком языке) . Проверено 21 октября 2011 .
- ^ Ноттингем, Марк. «Что будет дальше с HTTP» . Проверено 31 марта 2012 .
- ^ "Fwd: [новая работа] Обзор WG: Протокол передачи гипертекста Bis (httpbis)" .
- ^ «Рабочая группа HTTPbis начинает рассматривать HTTP / 2.0» . InfoQ . 2012-04-28 . Проверено 9 августа 2012 .
- ^ Протокол NPN и объяснение необходимости туннелирования SPDY через HTTPS .
- ^ Журнал изменений Openssl 1.0.1 .
- ^ Согласование следующего протокола TLS. Раздел: Реализации, заархивированные 30 июля 2012 г. на Wayback Machine .
- ^ Адам Лэнгли. «Императорский фиолетовый» .
- ^ Протокол SPDY - Черновик 2 : «В настоящее время единственная допустимая строка -« spdy / 2 »(spdy / 1 больше нигде не реализован)».
- ^ "Модуль ngx_http_spdy_module" . Nginx.org . Проверено 3 июня 2014 .
- ^ a b «Примечания к бета-версии Firefox - Рабочий стол» . 2014-02-06 . Проверено 7 февраля 2014 .
- ^ «Проблема 303957 - хром - Сделать Chrome поддержкой только SPDY / 3 и выше - Проект с открытым исходным кодом, помогающий продвигать Интернет вперед. - Хостинг проектов Google» . 2013-10-03 . Проверено 19 февраля 2014 .
- ^ a b c OpenLiteSpeed 1.1 (с SPDY!) Дата обращения 12 августа 2013.
- ^ a b «Firefox 15 - Примечания к выпуску» . Проверено 3 сентября 2012 года .
- ^ «Протокол SPDY - Проект 3.1» . Проверено 17 ноября 2013 года .
- ^ a b «Рабочий стол Firefox Notes» . 2014-02-04 . Проверено 5 февраля 2014 .
- ^ a b OpenLiteSpeed 1-й веб-сервер для поддержки SPDY / 3.1! Проверено 10 января 2014.
- ^ NGINX объявляет о поддержке SPDY / 3.1, получено 4 февраля 2014 г.
- ^ Примечания к выпуску F5 Bigip 11.6.0, получено 10 марта 2015 г.
- ^ «Предстоящие изменения SPDY / 4, чтобы привести его в соответствие с черновиком HTTP / 2» . Проверено 27 февраля 2014 года .
- ^ Реализация клиента Chromium SPDY .
- ^ Chromium: примеры прокси SPDY .
- ^ Список переключателей командной строки Chromium .
- ^ Бенцель, Крис; Беки, Бенце (9 февраля 2015 г.). «Привет, HTTP / 2, прощай, SPDY» . Блог Chromium . Дата обращения 9 февраля 2015 .
- ^ "Группы Google" . groups.google.com .
- ^ «Индикатор HTTP / 2 и SPDY» . Дополнения для Firefox . Mozilla. 2014-11-26 . Проверено 12 февраля 2015 .
- ^ Дэвид Хоннеффер, специалист по документации. «Opera: История изменений Opera 12.10» .
- ^ «WebGL, SPDY / 3, новые инструменты разработчика и многое другое подтверждено для IE11 в Win 8.1» . Новости Microsoft.
- ^ "Изменения IE11" . Microsoft.
- ^ «Microsoft выпускает Internet Explorer 11 для Windows 7» . 2013-11-07.
- ^ «Google не загружается в первый раз в IE11 через веб-прокси в Windows 8.1? Отключить поддержку SPDY. | Злой техник» . Angrytechnician.wordpress.com. 2014-01-16 . Проверено 19 февраля 2014 .
- ^ Роб Трэйс; Дэвид Уолп (8 октября 2014 г.). «HTTP / 2: долгожданное продолжение» . Microsoft . Проверено 8 октября 2014 года .
- ↑ Райан Пол (28 сентября 2011 г.). «Веб-браузер Amazon Silk добавляет новый поворот к старой идее» . Проверено 21 октября 2011 .
- ^ «Что нового в сети Foundation» (PDF) . Apple Inc . Проверено 7 июля 2014 .
- ^ «Использование SPDY для веб-сайтов» . w3techs.com . Проверено 26 июля 2016 .
- ^ «Использование веб-серверов для веб-сайтов» . w3techs.com . Проверено 26 июля 2016 .
- ^ a b «HTTP / 2 поддерживается в NGINX с открытым исходным кодом 1.9.5 - NGINX» . 22 сентября 2015.
- ^ «Использование HTTP / 2 для веб-сайтов» . w3techs.com . Проверено 26 июля 2016 .
- Список рассылки ^ spdy-dev: SPDY на серверах Google? .
- ^ Google ускоряет загрузку веб-страниц с помощью протокола SPDY - Облачные вычисления - Новости и обзоры . eWeek.com (20.06.2011). Проверено 21 ноября 2013.
- ^ «Исследовательский блог: Интернет в 2 раза быстрее» . Блог исследований .
- ^ Идо Safruti (2011-06-15). «От быстрого к SPDY - Velocity 2011» .
- ^ "Группы Google" .
- ^ Twitter принимает SPDY .
- ^ Функция Jetty SPDY .
- ^ "indutny / node-spdy · GitHub" . Github.com . Проверено 10 мая 2012 .
- ^ Федор Индутный (2012-01-24). «Что такое $% @! SPDY - blog.nodejitsu.com - масштабирование приложений node.js по одному обратному вызову за раз» . blog.nodejitsu.com . Проверено 10 мая 2012 .
- ^ "mod-spdy - Модуль Apache SPDY - Хостинг проектов Google" . Проверено 10 мая 2012 .
- ^ "libspdy" . daniel.haxx.se. 2011-10-18 . Проверено 10 мая 2012 .
- ^ «Добро пожаловать в Twitter - войдите или зарегистрируйтесь» .
- ^ "mod_spdy - mod_spdy - Разработчики Google" . Проверено 10 мая 2012 .
- ^ F5 помогает организациям улучшить взаимодействие с пользователем и упростить управление с помощью первого интегрированного шлюза SPDY | О F5 | F5 Networks Архивировано 11 июня 2012 г. в Wayback Machine . F5.com (08.05.2012). Проверено 21 ноября 2013.
- ^ "Объявление о реализации проекта 2 SPDY в nginx" . Nginx. 2012-06-15 . Проверено 16 июня 2012 .
- ^ Бивер, Дуг. «Выражение интереса HTTP2» . W3C . Проверено 15 июля 2012 года .
- ^ Финли, Клинт. «Facebook становится немного более SPDY» . Проводной . Проверено 18 марта 2013 года .
- ^ "Только что включил #SPDY для всех http://WordPress.com/ хостинговых сайтов" . 2012-08-28 . Проверено 28 августа 2012 . Внешняя ссылка в
|title=
( помощь ) - ^ [1] DSM 5.0 бета
- ^ Джон Грэм-Камминг (2014-02-17). «Будьте в курсе новейших протоколов: SPDY / 3.1 | Блог CloudFlare» . Blog.cloudflare.com . Проверено 19 февраля 2014 .
- ^ Джастин Дорфман. «Сейчас обслуживается: SPDY 3.1» . blog.maxcdn.com . Проверено 20 мая 2014 .
- ^ [2] Поддержка SPDY со стороны Yahoo на www.yahoo.com
- ^ «Откройте исходный код нашего кода NGINX HTTP / 2 + SPDY» . 2016-03-13 . Проверено 5 августа 2016 .
- ^ Ghedini, Alessandro; Лалкака, Рустам (26 сентября 2019 г.). «HTTP / 3: прошлое, настоящее и будущее» . Блог Cloudflare . Проверено 16 января 2020 года .
Внешние ссылки [ править ]
- Документация SPDY
- SPDY: Google хочет ускорить работу в Интернете, отказавшись от HTTP
- SPDY-Белая книга
- Модуль Apache SPDY
- Обзор и анализ SPDY