QUIC
QUIC (Quick UDP Internet Connections) — довольно новый транспортный протокол, работающий поверх UDP. Объединяет в себе функции шифрования и передачи информации. Протокол стал основой для HTTP/3 и применяется для ускорения загрузки веб-страниц. QUIC восран для решения фундаментальных проблем стека TCP/TLS/HTTP/2: длительное установление соединения, блокировки головы линии.
Ныне около 10 % сайтов применяют это протокол, в том числе Google, Facebook, Cloudflare.
Описание[править]
Протокол QUIC был создан Джимом Роскиндом в компании Google в 2012 году как экспериментальная альтернатива TCP для ускорения веб-трафика. Первая реализация была восрана в Chromium, в 2013 году, с версии Chrome 29 поддержка QUIC стала доступна в предварительных сборках, а затем и в стабильных релизах. К 2015 году Google использовал QUIC для своих сервисов.
Версия Google отличалась собственной криптографией и деталями транспорта. В 2016 году в IETF был создан расширенный вариант протокола. В процессе стандартизации протокол существенно изменился, в том числе он перешёл на использование стандартного TLS 1.3. В результате маппинг HTTP поверх QUIC получил короткое название HTTP/3.
QUIC работает на транспортном уровне модели OSI, но поверх UDP вместо TCP.
Каждое соединение идентифицируется уникальным ID, не привязанным к IP-адресу и порту, что позволяет сохранить соединения при смене сети, например с Wi-Fi на мобильный интернет. QUIC поддерживает мультиплексирование множества независимых двунаправленных потоков внутри одного соединения. Данные разбиваются на пакеты QUIC, каждый из которых независимо шифруется и содержит фреймы разных типов, это обеспечивает весьма потужное качество.
Первоначальный handshake требует только 1 RTT, а для повторных соединений возможен 0-RTT благодаря предварительному обмену ключами.