QUIC и HTTP/3: ключевые технологии для повышения производительности сети
QUIC и HTTP/3: ключевые технологии для повышения производительности сети

1. Введение

1.1 Краткое введение в QUIC и HTTP/3

QUIC (Quick UDP Internet Connections) — это протокол транспортного уровня на основе UDP, предназначенный для решения проблем производительности TCP в средах с высокой задержкой и потерей пакетов. HTTP/3 — это последняя версия протокола HTTP. Он основан на протоколе QUIC, а не на TCP, и обеспечивает более эффективные и надежные сетевые услуги.

1.2 Зачем вам QUIC и HTTP/3

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

2. Обзор протокола QUIC

2.1 Возникновение и развитие QUIC

QUIC был впервые предложен и разработан Google для решения проблем производительности TCP в средах с высокой задержкой и потерей пакетов. С тех пор, как QUIC был впервые раскрыт Google в 2012 году, протокол претерпел множество итераций и оптимизаций и постепенно стал проектом стандарта Internet Engineering Task Force (IETF).

2.2 Цели разработки QUIC

Ключевые цели разработки QUIC включают: сокращение задержки при установлении соединения, повышение эффективности контроля перегрузки и управления потоками, поддержку мультиплексирования и миграции соединений, а также встроенные средства шифрования и безопасности.

2.3 Сравнение QUIC и традиционного TCP/UDP

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

3. QUIC основные функции

3.1 Установление соединения и подтверждение 0-RTT

Реализация квитирования 0-RTT в QUIC в первую очередь опирается на предыдущие взаимодействия между клиентом и сервером. При первом установлении соединения клиент и сервер обмениваются параметрами шифрования и устанавливают общий ключ. Когда клиент снова устанавливает соединение с сервером, он может выполнить рукопожатие 0-RTT, используя предыдущие параметры шифрования. Это означает, что клиент может начать отправку зашифрованных данных сразу во время рукопожатия, не дожидаясь подтверждения от сервера. Этот механизм значительно снижает задержку установления соединения, особенно в сетевых средах с высокой задержкой.

3.2 Управление потоком и контроль перегрузки

Механизмы управления потоком и контроля перегрузки QUIC аналогичны TCP, но с некоторыми оптимизациями. QUIC использует механизм скользящего окна для управления потоком, чтобы гарантировать, что буфер получателя не переполнится. В то же время алгоритмы управления перегрузкой QUIC (такие как BBR и CUBIC) могут лучше адаптироваться к различным условиям сети и сценариям приложений, эффективно балансируя скорость передачи и перегрузку сети.

3.2.1 Контроль перегрузок

QUIC реализует множество алгоритмов контроля перегрузки, включая BBR (Bottleneck Bandwidth и RTT) от Google и традиционный CUBIC.

  • BBR стремится максимизировать использование полосы пропускания,минимизируя при этом задержку. Он динамически регулирует скорость отправки данных, измеряя узкую полосу пропускания и минимальное значение RTT.,Это позволяет BBR хорошо работать в меняющихся условиях.,Особенно в средах с высокой пропускной способностью и высокой задержкой.
  • В отличие от этого, CUBIC да более традиционен и имеет контроль. Алгоритм перегрузок, который в основном использует потерю пакетов для определения степени перегрузки. CUBIC использует кубическую функцию для настройки размера окна перегрузки, что делает его быстрее, чем при росте окна. на основе Алгоритм линейного роста является более радикальным.

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

3.2.2 Блок-схема

Мы можем создать диаграмму последовательности, чтобы продемонстрировать механизмы управления потоками и контроля перегрузки QUIC:

  1. Соединение установлено:существовать Соединение На этапе определения отправитель и получатель согласовывают первоначальный размер окна.
  2. механизм управления потоком:механизм управления потоком гарантирует, что буфер данных не переполнится на принимающей стороне за счет зацикливания (каждый RTT). Отправитель отправляет данные в пределах размера окна, а получатель подтверждает получение данных и обновляет размер окна.
  3. контроль перегрузокмеханизм:контроль перегрузокмеханизм Начните с медленного старта。Согласно полученномуизподтверждать,Отправитель изменяет размер своего окна. Если обнаружена потеря пакетов (использовать алгоритм CUBIC),Размер окна будет уменьшен, если нет потери пакетов;,Размер окна будет регулироваться в соответствии с полосой пропускания RTTи (алгоритм использоватьBBR).
  4. Адаптация к условиям сети:в соответствии ссетьсостояниеизизменять,Отправитель может выбрать использование алгоритма CUBIC или BBR для настройки размера окна. CUBIC опора корректирует окно из-за потери пакетов,BBR динамически настраивается путем измерения пропускной способности и RTT.

3.3 Мультиплексирование и потоковая передача

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

3.4 Миграция соединений и обход NAT

QUIC поддерживает миграцию подключений, которая сохраняет постоянство соединения при изменении сетевых адресов или устройств. В первую очередь это достигается за счет использования идентификатора соединения, который представляет собой значение, однозначно идентифицирующее соединение QUIC. Когда сетевой адрес клиента меняется, он может продолжать взаимодействовать, используя тот же идентификатор подключения, что обеспечивает плавную миграцию. Кроме того, QUIC использует UDP в качестве протокола транспортного уровня, который обладает сильными возможностями проникновения NAT и может лучше справляться со сложными сетевыми средами.

3.5 Встроенное шифрование и безопасность

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

TLS 1.3, основа шифрования QUIC, содержит несколько ключевых улучшений, особенно с точки зрения безопасности и производительности. Во-первых, TLS 1.3 упрощает процесс установления связи и уменьшает количество циклов передачи данных (RTT). В TLS 1.2 для завершения рукопожатия требуются два RTT, тогда как в TLS 1.3 требуется только один RTT, а в некоторых случаях можно даже достичь 0-RTT. Функция 0-RTT позволяет клиентам отправлять зашифрованные данные сразу во время рукопожатия, что очень полезно для уменьшения задержки, особенно при установлении нового сеанса.

Кроме того, TLS 1.3 удаляет некоторые небезопасные алгоритмы шифрования и повышает общую безопасность. Он поддерживает только те наборы шифров, которые считаются безопасными, тем самым уменьшая потенциальные уязвимости безопасности. Эти улучшения делают TLS 1.3 не только более быстрым, но и более безопасным, обеспечивая QUIC прочную основу безопасности.

4. Обзор HTTP/3

4.1 Связь между HTTP/3 и HTTP/2

HTTP/3 является преемником HTTP/2 и призван решить некоторые фундаментальные проблемы HTTP/2 с точки зрения производительности и надежности передачи. HTTP/3 использует протокол QUIC в качестве основного транспорта для обеспечения более эффективных и надежных сетевых услуг.

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

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

4.2 Цели разработки HTTP/3

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

4.3 Связь между HTTP/3 и QUIC

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

5. HTTP/3 основные функции

5.1 Основные функции

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

  1. проситьиответ Мультиплексирование:
    • Установите между клиентами сервер HTTP/3 соединять。
    • Клиент отправляет несколько запросов параллельно через одно и то же соединение (например, запрос 1, Запрос 2, Запрос 3).
    • Сервер отправляет ответы параллельно через одно и то же соединение.,Это уменьшает накладные расходы на настройку и завершение работы.,Улучшенное использование ресурсов.
  2. Приоритет и планирование ресурсов:
    • Клиент может установить приоритет для каждого запроса.
    • сервер Планирование ресурсов в соответствии с настройками приоритета и отправленного ответа,Убедитесь, что более важные запросы обрабатываются быстрее.
  3. push-уведомление сервера:
    • сервер может активно передавать ресурсы клиенту,Например, файл CSS или файлы JavaScript.,Обычно это делается, когда сервер прогнозирует, что клиенту потребуются эти ресурсы.
    • Это может уменьшить количество клиентских запросов и задержку.,Улучшите скорость загрузки страниц.
  4. Сжатие заголовка QPACK:
    • HTTP/3 использовать QPACK Выполните сжатие головы, чтобы уменьшить HTTP Размер головы.
    • Это помогает сэкономить полосу пропускания, особенно если информация заголовка часто повторяется.

Таким образом, HTTP/3 обеспечивает более эффективную работу сети, чем HTTP/2, особенно в сетевых средах с высокой задержкой.

5.2 Влияние на практическое применение

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

Кроме того, функция 0-RTT HTTP/3 дополнительно сокращает время установления соединения, что особенно полезно для приложений, которым требуется частое установление новых соединений (таких как мобильные приложения и службы коротких сеансов). Это приводит к ускорению загрузки, что является важным улучшением для пользователей, особенно в средах мобильных сетей, где условия сети могут часто меняться.

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

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

6. Статус развертывания QUIC и HTTP/3.

6.1 Поддержка браузером и сервером QUIC и HTTP/3

В настоящее время большинство основных браузеров и серверов уже поддерживают QUIC и HTTP/3, включая Chrome, Firefox, Safari и такие серверы, как Nginx и LiteSpeed.

6.2 Популярность QUIC и HTTP/3 в Интернете

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

6.3 Проблемы и ограничения развертывания QUIC и HTTP/3

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

7. Заключение

характеристика

HTTP/2

HTTP/3

QUIC

тип протокола

Прикладной уровень

Прикладной уровень

транспортный уровень

базовый транспортный протокол

TCP

QUIC

UDP

Соединение установлено

Требуется одно или два времени прохождения туда и обратно (RTT)

рукопожатие 0-RTT

рукопожатие 0-RTT

Управление потоком и контроль перегрузки

Зависит от TCP

Зависит от QUIC

TCP-независимый механизм

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

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

Поддержка, нет проблем с блокировкой заголовка

Поддержка, нет проблем с блокировкой заголовка

push-уведомление сервера

поддерживать

поддерживать

Не прямойподдерживать,По протоколу верхнего уровня (например, HTTP/3) передача

Миграция подключения

Нетподдерживать

поддерживать

поддерживать

Проникновение NAT

Зависит от TCP, возможно, проблема

Зависит от QUIC, имеет сильные возможности

полагаться UDP с большими возможностями

Встроенное шифрование

Нетподдерживать,Обычно требует сотрудничества TLS использовать

поддерживать,на основе TLS 1.3

поддерживать,на основе TLS 1.3

Производительность и надежность трансмиссии

В некоторых сценариях могут возникнуть проблемы

проходитьиспользовать QUIC решено HTTP/2 некоторые вопросы

Целью разработки является решение проблем производительности TCP в средах с высокой задержкой и потерей пакетов.

По мере развития технологий и изменения сетевой среды мы ожидаем, что QUIC и HTTP/3 будут более широко использоваться и развиваться. Направления дальнейшего развития и улучшения могут включать:

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

Короче говоря, QUIC и HTTP/3, являющиеся ключевыми технологиями современного Интернета, значительно улучшили производительность и надежность сети. Хотя их нынешняя популярность в Интернете все еще невысока, с развитием технологий и продвижением приложений у нас есть основания полагать, что QUIC и HTTP/3 будут играть более важную роль в будущем Интернете.

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose