QUIC

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
QUIC
Название Quick UDP Internet Connections
Уровень (по модели OSI) Транспортный
Семейство TCP/IP
Создан в июнь 2013
Порт/ID 443[1]
Основные реализации (клиенты) Веб-браузеры: Google Chrome.
Разработчик Google

QUIC (сокр. от англ. Quick UDP Internet Connections; произносится quick) — экспериментальный интернет-протокол, разработанный Google[2][3] в конце 2012 года[4].

QUIC позволяет мультиплексировать несколько потоков данных между двумя компьютерами, работая поверх протокола UDP, и содержит возможности шифрования, эквивалентные TLS и SSL. Имеет более низкую задержку соединения и передачи, чем TCP. Хорошо переносит потерю части пакетов путём выравнивания границ криптографических блоков по границам пакетов. В протокол заложена возможность прямой (упреждающей) коррекции ошибок на уровне пакетов, но на практике она отключена[5].

Поддержка[править | править код]

Код для поддержки QUIC был добавлен в Google Chrome[6] начиная с версии 29 (в предрелизных ветках dev и canary — с июня 2013, в релизной - с 20 августа 2013 года). Он может быть включен на странице chrome://flags/#enable-quic, активные сеансы видны на chrome://net-internals/#quic.

Реализация на языке С++ для поддержки QUIC доступна под лицензией BSD. Клиентская часть протокола доступна по адресу (Git): https://chromium.googlesource.com/chromium/src/net/+/master/quic/ и https://src.chromium.org/chrome/trunk/src/net/quic/

Экспериментальный сервер с поддержкой QUIC доступен как часть проекта chromium: https://code.google.com/p/chromium/codesearch#chromium/src/net/tools/quic/&ct=rc&cd=2&q=quic&sq=package:chromium

HTTP-сервер может объявить клиенту о поддержке протокола QUIC с помощью дополнительного заголовка "Alternate-Protocol: 80:quic" или "Alternate-Protocol: 443:quic".

Недостатки клиентской реализации[править | править код]

По состоянию на 2015 г., существует одна открытая реализация протокола, разработанная в Google. Представленная реализация обладает следующими недостатками[источник не указан 1813 дней]:

  • серверная часть использует epoll, что, как минимум, не позволяет, без дополнительной доработки, собрать и запустить серверную часть протокола на других ОС за исключением Linux[7]
  • реализация интегрирована в Chromium, что затрудняет использование в других проектах, как в плане интеграции, так и в плане синхронизации и обновления кодовой базы.

Существует извлечённая из дерева исходных текстов Chromium клиентская часть реализации протокола под названием libQUIC[8]. Извлечением и синхронизацией с кодовой базой, а также некоторой доработкой занимается компания Devsisters. Данное ответвление от основной реализации устраняет недостаток интеграции в проект Chromium.

Серверная реализация[править | править код]

Имеется серверная реализация на языке Go[9], что позволяет использовать её в других проектах. 11 июля 2017 года LiteSpeed Technologies, Inc. начали официально поддерживать QUIC[10] в своём балансировщике нагрузки (WebADC) и веб-сервере (LiteSpeed Web Server).

См. также[править | править код]

Примечания[править | править код]

Литература[править | править код]

Ссылки[править | править код]