QUIC

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск
QUIC
Название:

Quick UDP Internet Connections

Уровень (по модели OSI):

Прикладной

Семейство:

TCP/IP

Создан в:

июнь 2013 г.

Основные реализации (клиенты):

Веб-браузеры: Google Chrome.

QUIC (англ. Quick UDP Internet Connections) — новый экспериментальный интернет-протокол, разработанный Google.[1][2]

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

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

Код для поддержки QUIC был добавлен в Google Chrome[4] начиная с версии 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. Представленная реализация обладает следующими недостатками[источник не указан 257 дней]:

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

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

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

Имеется серверная реализация на языке Go[7], что позволяет использовать её в других проектах.

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

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

Литература[править | править вики-текст]

Ссылки[править | править вики-текст]