Виммельбух, 3, перетяжка
Виммельбух, 3, перетяжка
Виммельбух, 3, перетяжка

От HTTP/1.1 до HTTP/3: как эволюционировали сетевые протоколы

Рассказываем о том, как изменялись сетевые протоколы — HTTP/1.1 до HTTP/3, а также об их особенностях.

189 открытий2К показов
От HTTP/1.1 до HTTP/3: как эволюционировали сетевые протоколы

Сетевые протоколы — это правила, по которым устройства взаимодействуют в сети. Благодаря им отправка и получение данных проходят без потерь и искажений информации. Чтобы протоколы работали, все участники процесса должны принимать предложенные условия и следовать им. Стандарты взаимодействия могут быть встроены в аппаратную часть устройств (то есть в железо) и/или в программный код.

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

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

HTTP/1.1: Первый стандарт

Основа цифрового мира — информация. Протоколы HTTP делают ее доступной для пользователя. Речь идет о правилах передачи гипертекста, на которых основана работа веб-ресурсов. Протокол HTTP регламентирует взаимодействие браузеров с серверами при загрузке страниц, картинок, видео и прочих данных.

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

Ранняя история

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

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

Первым протоколом стал HTTP/0.9, который использовал сетевую модель управления передачей TCP в качестве транспортного слоя. HTTP/0.9 был задействован только в передаче гипертекста — это единственная концепция представления данных, которая существовала на тот момент.

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

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

Указанные выше проблемы были частично исправлены в HTTP/1.0, реализованном в 1995 году после первой всемирной конференции World Wide Web. Рабочая группа, созданная по итогам встречи разработчиков и представителей ИТ-индустрии, занялась вопросами развития сетевых протоколов. Сайты MTV, Amazon, Microsoft и других крупных компаний к тому времени уже были запущены и нуждались в развитии инфраструктуры.

Ресурсы работали через HTTP/1.0 поверх TCP, при этом новый протокол был ориентирован на графические браузеры. Для передачи метаданных клиент и сервер использовали заголовки, задающие тип передаваемых данных. Таким образом, по протоколу, кроме гипертекста, можно было передавать графические, аудио и другие файлы. Инструмент поддерживал кэширование, аутентификацию, передачу через прокси типа SQUID и шлюзы.

Несмотря на все нововведения, обнаружились и проблемы протокола, исходящие из его дизайна. Принцип «один запрос — один ответ» показывал более низкую эффективность, чем конвейерная передача нескольких запросов сразу. Для решения задачи устанавливалось несколько TCP-соединений вместо одного. Это ускоряло загрузку, но увеличивало использование ресурсов.

Запуск HTTP/1.1

К концу прошлого века программисты приступили к поиску альтернатив. Перед ними стояли вполне конкретные задачи:

  • сократить избыток TCP-соединений;
  • повысить эффективность и скорость передачи данных;
  • увеличить возможности кэширования;
  • сократить использование IP-адресов;
  • стандартизировать методы доставки веб-приложений;
  • установить контроль над расширениями к протоколу;
  • обеспечить совместимость веб-приложений.

Все эти проблемы были в той или иной степени решены в 1999 году с выходом HTTP/1.1. Это стандарт сейчас известен всем разработчикам и частично продолжает использоваться. Текстовый протокол с расширенной семантикой предыдущих версий работал поверх TCP с помощью опционального слоя шифрования SSL/TLS.

Алгоритм работы HTTP/1.1 следующий:

  1. Клиент (компонент, отправляющий запрос) устанавливает соединение через TCP и согласует SSL/TLS-связи.
  2. Сервер получает от клиента строку с методом, маршрутом к документу и версией протокола. 
  3. Далее клиент отправляет заголовки в нужном формате, уведомляет при необходимости о поддержке стабильных подключений и может попросить сервер не прекращать соединение после завершения запроса.
  4. Сервер в ответ отправляет версию протокола, часть строки со статус-кодом, по возможности тело ответа.
  5. Если обе стороны поддерживают постоянные подключения, соединение TCP не закрывается, что решает проблему избыточного использования этой сетевой модели.

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

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

Разработчики обращали внимание на блокировку Head-of-Line (начала очереди). Такая ситуация возникает, когда один объект с низкой скоростью задерживает весь поток. Аналогия с кассой супермаркета, когда покупатели с единичными покупками ждут, пока рассчитается один клиент с огромной тележкой товаров, в полной мере отражает суть проблемы.

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

HTTP/2: Большой шаг вперед

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

Возникла настоятельная потребность в новых протоколах. В начале 2010 разработчики Google создали экспериментальное решение SPDY — альтернативный вариант для обмена данными. Протокол повышал скорость отклика и решал проблему удвоения данных. Именно он стал основой для HTTP/2.

Характеристики и преимущества протокола HTTP/2

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

Официальный стандарт HTTP/2 был представлен в 2015 году, а к 2022 на нем уже работала почти половина всех сайтов. Ресурсы с высокой посещаемостью почти в полном составе перешли на этот протокол с целью экономии средств на передаче данных.

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

Вот основные плюсы HTTP/2:

  • HTTP/2 — мультиплексированный протокол, поэтому параллельные запросы могут исполняться через одно и то же соединение. Это отменяет блокировки начала очереди Head-of-Line — не нужно дожидаться прохождения предыдущего запроса перед отправкой следующего.
  • Сжатие заголовков, которые часто совпадают в разных запросах, устраняет дублирование и экономит трафик — лишние данные не передаются, только нужные.
  • Функция Server Push. Эта технология прогнозирования списка ресурсов, которые могут понадобиться клиенту в ближайшее время, и их предварительное продвижение.
  • Безопасность данных. Протокол не требует обязательного шифрования HTTPS, но большинство браузеров делают это автоматически, что повышает уровень безопасности при обмене данными. 
  • Установка приоритетов. Сторона клиента может указывать приоритет запроса, на что сервер отвечает соответственно — отправляя в первую очередь более важные ресурсы.

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

Поддержка и перспективы

Внедрение протокола второго поколения пошло на пользу и разработчикам. Теперь создание и реализация веб-проектов стали более простыми процедурами. В свою очередь улучшение пользовательского опыта и SEO — это рост монетизации ресурсов и увеличение коммерческой отдачи от проектов.

Специалисты отмечают, что преимущества HTTP/2 для поисковой оптимизации связано с техническими особенностями протокола. Быстродействие сайта входит в число важных факторов ранжирования. Медленный ресурс вряд ли понравится клиентам. Практика показывает, что внедрение нового протокола повышает скорость загрузки на 50-80%. Посетители имеют меньше проблем при навигации и использовании интерактивных функций.

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

HTTP/3: Протокол нового поколения

Разработка нового протокола началась еще в 2018 году. При этом экспериментальный стандарт QUIC, на котором основан HTTP/3, компания Google создала еще в 2012. Именно благодаря транспортному протоколу QUIC технология нового поколения получила свои преимущества и уникальные качества.

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

Транспортный протокол QUIC — это разработка на базе UDP (User Datagram Protocol), которая оперирует собственными, принципиально иными механизмами управления данными, контроля и исправления ошибок.

Основные преимущества протокола нового поколения:

  • Ускоренное соединение. QUIC использует взаимный обмен приветствиями (handshake) уменьшенной длины в сравнении с TCP, поэтому передача данных начинается быстрее.
  • Уменьшение задержки. Транспортный протокол оптимизирован для работы в условиях нестабильного интернета — это положительно влияет на пользовательский опыт.
  • Высокая пропускная способность. QUIC более эффективно использует возможности сети, даже если происходят потери пакетов.
  • Повышенная безопасность. Используется шифрование TLS 1.3, что делает передачу данных более безопасной. 
  • Повышение качества веб-ресурсов. Внедрение протоколов выводит разработку онлайн-сервисов на новый уровень. Быстрая загрузка, беспроблемная передача звука и видео — все это ускоряет создание новых проектов и повышает их эффективность.

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

Зачем нужен HTTP/3, если есть протокол второго поколения? Эксперты говорят, что необходимость в новом стандарте, основанном на транспортном протоколе QUIC, назрела практически сразу после повсеместного распространения интернета. TCP изначально работал на максимуме продуктивности, поэтому имел существенные ограничения.

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

Реализация и поддержка HTTP/3

В 2024 году протокол HTTP/3 поддерживают многие популярные браузеры. В Chrome стандарт используется в большинстве подключений к серверам. Подключение через HTTP/3 применяют также Firefox, Safari, Microsoft Edge и другие браузеры.

В настоящий момент этот протокол поддерживают миллионы самых популярных онлайн-ресурсов, и это количество постоянно растет. Кроме компании Google, которая принимала активное участие в разработке нового стандарта, протокол использует, например, платформа CloudFlare — ее опции без использования серверов совместимы с HTTP/3. Активные пользователи протокола — компании Akamai, Fastly, Amazon и многие другие.

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

Итоги — будущее сетевых протоколов

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

Потребуется также оптимизация для IoT — интернета вещей. Таких устройств становится все больше, растет и необходимость в эффективных протоколах для них. В этом направлении разработка стандартов ведется особенно интенсивными темпами.

Становится все более актуальным применение искусственного интеллекта в совершенствовании сетевых протоколов. Машинное обучение и ИИ могут быть использованы для оптимизации различных уровней сетевого взаимодействия для повышения производительности и безопасности.

Следите за новыми постами
Следите за новыми постами по любимым темам
189 открытий2К показов