Введение
Протокол передачи гипертекста (HTTP) – простой, ограниченный и, в конечном счете, скучный протокол уровня приложений, который формирует основу Всемирной паутины. HTTP позволяет получать доступ к сетевым ресурсам, доступным в киберпространстве. А HTTP/2 – это следующая ступень данного протокола. И сегодня мы подробно рассмотрим все то, что касается протокола HTTP/2.
В этой статье мы рассмотрим следующие ключевые аспекты HTTP/2:
HTTP был первоначально предложен Тимом Бернерс-Ли, пионером Всемирной паутины, который разработал протокол приложения с такой простотой, чтобы была возможность выполнять высокоуровневые функции обмена данными между веб-серверами и клиентами.
Первая документально подтвержденная версия HTTP была выпущена в 1991 году как HTTP0.9, которая позже привела к официальному внедрению HTTP1.0 в 1996 году. Версия HTTP1.1 была в 1997 году и с тех пор у нее было мало итерационных улучшений.
В феврале 2015 года рабочая группа HTTP Инженерного совета Интернета (IETF) пересмотрела протокол HTTP и разработала вторую основную версию протокола приложения в виде HTTP/2. В мае 2015 года спецификация внедрения HTTP/2 официально была стандартизирована в ответ на HTTP-совместимый протокол SPDY от Google.
Протокол представляет собой набор правил, которые регулируют механизмы обмена данными между клиентами (например, веб-браузеры, используемые пользователями Интернета для запроса информации) и серверы (машины, содержащие запрошенную информацию).
Протоколы обычно состоят из трех основных частей: Заголовок, Полезная нагрузка и Футер. Заголовок содержит различную информацию, например, адреса источника и получателя, размер и тип, и идет перед Полезной нагрузкой. Полезная нагрузка – это фактическая (основная) информация, передаваемая с использованием протокола. Футер следует за Полезной нагрузкой и работает как контрольное поле для маршрутизации запросов клиент-сервер для предполагаемых получателей и вместе с Заголовком убеждается, что передача данных проходит без ошибок.
Такая система похожа на почтовую службу. Письмо (Полезная нагрузка) вставляется в конверт (Заголовок) с адресом получателя, записанным на нем, запечатывается клеем и подтверждается почтовой маркой (Футер) перед отправкой. За исключением того, что передача цифровой информации в виде двоичной записи (0 и 1) не так проста и требует введения нового измерения в ответ на повышение технологических достижений, возникающих при взрывном росте использования Интернета.
Протокол HTTP первоначально состоял из основных команд: GET (для получения информации с сервера) и POST (для доставки запрошенной информации клиенту). Этот простой и, по-видимому, скучный набор из нескольких команд для GET-данных и POST-ответов по существу сформировал основу для построения других сетевых протоколов. Протокол является еще одним шагом для улучшения пользовательского опыта и эффективности, что требует внедрения протокола HTTP/2 для улучшения работы в Интернете.
С момента своего создания в начале 1990-х годов, HTTP подвергался нескольким крупным капитальным ремонтам. Самая последняя версия HTTP1.1 уже более 15 лет обслуживает Интернет пространство. Веб-страницы в текущую эпоху динамических обновлений информации, ресурсоемкие форматы мультимедийных материалов и чрезмерное стремление к производительности в Интернете оттеснили старые технологии протоколов в категорию устаревших. Эти тенденции требуют значительных изменений HTTP/2 для улучшения Интернета.
Основная цель исследований и разработок для новой версии HTTP базируется на трех качествах, редко связанных с одним сетевым протоколом без необходимости создания дополнительных сетевых технологий – простота, высокая производительность и надежность. Эти цели достигаются за счет внедрения возможностей, которые уменьшают задержку в обработке запросов браузером с такими методами, как мультиплексирование, сжатие, приоритизация запроса и технология сервер push. Такие механизмы, как управление потоком, обновление и обработка ошибок, работают в качестве усовершенствования протокола HTTP для разработчиков, что позволяет обеспечивать высокую производительность и устойчивость веб-приложений. Коллективная система позволяет серверам эффективно реагировать на большее количество контента, чем первоначально запрашивалось клиентами, ограничивая возможности пользователя создавать непрерывные запросы информации до тех пор, пока веб-сайт не будет полностью загружен в веб-браузер. Например, возможность Push-сервера с помощью HTTP/2 позволяет серверам отвечать полным содержимым страницы, кроме информации, которая уже доступна в кеше браузера. Эффективное сжатие файлов заголовков HTTP минимизирует накладные расходы протокола для повышения производительности при каждом запросе браузера и ответе сервера.
Изменения HTTP/2 предназначены для обеспечения совместимости и сочетаемости с HTTP1.1. Ожидается, что преимущества HTTP/2 со временем будут только возрастать, и его способность решать проблемы, связанные с производительностью в реальном сравнении с HTTP1.1, значительно повлияет на его эволюцию в долгосрочной перспективе.
Важно отметить, что новая версия HTTP является расширением для своего предшественника и в ближайшее время не ожидается замены HTTP1.1. Реализация HTTP/2 не будет включать автоматическую поддержку всех типов шифрования, доступных с помощью HTTP1.1, но в ближайшем будущем определенно откроет двери для лучших альтернатив или дополнительных обновлений совместимости с шифрованием. Однако сравнение характеристик на уровне HTTP/2 vs HTTP1 и SPDY vs HTTP/2 определяет только последний (по дате) протокол в качестве победителя с точки зрения производительности, безопасности и надежности.
HTTP1.1 ограничивался обработкой только одного запроса на одно TCP-соединение, заставляя браузеры использовать несколько TCP-соединений для одновременной обработки нескольких запросов. Однако использование слишком большого количества параллельных TCP-соединений приводит к перегрузке TCP, что приводит к несправедливой оккупации сетевых ресурсов. Веб-браузеры, использующие несколько подключений для обработки дополнительных запросов, занимают большую долю доступных сетевых ресурсов, следовательно, они снижают производительность сети для других пользователей.
Выдача нескольких запросов из браузера также приводит к дублированию данных на маршрутах передачи данных, что, в свою очередь, требует дополнительных протоколов для извлечения нужной информации, свободной от ошибок в конечных узлах.
Естественно, это вынуждало использовать такие методы, как клонирование домена, конкатенация, вложение данных и написание спрайтов. Неэффективное использование базовых TCP-соединений с HTTP1.1 также приводит к плохой приоритизации ресурсов, что приводит к возрастающему снижению производительности по мере роста веб-приложений с точки зрения сложности, функциональности и объема.
Веб значительно расширился, несмотря на устаревшие сетевые технологии на базе HTTP. Основные качества HTTP1.1, разработанные более десяти лет назад, открыли двери для злоупотреблений.
Например, взлом куки позволяет киберпреступникам повторно использовать предыдущий рабочий сеанс для компрометации паролей учетных записей, поскольку HTTP1.1 не предоставляет никаких средств для идентификации данных сеанса. Хотя аналогичные проблемы безопасности будут продолжать преследовать HTTP/2, новый протокол приложения разработан с лучшими возможностями безопасности, такими как улучшенная реализация новых функций TLS.
Мультиплексирование
Двунаправленная последовательность фреймов текстового формата, передаваемых по протоколу HTTP/2, обмениваемых между сервером и клиентом, называется «потоками». Ранее итерации протокола HTTP были способны передавать только один поток одновременно с некоторой временной задержкой между каждой передачей потока.
Получение гигабайтов медиаконтента через отдельные потоки, отправленные один за другим, неэффективно и ресурсоемко. Изменения HTTP/2 помогли создать новый двоичный структурный слой для решения этих проблем.
Этот уровень позволяет клиенту и серверу распределять полезную нагрузку HTTP на небольшую, независимую и управляемую чередующуюся последовательность фреймов. Затем эта информация снова собирается на другом конце.
Форматы двоичных фреймов позволяют осуществлять обмен несколькими одновременными открытыми независимыми двунаправленными последовательностями без задержки между последовательными потоками.
Этот подход представляет собой ряд преимуществ HTTP/2, описанных ниже:
Благодаря этой возможности пакеты данных из нескольких потоков по существу смешиваются и передаются по одному TCP-соединению. Затем эти пакеты разбиваются на принимающей стороне и представляются в виде отдельных потоков данных. Передача нескольких параллельных запросов одновременно с использованием HTTP версии 1.1 или более ранней версии требовала нескольких TCP-соединений, что по своей сути затрудняет общую производительность сети, несмотря на более высокую передачу потоков данных. HTTP/2 обеспечивает более низкую задержку, более высокую производительность, лучшие рейтинги SEO.
Сервер Push
Эта возможность позволяет серверу отправлять дополнительную кэшируемую информацию клиенту, которая не запрашивается, но ожидается в будущих запросах. Например, если клиент запрашивает ресурс X, и понятно, что ресурс Y ссылается на запрошенный файл, сервер может решить отправить и Y вместе с X вместо того, чтобы ждать соответствующего запроса клиента.
Клиент (браузер) помещает отправленный ресурс Y в свой кеш для будущего использования. Этот механизм сохраняет обратную связь с запросом и уменьшает задержку сети. Server Push был первоначально представлен в протоколе SPDY от Google. Идентификаторы потоков, содержащие псевдо-заголовки, такие как :path
позволяют серверу инициировать Push для информации, которая должна быть кэшируемой. Клиент должен явно разрешить серверу использовать кэшируемые ресурсы с помощью HTTP/2 или завершать отправляемые потоки с помощью определенного идентификатора потока.
Другие изменения HTTP/2, такие как Server Push, проактивно обновляют или аннулируют кеш клиента и также называются «Cache Push». Долгосрочные последствия зависят от способности серверов идентифицировать возможные push-ные ресурсы, которые клиенту фактически не нужны.
Реализация HTTP/2 обеспечивает значительную производительность для перенаправленных ресурсов, а также другие преимущества HTTP/2, описанные ниже:
Подобные возможности Push уже доступны с субоптимальными технологиями, такими как Встраивание ответов сервера, тогда как Server Push представляет собой решение на уровне протокола, чтобы избежать сложностей с оптимизационными хаками, вторичными по отношению к базовым возможностям самого протокола приложения.
HTTP/2 мультиплексирует и приоритизирует поток встраиваемых данных, чтобы обеспечить лучшую производительность передачи, как видно из других потоков данных запроса-ответа. В качестве встроенного механизма безопасности сервер должен иметь право направить ресурсы заранее.
Бинарные протоколы
Последняя версия HTTP значительно расширилась с точки зрения возможностей и таких атрибутов, как преобразование из текстового протокола в бинарный протокол. HTTP1.x используется для обработки текстовых команд для завершения циклов запроса-ответа. HTTP/2 будет использовать двоичные команды (1 и 0) для выполнения одних и тех же задач. Этот атрибут облегчает выполнение структурирования и упрощает реализацию команд, которые смешиваются с путаницей из-за команд, содержащих текст и лишние пробелы.
Хотя, вероятно, потребуется больше усилий для чтения бинарных текстовых команд по сравнению с текстовыми командами, для сети проще создавать и анализировать фреймы, доступные в двоичном формате. Фактическая семантика остается неизменной.
Браузеры, использующие реализацию HTTP/2, будут преобразовывать одни и те же текстовые команды в двоичные файлы перед передачей по сети. Бинарный структурный слой не обратно совместим с клиентами и серверами HTTP1.x и является ключевым фактором, обеспечивающим значительные преимущества по производительности по сравнению с SPDY и HTTP1.x. Использование двоичных команд позволяют обеспечивать ключевые бизнес-преимущества для интернет-компаний и онлайн-бизнеса:
Оптимизация потока HTTP/2
Реализация позволяет клиенту предоставлять предпочтение конкретным потокам данных. Хотя сервер не обязан следовать этим инструкциям от клиента, этот механизм позволяет серверу оптимизировать распределение сетевых ресурсов на основе требований конечного пользователя. Приоритизация потоков работает с зависимостями и весом, назначенными каждому потоку. Хотя все потоки по своей сути зависят друг от друга, за исключением того, что зависимым потокам также назначается вес между 1 и 256. Детали для механизмов приоритизации потока все еще обсуждаются.
Однако в реальном мире сервер редко контролирует ресурсы, такие как CPU и подключение к базам данных. Сама сложность реализации не позволяет серверам выполнять запросы приоритета потока. Исследования и разработки в этой области особенно важны для долгосрочного успеха HTTP/2, поскольку протокол способен обрабатывать несколько потоков данных с помощью одного TCP-соединения. Эта возможность может привести к одновременному приходу запросов сервера, которые фактически отличаются с точки зрения приоритета с позиции конечного пользователя. Удержание запросов обработки потока данных на случайной основе подрывает эффективность и опыт конечного пользователя, обещанный изменениями HTTP/2.
В то же время интеллектуальный и широко принятый механизм приоритизации потока представляет преимущества HTTP/2, объясняемые следующим образом:
Сжатие заголовка с отслеживанием состояния
Обеспечение высокого качества пользовательского опыта нужно сайтам, которые насищены контентом и графикой.
Протокол HTTP не зависит от состояния, что означает, что каждый запрос клиента должен содержать столько информации, сколько серверу необходимо для выполнения нужной операции. Этот механизм заставляет потоки данных переносить несколько повторяющихся фреймов информации, поэтому сервер не должен хранить информацию из предыдущих клиентских запросов.
В случае веб-сайтов, обслуживающих большой мультимедийный контент, клиенты используют несколько почти идентичных фреймов заголовка, что приводит к задержке и ненужному потреблению ограниченного сетевого ресурса. Приоритетное сочетание потоков данных не может достичь желаемых стандартов производительности параллельности без оптимизации этого механизма.
Реализация HTTP/2 решает эти проблемы с возможностью сжатия большого количества избыточных фреймов заголовка. Она использует спецификацию HPACK как простой и безопасный подход к сжатию заголовков. И клиент и сервер поддерживают список заголовков, используемых в предыдущих запросах клиент-сервер.
HPACK сжимает индивидуальное значение каждого заголовка до его передачи на сервер, а затем просматривает закодированную информацию в списке ранее перенесенных значений заголовка для восстановления полной информации заголовка. Сжатие заголовка HPACK для реализации протокола HTTP/2 дает огромные преимущества в производительности, включая некоторые преимущества HTTP/2, описанные ниже:
Основная семантика HTTP, включая коды состояния HTTP, URI, методологии и файлы заголовков остаются такими же в последней версии HTTP/2. HTTP/2 основан на SPDY, альтернативе Google для HTTP1.x. Реальные различия заключаются в механизмах, используемых для обработки запросов клиент-сервер. Следующая таблица идентифицирует несколько областей сходства и улучшений среди HTTP1.x, SPDY и HTTP/2:
HTTP1.x | SPDY | HTTP2 |
SSL не требуется, но рекомендуется | SSL требуется | SSL не требуется, но рекомендуется |
Медленное шифрование | Быстрое шифрование | Даже более быстрое шифрование |
Один клиент-серверный запрос на одно TCP-соединение | Несколько запросов клиент-сервер на одно TCP-соединение. Происходит на одном хосте одновременно | Мультиплексирование с несколькими хостами. Происходит на нескольких хостах одновременно |
Нет сжатия заголовка | Включено сжатие заголовка | Сжатие заголовков с использованием улучшенных алгоритмов, которые повышают производительность, а также безопасность |
Нет приоритета потока | Приоритет потока включен | Улучшены механизмы определения приоритетов потока |
HTTPS используется для создания сверх защищенной сети, соединяющей компьютеры, машины и серверы для обработки конфиденциальной бизнес и пользовательской информации. Банки, обрабатывающие финансовые операции и учреждения здравоохранения, хранящие записи пациентов, являются первоочередными задачами в отношении защиты от преступлений, связанных с применением кибертехнологий. HTTPS работает как эффективный слой против постоянных угроз киберпреступности, хотя это не единственное развертывание безопасности, используемое для предотвращения сложных кибератак, разрушающих дорогостоящие корпоративные сети.
Поддержка браузерами HTTP/2 включает в себя HTTPS-шифрование и фактически дополняет общую производительность безопасности развертываний HTTPS. Такие функции, как меньшее количество рукопожатий TLS, низкое потребление ресурсов на стороне клиента и сервера и улучшенные возможности повторного использования существующих веб-сеансов при устранении уязвимостей, связанных с HTTP1.x, представляют собой HTTP/2 в качестве ключевого средства защиты цифровой связи в уязвимых сетевых средах.
HTTPS не ограничивается крупными организациями, и кибербезопасность столь же ценна для владельцев онлайн-бизнеса, обычных блоггеров, торговцев электронной коммерцией и даже пользователей социальных сетей. HTTP/2 по своей сути требует последнюю, самую безопасную версию TLS и все онлайн-сообщества, владельцы бизнеса и веб-мастера должны обеспечить наличие на своих веб-сайтах использование HTTPS по умолчанию.
Для включения HTTPS нужно: купить, активировать и установить сертификат безопасности на сервер и, наконец, обновление контента веб-сайта для использования HTTPS. Детальнее по установке HTTPS читайте здесь.
Интернет-индустрии пришлось заменить стареющий HTTP1.x альтернативными перспективными улучшениями для обычного пользователя. Переход от HTTP1.x к HTTP/2 почти полностью основан на максимизации потенциала технологических достижений для удовлетворения этих ожиданий.
С точки зрения интернет-бизнеса и интернет-потребителей, Интернет становится все медленнее, поскольку он заполняется растущими объемами нерелевантного мультимедийного контента.
Чтобы онлайн-бизнес мог быстро достичь своего целевого рынка и чтобы интернет-пользователи быстрее получали доступ к более эффективному веб-контенту, изменения HTTP/2 разрабатываются для повышения эффективности передачи данных на клиент-сервер. И, кроме того, Интернет более ситуативен, чем когда-либо.
Скорость Интернета не одинакова во всех сетях и географических точках. Мобильная пользовательская база все больше требует бесшовного высокопроизводительного Интернета во всех форм-факторах устройства, даже если перегруженные мобильные сети не могут конкурировать с высокоскоростным широкополосным доступом в Интернет. Полностью обновленный и переработанный механизм передачи данных и передачи данных в виде HTTP/2 стал жизнеспособным решением со следующими существенными преимуществами.
Веб-производительность
Способность протокола отправлять и получать больше данных на клиент-серверный цикл связи – это реальное, реализуемое и практичное преимущество HTTP/2 с точки зрения производительности.
Такие технологии, как мультиплексирование, создают дополнительное пространство для переноса и передачи большего количества данных одновременно.
И что происходит, когда механизм передачи данных устраняет все препятствия для улучшения производительности сети? Побочный результат превосходной работы сайта включает повышенную удовлетворенность клиентов, лучшую оптимизацию поисковых систем, высокую производительность и использование ресурсов, расширение пользовательской базы, улучшение показателей продаж и многое другое.
Производительность мобильных веб-сайтов
Миллионы пользователей Интернета получают доступ к Интернету со своих мобильных устройств в качестве основного пути в кибер-мир. HTTP/2 разработан в контексте современных тенденций использования Интернета. Возможности, такие как мультиплексирование и сжатие заголовков, хорошо работают для уменьшения задержек при доступе к интернет-сервисам в мобильных сетях передачи данных, обеспечивающих ограниченную пропускную способность для каждого пользователя.
HTTP/2 оптимизирует веб-интерфейс для мобильных пользователей с высокой производительностью и безопасностью, которые ранее были привязаны только к использованию ПК.
Дешевый Интернет
Повышенная пропускная способность HTTP/2 и повышение эффективности передачи данных позволят операторам телекоммуникационных услуг сократить эксплуатационные расходы при сохранении стандартов высокоскоростного интернета. Сокращение OpEx будет стимулировать поставщиков услуг к снижению цен на рынке и внедрению высокоскоростных уровней обслуживания для существующей модели ценообразования.
Экспансивный охват
Плотно заселенные азиатские и африканские рынки остаются недостаточно обслуживаемыми с ограниченным доступом к интернету. Поставщики интернет-услуг инвестируют (для получения максимальной выгоды) в развитие сетей только в крупных городах и развитых местах. Преимущества HTTP/2, приводящие к широкомасштабному внедрению расширенного протокола, естественно уменьшают перегрузку сети до резервных ресурсов и пропускной способности для географически отдаленных регионов.
Улучшенный мобильный опыт
Прогрессивные онлайн-компании следуют стратегии Mobile-First, чтобы покрывать спрос быстрорастущей мобильной базы пользователей. Ограничения на аппаратное обеспечение мобильных устройств, пожалуй, являются самым большим ограничением для мобильного веб-сайта, на которое влияет длительное время обработки запросов браузера. HTTP/2 сокращает время загрузки и задержки мобильной сети до управляемых уровней.
Улучшение использования технологий
Потребление ресурсов значительно увеличилось для запросов браузеров и обработчиков серверов при доставке мультимедийных ресурсов и сложных веб-проектов. Такие функции, как сжатие заголовков, серверная нагрузка, потоковые зависимости и мультиплексирование, способствуют улучшению использования сети в качестве ключевого преимущества HTTP/2.
Безопасность
Преимущества HTTP/2 выходят за рамки производительности, поскольку алгоритм HPACK позволяет HTTP/2 обойти распространенные угрозы безопасности, ориентированные на текстовые протоколы прикладного уровня. HTTP/2 содержит команды в двоичном формате и разрешает сжатие метаданных заголовка HTTP в соответствии с подходом «Безопасность по умолчанию» для защиты конфиденциальных данных, передаваемых между клиентами и серверами. Протокол также может похвастаться полной поддержкой шифрования и требует улучшенной версии Transport Layer Security (TLS1.2) для лучшей защиты данных.
Новаторство
HTTP/2 воплощает инновации и концепцию высокопроизводительной сети. HTTP/2 подкрепляет кибер-мир, как мы его знаем сегодня, а изменения HTTP/2 в основном основаны на протоколе SPDY от Google, который совершил гигантский скачок по сравнению со старыми версиями HTTP1.x и почти полностью заменит SPDY, а также все предыдущие HTTP-итерации в ближайшем будущем. HTTP/2 – это самое большое, самое инновационное изменение в семействе протоколов с 1999 года.
Преимущество HTTP/2 для SEO
SEO-маркетинг находится где-то между искусством и наукой. Интернет-компании должны соответствующим образом развивать свою маркетинговую тактику. Более разумные инвестиции в виде внедрения тщательно разработанных веб-сайтов, которые не просто оптимизированы для скорости, но созданы для обеспечения превосходной производительности, безопасности и пользовательского опыта с нуля. Эти атрибуты позволяют пользователям находить наиболее релевантные ответы при поисковых запросах.
Пользователям Интернета не нужно беспокоиться о настройке своих настольных и мобильных веб-браузеров для поддержки HTTP/2. Google Chrome и Firefox уже много лет поддерживают эту технологию, и Apple добавила поддержку в браузер Safari в 2014 году. Для Internet Explorer нужна версия ОС не ниже Windows 8 для поддержки последнего протокола.
Крупные мобильные веб-браузеры, в том числе Android с Android-браузером, Chrome для Android и iOS, а также Safari в iOS 8 и выше поддерживают HTTP/2 для мобильного доступа в Интернет. Пользователям Интернета рекомендуется установить последние стабильные версии мобильных и настольных веб-браузеров, чтобы получить максимальную производительность и преимущества безопасности протокола приложения, как показано в тестах HTTP/2.
Поддержка веб-серверами: Apache и Nginx
На хостинге для внутренних серверов (или в облаке) придется обновлять и настраивать веб-серверы, чтобы добавить поддержку HTTP/2.
Серверы Nginx, составляющие 66 процентов всех активных веб-серверов, имеют встроенную поддержку HTTP/2, тогда как серверы Apache используют модуль mod_spdy для поддержки браузерами HTTP/2. Модуль был разработан компанией Google для поддержки функций SPDY, таких как мультиплексирование и сжатие заголовков для серверов Apache 2.2.
Следуйте этим простым шагам, чтобы настроить HTTP/2 для своего сайта:
Выбор мастера для ремонта и перетяжки мебели — задача, которая требует вдумчивого подхода. Ведь от…
Выбор идеального хостинга под свой сайт может быть довольно запутанным делом, особенно когда существует так…
Чтобы избегать ошибок, нужно набираться опыта; чтобы набираться опыта, надо делать ошибки Лоуренс Питер
Краткое определение Черного SEO Черное СЕО (или Черная оптимизация) — это любая практика, целью которой…
Получение водительских прав категории C открывает двери к профессиональной деятельности, связанной с управлением грузовыми автомобилями.…