QUIC (; вимовляється як quick) — транспортний мережевий протокол, який розвивається компанією Google з 2013 року як альтернатива зв'язці TCP + TLS для вебу. Він розв'язує проблеми з великим часом встановлення та узгодження з'єднань в TCP і усуває затримки при втраті пакетів в процесі передачі даних. QUIC є надбудовою над протоколом UDP, що підтримує мультиплексування декількох з'єднань і забезпечує методи шифрування, еквівалентні TLS/SSL. Протокол вже інтегрований в серверну інфраструктуру Google й активно застосовується для обслуговування запитів клієнтів на серверах Google, з квітня 2020 підтримується за замовчуванням Google Chrome, у Firefox 88 підтримується з квітня 2021, з Safari 14, який постачається з iOS 14 та macOS Big Sur, підтримка присутня, але вимкнена за замовчуванням.
Протокол HTTP/3 реалізує надбудову для забезпечення роботи HTTP поверх протоколу QUIC. Безпосередньо протокол QUIC був доданий в браузер Chrome у 2014 році та відтоді використовується для оптимізації роботи з сервісами Google. При цьому застосований в Chrome варіант QUIC від Google в деяких деталях відрізнявся від варіанта зі специфікацій IETF, але тепер реалізації синхронізовані.
Особливості Основні особливості QUIC: Високий рівень безпеки, аналогічний TLS (по суті QUIC надає можливість використання TLS поверх UDP); Контроль за цілісністю потоку, що запобігає втраті пакетів; Можливість миттєво встановити з'єднання (0-RTT, приблизно в 75% випадках дані можна передавати відразу після відправлення пакета установки з'єднання) і забезпечити мінімальні затримки між відправленням запиту й одержанням відповіді (Round Trip Time, RTT); Невикористання при повторній передачі пакета того ж номера послідовності, що дозволяє уникнути двозначності при визначенні отриманих пакетів і позбутися тайм-аутів; Втрата пакету впливає на доставку тільки пов'язаного з ним потоку і не зупиняє доставку даних в паралельно переданих через поточне з'єднання потоках; Засоби корекції помилок, які мінімізують затримки через повторну передачу втрачених пакетів. Використання спеціальних кодів корекції помилок на рівні пакета для скорочення ситуацій, що вимагають повторної передачі даних втраченого пакета; Межі криптографічних блоків вирівняні з межами пакетів QUIC, що зменшує вплив втрат пакетів на декодування вмісту наступних пакетів; Відсутність проблем з блокуванням черги TCP; Підтримка ідентифікатора з'єднання, що дозволяє скоротити час на установку повторного з'єднання для мобільних клієнтів; Можливість підключення розширених механізмів контролю перевантаження з'єднання; Використання техніки прогнозування пропускної здатності в кожному напрямку для забезпечення оптимальної інтенсивності відправки пакетів, запобігаючи скочування в стан перевантаження, при якому спостерігається втрата пакетів; Помітний приріст продуктивності і пропускної здатності, в порівнянні з TCP. Для відео-сервісів, таких як YouTube, застосування QUIC показало скорочення операцій повторної буферизації при перегляді відео на 30%.
Див. також SPDY
Примітки
Посилання Chromium: QUIC, a multiplexed stream transport over UDP QUIC: Design Document and Specification Rationale , Jim Roskind's original document (2012/2013) Daniel Stenberg: HTTP/3 explained Linux Weekly News: Connecting on the QUIC (2013) QUIC: , IETF-88 TSV Area Presentation (2013-11-07) Chromium Blog: Experimenting with QUIC (2013) QUIC: next generation multiplexed transport over UDP (Google Developers, 2014) HTTP over UDP: an Experimental Investigation of QUIC Multipath QUIC (extension to QUIC) Innovating Transport with QUIC: Design Approaches and Research Challenges (2017)