Введение в HTTP / 2

Введение

HTTP / 2 - последняя версия Протокол передачи гипертекста или HTTP [01], который используется браузерами для связи с веб-серверами. Получено из более старого SPDY [02] Протокол HTTP / 2 является первой новой версией HTTP после стандартизации HTTP / 1.1 в RFC 2068 в 1997 году.

Он был разработан HTTP-рабочей группой IETF. httpbis (где «бис» означает «дважды») и опубликован как RFC 7540 [03] Май 2015.

HTTP / 2 принятие

HTTP / 2 все чаще используется работающими веб-сайтами с момента его официального опубликования. Сервис онлайн-опросов W3Techs [04] отмечает, что с сентября 2017 года по сентябрь 2018 года поддержка HTTP / 2 выросла с 16% до 30% всех отслеживаемых веб-сайтов.

Кроме того, основные браузеры (например, Chrome, Firefox, Edge и т. Д.) Уже предоставляют полную поддержку HTTP / 2. [05], (Некоторые даже разработали экспериментальные реализации до того, как HTTP / 2 был принят в качестве стандарта.)

Это широкое распространение означает, что HTTP / 2 потенциально может стать протоколом связи де-факто в Интернете.

Мотивация за HTTP / 2

httpbisустав [06] упоминает несколько компонентов HTTP / 1.1, которые могут быть улучшены в качестве мотивации для HTTP / 2. Однако основной целью группы было уменьшение задержки, воспринимаемой конечным пользователем.

Сделать это, httpbis Рассматривается минимизация накладных расходов полосы пропускания с помощью сжатия заголовка и агрессивных методов предварительной выборки (например, проталкивание сервера), в то же время пытаясь систематически решать известные проблемы производительности, такие как перегрузка соединения и проблема блокирования заголовка линии (HoL) [07].

Более того, HTTP / 2 должен был быть обратно совместимым, то есть он должен был использовать те же глаголы методов, коды состояния, URI и (большинство) полей заголовка, которые есть в HTTP / 1.1. HTTP / 2 также должен был быть разработан для поддержки распространенных вариантов использования HTTP, таких как настольные и мобильные веб-браузеры, программные интерфейсы, прокси и брандмауэры.

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

Итак, что нового в HTTP / 2?

HTTP / 2 по-прежнему использует те же схемы URI и номера портов, которые используются в HTTP / 1.1 (т. Е. Порт 80 для http URI и порт 443 для https URI), но многие вещи выполняются по-разному под капотом.

Самым фундаментальным изменением является введение кадры в качестве основного блока данных HTTP / 2.

HTTP / 1.1 традиционно использует пакеты представлять данные сети. Клиент создает пакет запроса с помощью глагола метода (например, GET or POST), добавив список заголовков, описывающих соединение, и тело, содержащее данные приложения.

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

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

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

Сжатие заголовка

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

Сжатие заголовка, наряду со следующими улучшающими производительность функциями HTTP / 2, может быть особенно полезно в мобильных приложениях или приложениях Интернета (IOT), где требуется минимальное использование сети.

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

Независимая последовательность семантически релевантных кадров называется поток, Потокам присваивается уникальный идентификатор конечной точкой (т. Е. Клиентом или сервером), которая их создала, так что другие конечные точки могут различать их.

Конечные точки могут чередовать кадры из нескольких потоков по одному и тому же соединению HTTP / 2, что позволяет одному сетевому соединению поддерживать несколько одновременно открытых потоков. Этот процесс называется мультиплексирование [08].

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

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

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

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

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

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

Нажмите Сервер

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

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

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

HTTP / 2 Security

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

Более конкретно, HTTP / 2 определен как для HTTP URI (т.е. без шифрования), так и для HTTPS URI (более TLS зашифрованные каналы). Хотя сам стандарт не требует использования шифрования, все основные реализации браузера (например, Firefox [09], Chrome, Safari, Opera, IE, Edge) решили, что они будут только поддержка HTTP / 2 более TLS.

Фактически, браузеры различают открытый текст HTTP / 2 и HTTP / 2 по зашифрованному TLS как два разных протокола. Зашифрованный HTTP / 2 называется h2 и открытый текст h2c, На момент написания статьи ни один из основных браузеров не поддерживал h2c Это означает, что TLS шифрование является обязательным для веб-сайта, чтобы воспользоваться другими преимуществами HTTP / 2. Следовательно, когда HTTP / 2 становится протоколом веб-сети по умолчанию, владельцы устаревших веб-сайтов, которые еще не обновились до SSL /TLS, будет сильно мотивирован, чтобы, наконец, сделать это.

Заключение

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

Получите сертификат сегодня и присоединяйтесь к нам в будущем.

Рекомендации

  1. Протокол HTTP
  2. Протокол SPDY
  3. HTTP / 2 спецификация
  4. W3Techs HTTP / 2 принятие обзора
  5. HTTP / 2 принятие в браузерах
  6. httpbis устав
  7. Блокировка HOL
  8. Мультиплексирование
  9. Firefox по HTTP / 2

Подпишитесь на рассылку новостей SSL.com

Не пропустите новые статьи и обновления с SSL.com

Будьте в курсе и будьте в безопасности

SSL.com является мировым лидером в области кибербезопасности, PKI и цифровые сертификаты. Подпишитесь, чтобы получать последние новости отрасли, советы и анонсы продуктов от SSL.com.

Мы будем рады вашим отзывам

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