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
Учебное пособие по Jetpack Compose для начинающих, базовые элементы управления и макет
boy illustration
Код js веб-страницы, фон частицы, код спецэффектов
boy illustration
【новый! Суперподробное】Полное руководство по свойствам компонентов Figma.
boy illustration
🎉Обязательно к прочтению новичкам: полное руководство по написанию мини-программ WeChat с использованием программного обеспечения Cursor.
boy illustration
[Забавный проект Docker] VoceChat — еще одно приложение для мгновенного чата (IM)! Может быть встроен в любую веб-страницу!
boy illustration
Как реализовать переход по странице в HTML (html переходит на указанную страницу)
boy illustration
Как решить проблему зависания и низкой скорости при установке зависимостей с помощью npm. Существуют ли доступные источники npm, которые могут решить эту проблему?
boy illustration
Серия From Zero to Fun: Uni-App WeChat Payment Practice WeChat авторизует вход в систему и украшает страницу заказа, создает интерфейс заказа и инициирует запрос заказа
boy illustration
Серия uni-app: uni.navigateЧтобы передать скачок значения
boy illustration
Апплет WeChat настраивает верхнюю панель навигации и адаптируется к различным моделям.
boy illustration
JS-время конвертации
boy illustration
Обеспечьте бесперебойную работу ChromeDriver 125: советы по решению проблемы chromedriver.exe не найдены
boy illustration
Поле комментария, щелчок мышью, специальные эффекты, js-код
boy illustration
Объект массива перемещения объекта JS
boy illustration
Как открыть разрешение на позиционирование апплета WeChat_Как использовать WeChat для определения местонахождения друзей
boy illustration
Я даю вам два набора из 18 простых в использовании фонов холста Power BI, так что вам больше не придется возиться с цветами!
boy illustration
Получить текущее время в js_Как динамически отображать дату и время в js
boy illustration
Вам необходимо изучить сочетания клавиш vsCode для форматирования и организации кода, чтобы вам больше не приходилось настраивать формат вручную.
boy illustration
У ChatGPT большое обновление. Всего за 45 минут пресс-конференция показывает, что OpenAI сделал еще один шаг вперед.
boy illustration
Copilot облачной разработки — упрощение разработки
boy illustration
Микросборка xChatGPT с низким кодом, создание апплета чат-бота с искусственным интеллектом за пять шагов
boy illustration
CUDA Out of Memory: идеальное решение проблемы нехватки памяти CUDA
boy illustration
Анализ кластеризации отдельных ячеек, который должен освоить каждый&MarkerгенетическийВизуализация
boy illustration
vLLM: мощный инструмент для ускорения вывода ИИ
boy illustration
CodeGeeX: мощный инструмент генерации кода искусственного интеллекта, который можно использовать бесплатно в дополнение к второму пилоту.
boy illustration
Машинное обучение Реальный бой LightGBM + настройка параметров случайного поиска: точность 96,67%
boy illustration
Бесшовная интеграция, мгновенный интеллект [1]: платформа больших моделей Dify-LLM, интеграция без кодирования и встраивание в сторонние системы, более 42 тысяч звезд, чтобы стать свидетелями эксклюзивных интеллектуальных решений.
boy illustration
LM Studio для создания локальных больших моделей
boy illustration
Как определить количество слоев и нейронов скрытых слоев нейронной сети?
boy illustration
[Отслеживание целей] Подробное объяснение ByteTrack и детали кода