Протокол следующего поколения: HTTP3 и его влияние на веб-производительность



Протокол следующего поколения: HTTP3 и его влияние на веб-производительность
Готовы ли вы открыть будущее веб-производительности? HTTP3 меняет способ просмотра Интернета. Он представляет функции для более быстрого, безопасного и эффективного использования Интернета. В этой статье мы рассмотрим разницу между HTTP3 и HTTP2 и их потенциальное влияние на скорость и надежность веб-сайта.

Ключевые выводы
  • Откройте для себя передовой протокол HTTP/3, который улучшит качество просмотра веб-страниц.
  • Узнайте, как HTTP/3 устанавливает быстрые соединения для увеличения скорости.
  • Изучите надежные функции безопасности HTTP/3, включая обязательное шифрование.
  • Узнайте, как HTTP/3 определяет приоритет критически важных ресурсов для оптимизации взаимодействия с пользователем.
  • Получите представление о плавном переключении сети HTTP/3 для бесперебойного просмотра мобильных устройств.

HTTP/3 — это последняя версия протокола передачи гипертекста (HTTP).
HTTP является основой передачи данных во Всемирной паутине. HTTP/3 был разработан Инженерной группой Интернета (IETF). Они сотрудничали с такими технологическими гигантами, как Google и Cloudflare. Цель HTTP/3 — устранить ограничения HTTP/2 и повысить производительность сети.

Одним из наиболее значительных изменений в HTTP/3 является принятие транспортного протокола QUIC. QUIC означает «Быстрое подключение к Интернету по протоколу UDP». Предыдущие версии HTTP основывались на протоколе управления передачей (TCP). Напротив, HTTP/3 использует протокол пользовательских датаграмм (UDP) в качестве основного транспортного протокола.

QUIC сочетает в себе функции TCP, такие как надежность и контроль перегрузки. Он также использует скорость и гибкость UDP. Используя QUIC, HTTP/3 может устанавливать соединения до 33 % быстрее по сравнению с HTTP/2.

Это также уменьшает задержку. Когда клиент, например веб-браузер, инициирует соединение с сервером через HTTP/3, протокол QUIC обеспечивает более эффективный процесс установления связи. Рукопожатие — это автоматизированный процесс обмена информацией между двумя устройствами или системами для установления протоколов и параметров связи.

Чем HTTP3 лучше HTTP2?
Это показатели сравнительного анализа производительности HTTP/3 по сравнению с HTTP/2:

1. Время до первого байта (TTFB)
Время до первого байта (TTFB) измеряет время с момента отправки клиентом запроса до момента получения первого байта ответа от сервера. TTFB включает в себя несколько этапов:
  • DNS-поиск
  • Установление соединения
  • TLS-рукопожатие
  • Время обработки сервера
HTTP/3 обеспечивает более быструю установку соединения, что значительно снижает TTFB по сравнению с предыдущими версиями HTTP. Более быстрый TTFB напрямую приводит к улучшению отклика и производительности, воспринимаемой пользователем. Отслеживание TTFB во время сравнительного анализа помогает выявить проблемы с производительностью серверной части и области для оптимизации.

2. Общее время загрузки страницы


В то время как TTFB измеряет время до получения первого байта ответа, общее время загрузки страницы отслеживает продолжительность, необходимую для:
  • Вся страница для загрузки.
  • Все его ресурсы станут полностью интерактивными.
Время загрузки страницы, возможно, является наиболее ориентированным на пользователя показателем производительности. Общее время загрузки страницы напрямую влияет на то, насколько быстро сайт воспринимается пользователем. Более быстрое время загрузки коррелирует с лучшим пользовательским опытом на сайте.

Функции HTTP/3, такие как улучшенное мультиплексирование и приоритизация, могут значительно сократить общее время загрузки страницы. Мониторинг времени загрузки страницы во время сравнительного анализа необходим, чтобы гарантировать, что прирост производительности от HTTP/3 приведет к значимым улучшениям для конечных пользователей. Важно тестировать время загрузки страницы в различных условиях, в том числе:
  • Различные условия сети
  • Различные типы устройств
Этот подход дает репрезентативное представление о производительности. В исследовании:
  • HTTP/3 улучшил время загрузки страницы на 55 % по сравнению с HTTP/2.
  • Тестовой средой была мобильная сеть с 4G и потерей пакетов примерно 15%.

3. Пропускная способность
Пропускная способность измеряет объем данных, переданных за определенный период, обычно выражается в:
  • Мбит/с (Мегабит в секунду)
  • Гбит/с (Гигабит в секунду)
Этот показатель отражает:
  • Эффективность протокола
  • Пропускная способность базовой сети
Чтобы оценить производительность в различных условиях, тестирование пропускной способности должно включать:
  • Различные размеры полезной нагрузки
  • Различные уровни параллелизма
Преимущества более высокой пропускной способности включают в себя:
  • Более быстрая общая передача данных
  • Лучшее использование сетевых ресурсов
4. Время установления соединения
  • Время установления соединения измеряет продолжительность, необходимую для установки нового соединения.
  • HTTP/3 значительно сокращает это время.
  • В синтетическом тесте установление соединения по протоколу HTTP/3 было на 45 % быстрее.
  • Это сравнение проводилось с HTTP/2 в сети с RTT 50 мс.


Ключевые особенности HTTP3
1. Более быстрое установление соединения
  • Одним из основных преимуществ HTTP/3 является то, что он позволяет быстрее устанавливать соединение по сравнению с HTTP/2 и более ранними версиями.
  • HTTP/3 достигает этого за счет использования нового транспортного протокола QUIC вместо TCP.
  • В QUIC подтверждения передачи и шифрования объединены в один этап.
  • Это уменьшает количество обращений туда и обратно, необходимых для установления безопасного соединения.
  • В результате соединения начинают отправлять данные раньше и с меньшей задержкой.
  • В некоторых случаях это может сэкономить сотни миллисекунд при установлении нового соединения.

2. Устойчивость к сбоям в сети
  • HTTP/3 поддерживает стабильную производительность в ненадежных сетях.
  • Используя QUIC, он может плавно переносить соединения в новые сети, не прерывая потоки.
  • Это особенно выгодно для мобильных пользователей, перемещающихся между Wi-Fi и сотовыми сетями.
  • Соединения сохраняются без каких-либо действий со стороны приложения.
  • Напротив, изменения в сети часто приводят к сбоям соединения с TCP и HTTP/2.

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

4. Приоритизация потоков
  • HTTP/3 обеспечивает более гибкую систему определения приоритетов потоков, чем HTTP/2.
  • Клиенты могут указать относительный приоритет потоков и порядок их планирования.
  • Это позволяет первым загружать важные ресурсы. Новая система приоритезации проще и выразительнее, чем сложная модель дерева зависимостей HTTP/2.
  • При оптимальном использовании в некоторых случаях страницы могут загружаться на 50 % быстрее, обеспечивая быструю доставку критически важных ресурсов.

Методология сравнительного анализа производительности
1. Тестовая среда
Чтобы обеспечить стабильные результаты, тщательно контролируйте свое оборудование. Кроме того, управляйте настройкой программного обеспечения для теста.
Серверное оборудование: 8-ядерный процессор, 32 ГБ ОЗУ, SSD-накопитель. Это достаточно мощная настройка, позволяющая избежать того, чтобы сервер стал узким местом.
Операционная система: Использование Ubuntu 20.04 LTS обеспечивает стабильную платформу ОС. Обязательно отключите все ненужные фоновые службы.
Веб сервер:
  • NGINX 1.18.0 для тестов HTTP/2
  • NGINX 1.21.3 с модулем QUIC для HTTP/3
Условия сети: соединение клиента и сервера через Gigabit Ethernet хорошее. Кроме того, использование Netem для моделирования задержек и потерь — это разумный способ смоделировать реалистичные условия сети.

2. Инструменты сравнительного анализа
Для измерения различных аспектов производительности можно использовать комбинацию инструментов синтетического тестирования:
  • wrk: генерирует высокие уровни одновременной нагрузки для измерения количества запросов в секунду и задержки.
  • WebPageTest: предоставляет подробные показатели загрузки страницы, такие как время до первого байта и индекс скорости, с использованием реальных браузеров.
  • Lighthouse: проверяет лучшие практики производительности и рассчитывает показатели Google Web Vitals.
  • k6: позволяет создавать сценарии сложных пользовательских потоков для отслеживания таких показателей, как время ответа, на разных уровнях нагрузки.
3. Тестовые сценарии
Чтобы понять производительность в различных условиях, следует оценить ряд сценариев:
Состав страницы: наличие небольших статических, больших сценариев с несколькими ресурсами и динамических страниц является отличным срезом. Он охватывает основные типы композиции страниц.
  • Небольшая статическая страница (~15 КБ)
  • Большая страница с множеством ресурсов (всего около 1 МБ)
  • Динамическая страница, требующая серверной обработки
Уровни параллелизма. Уровни параллелизма от низкого до высокого хорошо выбраны, чтобы увидеть, как масштабируется производительность.
  • Низкий (10 одновременных запросов)
  • Средний (100 одновременных запросов)
  • Высокий (1000 одновременных запросов)
Условия сети:
  • Базовый уровень (без дополнительных задержек и потерь)
  • Добавленная задержка 50 мс
  • Задержка 50 мс + потеря пакетов 1%


1. ТЛС
TLS (Transport Layer Security) — это криптографический протокол, обеспечивающий сквозное шифрование и целостность данных для интернет-коммуникаций. Предыдущие версии HTTP размещали TLS поверх TCP-соединений. В HTTP/3:
  • TLS 1.3 интегрирован непосредственно в транспортный уровень QUIC.
  • Эта интеграция позволяет избежать использования отдельного протокола.
  • Это исключает избыточные рукопожатия.
  • Это уменьшает задержку при установке соединения.
2. ПТС
TCP (протокол управления передачей) — это традиционный протокол транспортного уровня, используемый для надежной доставки данных в Интернете. Он выполняет несколько важных функций:
  • Устанавливает связи
  • Осуществляет управление потоком
  • Обеспечивает правильную доставку пакетов
В отличие от HTTP/1.1 и HTTP/2, которые работают через TCP, HTTP/3 вообще не использует TCP. Вместо этого QUIC берет на себя роль TCP.

3. QUIC
QUIC (Quick UDP Internet Connections) — новый транспортный протокол. Он предлагает несколько функций:
  • Ориентированный на соединение
  • Мультиплексированные потоки через UDP
  • Надежность
  • Контроль перегрузок
QUIC объединяет функции TLS 1.3 для шифрования и безопасной связи. Эта интеграция позволяет устанавливать и защищать соединения QUIC за одно рукопожатие.

4. УДП
UDP (протокол пользовательских дейтаграмм) — это облегченный протокол транспортного уровня. Он отличается от TCP по нескольким причинам:
  • UDP не устанавливает соединение.
  • UDP не предоставляет гарантий надежности.
  • Он просто отправляет отдельные пакеты данных, известные как дейтаграммы.

3 Способы проверить, активирован ли HTTP3?
1. Использование Google Chrome в качестве клиента HTTP/3.
  • Загрузите и установите последнюю версию Google Chrome Canary.
  • Откройте Chrome Canary.
  • Перейдите на страницу chrome://flags и включите экспериментальные функции QUIC и HTTP/3.
  • Перезапустите Chrome Canary при появлении запроса.
  • Посетите веб-сайт, поддерживающий HTTP/3.
  • Откройте Инструменты разработчика (F12 или Ctrl+Shift+I).
  • Перейдите на вкладку «Сеть».
  • Щелкните правой кнопкой мыши строку заголовка и выберите «Протокол».
  • Найдите ресурсы, загруженные через h3, в столбце «Протокол», чтобы убедиться, что используется HTTP/3.
2. Использование завитка
Убедитесь, что у вас есть версия Curl, поддерживающая HTTP/3 (7.66.0 или новее).
Откройте терминал.
Запустите следующую команду, чтобы получить ресурс через HTTP/3:
curl --http3 [URL-адрес веб-сайта]

Если ресурс получен успешно, активируется HTTP/3.
3. Использование http3-клиента Quiche
Клонируйте репозиторий Quiche:
Git clone --recursive https://github.com/[URL веб-сайта]/quiche

Создайте пример http3-клиента:
cd quiche/examples Cargo build --example http3-client

Запустите http3-клиент:
грузовой пробег --example http3-client – ​​[URL веб-сайта]

Если клиент успешно получает ресурс через HTTP/3, протокол активируется.