Что такое 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 / 2HTTP-сообщения от 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. Если это не так, возможно, подумайте о переключении браузера

,

Ссылка на основную публикацию
Adblock
detector