В Chrome добавлена экспериментальная поддержка протокола HTTP/3

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

HTTP/3 стандартизирует использование QUIC в качестве транспорта для HTTP/2. Для включения HTTP/3 и варианта QUIC из 23 черновика спецификаций IETF требуется запуск Chrome с опциями »--enable-quic --quic-version=h3–23», после чего при открытии тестового сайта quic.rocks:4433 в режиме инспектирования сети в инструментах для разработчиков активность по HTTP/3 будет отображаться как «http/2+quic/99».

Напомним, что протокол QUIC (Quick UDP Internet Connections) c 2013 года развивается компанией Google в качестве альтернативы связке TCP+TLS для Web, решающей проблемы с большим временем установки и согласования соединений в TCP и устраняющей задержки при потере пакетов в процессе передачи данных. QUIC представляет собой надстройку над протоколом UDP, поддерживающую мультиплексирование нескольких соединений и обеспечивающую методы шифрования, эквивалентные TLS/SSL. Рассматриваемый протокол уже интегрирован в серверную инфраструктуру Google, входит в состав Chrome, запланирован для включения в Firefox и активно применяется для обслуживания запросов клиентов на серверах Google.

Основные особенности QUIC:

  • Высокая безопасность, аналогичная TLS (по сути QUIC предоставляет возможность использования TLS поверх UDP);
  • Контроль за целостностью потока, предотвращающий потерю пакетов;
  • Возможность мгновенно установить соединение (0-RTT, примерно в 75% случаях данные можно передавать сразу после отправки пакета установки соединения) и обеспечить минимальные задержки между отправкой запроса и получением ответа (RTT, Round Trip Time);
  • Не использование при повторной передаче пакета того же номера последовательности, что позволяет избежать двусмысленности при определении полученных пакетов и избавиться от таймаутов;
  • Потеря пакета влияет на доставку только связанного с ним потока и не останавливает доставку данных в параллельно передаваемых через текущее соединение потоках;
  • Средства коррекции ошибок, минимизирующие задержки из-за повторной передачи потерянных пакетов. Использование специальных кодов коррекции ошибок на уровне пакета для сокращения ситуаций, требующих повторной передачи данных потерянного пакета.
  • Границы криптографических блоков выравнены с границами пакетов QUIC, что уменьшает влияние потерь пакетов на декодирование содержимого следующих пакетов;
  • Отсутствие проблем с блокировкой очереди TCP;
  • Поддержка идентификатора соединения, позволяющего сократить время на установку повторного соединения для мобильных клиентов;
  • Возможность подключения расширенных механизмов контроля перегрузки соединения;
  • Использование техники прогнозирования пропускной способности в каждом направлении для обеспечения оптимальной интенсивности отправки пакетов, предотвращая скатывание в состояние перегрузки, при которой наблюдается потеря пакетов;
  • Заметный прирост производительности и пропускной способности, по сравнению с TCP. Для видеосервисов, таких как YouTube, применение QUIC показало сокращение операций повторной буферизации при просмотре видео на 30%.

Дополнение: Начальная поддержка QUIC и HTTP/3 также недавно была предложена в выпуске утилиты curl 7.66.0.

Источник: http://www.opennet.ru/opennews/art.shtml? num=51526

©  OpenNet