Объяснение технологий

Что такое HTTP / 2 и как это влияет на будущее Интернета?

Что такое HTTP / 2 и как это влияет на будущее Интернета?

Возможно, вы еще не слышали о HTTP / 2, но это самое последнее обновление HTTP. Новый стандарт протокола вводит некоторые новые концепции и делает связь между серверами и приложениями более быстрой и эффективной.

Что такое HTTP / 2?

Протокол передачи гипертекста версии 2, или HTTP / 2, является первым крупным обновлением HTTP за 15 лет.

Предыдущий стандарт протокола, HTTP / 1.1, использовался с 1997 года и использует смесь неуклюжих обходных путей для улучшения ограничений HTTP.

Он основан на SPDY («быстрый»), эксперимент с открытым исходным кодом, запущенный Google для решения некоторых проблем и ограничений HTTP / 1.1.

Инженерная рабочая группа по Интернету (IETF) определяет подобные изменения в протоколе передачи гипертекста версии 2, проект 17 :

«HTTP / 2 позволяет более эффективно использовать сетевые ресурсы и уменьшить восприятие задержки за счет введения сжатия поля заголовка и разрешения нескольких одновременных обменов по одному и тому же соединению […]

«Это также позволяет назначать приоритеты запросам, позволяя более важным запросам выполняться быстрее, что еще больше повышает производительность».

«HTTP / 2 также обеспечивает более эффективную обработку сообщений за счет использования двоичного фрейма сообщения».

«Данная спецификация является альтернативой синтаксису сообщений HTTP / 1.1, но не устарела. Существующая семантика HTTP остается неизменной ».

HTTP / 2 основан на SPDY

HTTP / 2 основан на SPDY

К 2012 году большинство современных браузеров и многие популярные сайты (Google, Twitter, Facebook и т. Д.) Уже поддерживали SPDY. По мере роста популярности SPDY рабочая группа HTTP (HTTP-WG) начала работу по обновлению стандарта HTTP.

С этого момента SPDY стал основой и экспериментальной ветвью для новых функций в HTTP / 2. В то время мы изучали, как SPDY может улучшить просмотр страниц С тех пор стандарт версии 2 был разработан, утвержден и опубликован.

Многие функции SPDY были включены в HTTP / 2, и Google в конце концов прекратил поддержку этого протокола в начале 2016 года.

Большинство браузеров в конечном итоге перестали поддерживать SPDY, и, поскольку альтернативы нет, HTTP / 2 становится стандартом де-факто.

Хотя стандарт протокола HTTP / 2 не является строго обратно совместимым с HTTP / 1, совместимость может быть достигнута посредством перевода. Клиент, использующий только HTTP / 1.1, не будет понимать сервер, использующий только HTTP / 2, и наоборот, поэтому новая версия протокола — HTTP / 2, а не HTTP / 1.2.

Тем не менее, важной частью работы, выполняемой HTTP-WG, является обеспечение того, чтобы HTTP / 1 и HTTP / 2 могли переводиться туда и обратно без потери информации.

Любые новые представленные механизмы или функции также не будут зависеть от версии и будут обратно совместимы с существующей сетью.

HTTP / 2 на самом деле не то, что пользователь может реализовать, но есть вещи, которые мы можем сделать, чтобы повлиять на скорость нашего просмотра. Верите ли вы в один из этих распространенных мифов, чтобы ускорить вашу скорость интернета?

Преимущества и особенности HTTP / 2

HTTP / 2 поставляется с отличными обновлениями стандарта HTTP. Некоторые из наиболее важных из них — двоичное кадрирование, мультиплексирование, установление приоритетов потока, управление потоком и передача на сервер.

Двоичное обрамление

HTTP-сообщение в двоичных кадрах HTTP / 2
HTTP-сообщения от mfuji09   лицензируется в соответствии с CC-BY-SA 2.5 .

После обновления HTTP2 / связь по протоколу HTTP разделяется на обмен двоично-закодированными кадрами. Эти кадры отображаются в сообщения, которые принадлежат конкретному потоку. Потоки затем мультиплексируются (в некотором смысле сплетены) в одном TCP-соединении.

Новый уровень двоичного кадрирования вводит некоторую новую терминологию; Потоки, сообщения и кадры.

  • Потоки — это двунаправленные потоки байтов, которые переносят одно или несколько сообщений.
  • Каждый из этих потоков имеет уникальный идентификатор и может переносить двунаправленные сообщения с использованием необязательной информации о приоритете.
  • Кадры — это самая маленькая единица связи в HTTP / 2, которая содержит определенные наборы данных (заголовки HTTP, полезные данные сообщений и т. Д.). Заголовок как минимум идентифицирует поток, которому принадлежит кадр.
  • Сообщения представляют собой полный набор фреймов, которые отображаются на логический запрос или ответное сообщение.
  • Каждое сообщение представляет собой логическое HTTP-сообщение, например запрос или ответ, состоящий из одного или нескольких кадров.

Это позволяет нам использовать одно TCP-соединение, для чего в прошлом требовалось несколько.

мультиплексирование

Пример мультиплексирования

HTTP / 1.1 гарантирует, что только один ответ может быть доставлен за одно соединение. И браузер откроет дополнительные соединения TCP, если клиент хочет сделать несколько параллельных запросов.

HTTP / 2 устраняет это ограничение HTTP / 1.1 и обеспечивает полное мультиплексирование запросов и ответов. Это означает, что клиент и сервер могут разбивать HTTP-сообщение на независимые кадры, которые затем чередуются и повторно собираются на другом конце.

В целом, это самое важное усовершенствование HTTP / 2, поскольку оно частично устраняет необходимость в нескольких соединениях. Это, в свою очередь, обеспечит многочисленные преимущества в производительности для всех веб-технологий.

Уменьшенное количество соединений означает меньшее количество рукопожатий на транспортном уровне (TLS), лучшее повторное использование сеансов и общее снижение требований к ресурсам клиента и сервера. Это делает приложения быстрее, проще и дешевле в развертывании.

Веб-сайты с большим количеством внешних ресурсов (изображения или скрипты) увидят наибольший прирост производительности благодаря мультиплексированию HTTP / 2.

Приоритетность потока и зависимость

Дальнейшие улучшения мультиплексированных потоков сделаны с весовыми и потоковыми зависимостями. HTTP / 2 позволяет нам дать каждому потоку вес (значение от 1 до 256) и сделать его явно зависимым от другого потока.

Эта комбинация зависимости и веса приводит к созданию дерева приоритетов, которое сообщает серверу, как клиент предпочел бы получать ответы.

Сервер будет использовать информацию в дереве приоритетов для управления распределением ЦП, памяти и других ресурсов, а также распределением полосы пропускания, чтобы гарантировать получение клиентом оптимальной доставки высокоприоритетных ответов.

Управление потоком

Проблемы с управлением потоком в HTTP / 2 аналогичны HTTP / 1.1. Однако, поскольку потоки HTTP / 2 мультиплексируются в одном TCP-соединении, управление потоком в HTTP / 1.1 больше не работает.

Короче говоря, управление потоком необходимо, чтобы остановить потоки, мешающие друг другу, чтобы вызвать блокировку. Это делает возможным мультиплексирование. HTTP / 2 позволяет использовать множество алгоритмов управления потоком, не требуя изменений протокола.

В HTTP / 2 не указан алгоритм управления потоком. Вместо этого был предоставлен набор строительных блоков, чтобы помочь клиентам и серверам применять свой собственный контроль потока.

Вы можете найти специфику этих строительных блоков в разделе «Управление потоком» интернет-проекта HTTP / 2.

Сервер Push

Ваш браузер обычно запрашивает и получает HTML-документ с сервера при первом посещении страницы. Затем серверу нужно дождаться, пока браузер проанализирует HTML-документ и отправит запрос на встроенные ресурсы (CSS, JavaScript, изображения и т. Д.).

В HTTP / 1.1 сервер не может отправлять эти ресурсы до тех пор, пока браузер не запросит их, а для каждого ресурса требуется отдельный запрос (т. Е. Несколько рукопожатий и соединений).

Пересылка сервера уменьшит задержку, позволяя серверу отправлять эти ресурсы без запроса, поскольку он уже знает, что клиенту они потребуются. Таким образом, в приведенном выше примере сервер будет использовать CSS, JavaScript ( общий язык сценариев на веб-страницах), а также изображения в браузере для быстрого отображения страницы.

По сути, серверная рассылка позволяет серверу отправлять несколько ответов на один клиентский запрос.

Хотя вручную, это эффект, который мы в настоящее время получаем, встраивая CSS или JS в наши HTML-документы — мы передаем встроенный ресурс клиенту, не дожидаясь, пока клиент запросит его.

Это большой шаг по сравнению с текущим стандартом HTTP строгого рабочего процесса один-на-один с запросом-ответом.

Ограничения HTTP / 2

Изображение браузеров, которые поддерживают HTTP / 2

SPDY придерживался более строгой политики безопасности и требовал шифрования SSL для всех соединений. HTTPS / 2 не требует шифрования, но многие службы не будут обслуживать HTTP / 2 без SSL.

Все основные браузеры поддерживают HTTP / 2, но ни один из них не будет поддерживать его без шифрования. На веб-сайте CanIU есть большой обзор таблиц текущей поддержки браузером HTTP / 2 , как показано выше.

Обратная совместимость и переводы между HTTP / 1.1 и HTTP / 2 замедляют скорость загрузки страницы.

На данный момент нет реальной причины, по которой шифрование не должно быть настройкой по умолчанию или обязательной настройкой. Если у вас уже есть сертификат SSL на вашем сайте, вы можете повысить безопасность вашего сайта HTTPS, включив HSTS.

Является ли HTTP / 2 следующей большой вещью?

Сравнение времени загрузки HTTP / 1.1 и HTTP / 2

HTTP / 2 был предложен в качестве стандарта в середине 2015 года, и большинство браузеров добавили его поддержку к концу этого года. HTTP / 2 уже влияет на работу Интернета и взаимодействие приложений и серверов.

Нет никаких требований для принудительного использования HTTP / 2, но пока он служит только преимуществам, а не недостаткам. Это также довольно незначительное изменение с точки зрения пользователя, которое люди на самом деле не заметят.

По данным W3Tech, 31,7% из первых 10 миллионов веб-сайтов в настоящее время поддерживают HTTP / 2. Для большинства из вас самый быстрый способ включить HTTP / 2 на своем веб-сайте — использовать CDN Cloudflare.

Следующий предложенный стандарт (HTTP / 3) уже находится в разработке и основан на QUIC , другом экспериментальном проекте Google. В октябре этого года HTTP-WG IETF и рабочая группа QUIC официально попросили QUIC стать новым мировым стандартом и переименовать его в HTTP / 3.

Если вам интересно, у Akamai.com есть быстрый инструмент, чтобы проверить, поддерживает ли ваш браузер HTTP / 2 . Если этого не произойдет, возможно, подумать о смене браузера.

Похожие посты
Объяснение технологий

Как работает жесткий диск? [Технология объяснила]

Объяснение технологий

Что такое программное обеспечение с открытым исходным кодом? [MakeUseOf Объясняет]

Объяснение технологий

Разрешения графического дисплея - что означают цифры? [MakeUseOf Объясняет]

Объяснение технологий

Как переформатировать внешний жесткий диск, не теряя на нем все