нещодавно IETF (Internet Engineering Task Force), яка розробляє протоколи та архітектуру Інтернету, дав про це знати новина, яка завершено формування RFC для протоколу HTTP/3.0 і опублікували відповідні специфікації під ідентифікаторами RFC 9114 і RFC 9204.
Специфікація HTTP/3.0 отримав статус «Запропонований стандарт», після чого почнеться робота з надання RFC статусу проекту стандарту (Draft Standard), що фактично означає повну стабілізацію протоколу та врахування всіх зроблених зауважень.
Протокол HTTP/3 визначає використання протоколу QUIC (Швидке підключення до Інтернету UDP) як транспорт для HTTP/2. QUIC — це плагін до протоколу UDP, який підтримує мультиплексування кількох з’єднань і надає методи шифрування, еквівалентні TLS/SSL.
Протокол був створений у 2013 році компанією Google як альтернатива TCP + TLS для Інтернету, що вирішує проблему тривалого встановлення з'єднання та часу узгодження в TCP та усуває затримки через втрату пакетів під час передачі даних.
В даний час, Підтримка QUIC і HTTP/3.0 вже реалізована у всіх браузерах популярні веб-сайти. На стороні сервера доступні реалізації HTTP/3 для nginx (в окремій гілці та як окремий модуль), Caddy , IIS та LiteSpeed. HTTP/3 також підтримується мережею доставки контенту Cloudflare.
Основні особливості QUIC:
- Високий рівень безпеки, схожий на TLS (насправді, QUIC надає можливість використовувати TLS через UDP)
- Контроль цілісності передачі для запобігання втраті пакетів
- Можливість миттєво встановити з'єднання і забезпечити мінімальні затримки між відправкою запиту та отриманням відповіді (RTT, час в обидва кінці)
- Використовуйте інший порядковий номер під час повторної передачі пакета, що дозволить вам уникнути неоднозначності при визначенні отриманих пакетів і позбутися тайм-аутів
- Втрата пакета впливає на доставку лише пов'язаного з ним потоку і не зупиняє доставку даних у потоках, що передаються паралельно по поточному з'єднанню
- Інструменти виправлення помилок, які мінімізують затримки через повторну передачу втрачених пакетів. Використання спеціальних кодів виправлення помилок на рівні пакетів для зменшення ситуацій, які вимагають повторної передачі втрачених пакетних даних.
- Межі криптографічних блоків узгоджені з межами пакетів QUIC, зменшуючи вплив втрати пакетів на декодування вмісту наступних пакетів
- Немає проблем із блокуванням черги TCP
- Підтримка ідентифікації підключення для скорочення часу повторного підключення для мобільних клієнтів
- Можливість підключення передових механізмів контролю перевантаження з'єднання
- Використовуйте методи прогнозування пропускної здатності в кожному напрямку, щоб забезпечити оптимальну швидкість пересилання пакетів, уникаючи умов перевантаження, при яких пакети втрачаються.
- Помітний приріст продуктивності та продуктивності в порівнянні з TCP. Для відеосервісів, таких як YouTube, було показано, що QUIC зменшує операції буферизації відео на 30%.
Крім цього, також одночасно були опубліковані оновлені версії специфікацій для протоколів HTTP/1.1 (RFC 9112) і HTTP/2.0 (RFC 9113), а також документи, що визначають семантику HTTP-запитів (RFC 9110). і заголовки керування кешуванням HTTP (RFC 9111).
Зі змін у специфікація HTTP/1.1, ви можете помітити заборону від окремого використання символу повернення каретки (CR) поза тілом із вмістом, тобто в елементах протоколу символ CR можна використовувати лише разом із символом нового рядка (CRLF).
El вдосконалено алгоритм компонування запиту на фрагменти для спрощення поділу вкладених полів і розділів із заголовками. Додано вказівки щодо обробки неоднозначного вмісту, щоб блокувати атаки класу "HTTP Request Smuggling", які можуть втручатися в вміст запитів інших користувачів у потоці між інтерфейсом і серверною частиною.
Оновлення специфікації HTTP/2.0 чітко визначає підтримку TLS 1.3, застаріла схема визначення пріоритетів і відповідні поля заголовків і механізм оновлення застаріле з’єднання HTTP/1.1 не підтримується.
Нарешті, якщо ви зацікавлені в тому, щоб дізнатися більше про це, ви можете ознайомитися з деталями в наступне посилання.