3.6. HTTP/3 и QUIC
HTTP/3 основан на протоколе QUIC (произносится «квик») — сокращённое от Quick UDP Internet Connections, быстрое подключение к интернету через UDP. Он мультиплексирует несколько потоков данных поверх UDP, то есть по умолчанию обеспечивает безопасность передачи данных.
QUIC разработан компанией Goggle в 2012 году, он является платформой для HTTP/3. На момент начала 2022 года HTTP/3 находится на стадии утверждения.
Преимущества HTTP/3
Главное преимущество — уменьшение задержки при установлении соединения. QUIC достаточно одного «рукопожатия», чтобы установить безопасный сеанс. После установки первого соединения между сервером и клиентом новое рукопожатие больше не понадобится.
Мультиплексирование без блокировки HOL
При использовании нескольких потоков потерянные пакеты, несущие данные для отдельного потока, влияют только на этот конкретный поток. Таким образом, QUIC значительно снижает блокировку HOL.
HTTP/3 работает поверх UDP, поэтому скорость доставки данных быстрее, чем у HTTP и HTTP/2 поверх TCP. Хотя HTTP/2 использует мультиплексирование, то есть одновременную загрузку данных, он по-прежнему страдает от блокировки заголовков. Это цифровые «узкие места», которые останавливают все потоки при потере пакета. Благодаря использованию UDP HTTP/3 не ждёт успешной передачи, а продолжает процесс загрузки.
Уменьшение количества «рукопожатий»
HTTP/3 не использует вводные рукопожатия для проверки безопасности соединения. Вместо отправки запросов безопасности на более высокий уровень TLS шифрование выполняется напрямую через протокол передачи. HTTP/3 сокращает время приёма-передачи при установке соединения с двух проходов до одного:

Проще говоря, время установления соединения сокращается вдвое.
Миграция подключения
HTTP и HTTP/2 привязаны к IP-адресам для успешной загрузки. То есть при переходе с LTE на Wi-Fi меняется IP-адрес, и соединение начинается заново. HTTP/3 использует индивидуальные идентификаторы подключения, поэтому обеспечивает постоянную загрузку даже при смене сети. То есть переходит с LTE на Wi-Fi без повторного согласования сеанса.
Поддержка
Со стороны клиента поддержка такая:

Большинство браузеров поддерживают HTTP/3 в экспериментальном режиме. Это означает, что браузеры добавляют обновления постепенно. То есть не все пользователи получат поддержку HTTP/3 сразу даже в последней версии браузеров. Это позволяет не перегружать сервера обновлений и исправлять пропущенные ошибки на минимальных количествах пользователей.
Со стороны серверов поддержка только в процессе, и большинство решений только тестируются. Поэтому нельзя сказать, что нужно переходить на HTTP/3 как можно скорее.
Переход на HTTP/3
Хорошая новость: если вы оптимизировали веб-приложение к HTTP/2, то для перехода на HTTP/3 ничего не нужно делать дополнительно. На прикладном уровне HTTP/2 и HTTP/3 не отличаются друг от друга, поэтому все оптимизации под HTTP/2 подойдут для HTTP/3.
Какие проблемы может вызвать HTTP/3?
Проверки безопасности и шифрование проводятся не через TLS, а напрямую через UDP (а UDP предназначен для доставки как можно большего количества пакетов). Поэтому есть опасения, что трафик данных больше не будет тщательно проверяться из-за отсутствия аутентификации TLS.
Безопасность приложений и данных является основным предметом критики со стороны интернет-провайдеров. Благодаря чёткому регулированию запросов и ответов TCP считался надёжным и ориентированным на соединение протоколом. QUIC сам выполняет многие промежуточные шаги. Из-за этого есть опасения, что возможности управления поставщиками будут ограничены HTTP/3 и в поток данных может быть добавлено больше вредоносных программ.
Итог
HTTP/3 обеспечивает множество улучшений производительности и безопасности. Пока HTTP/3 и QUIC не готовы для полноценного использования, но вскоре ситуация должна измениться.