Nginx 3365 ~ 3 мин.

HTTP 3 - Что такое QUIC?

HTTP 3 - Что такое QUIC?

Поговорим о новой версии протокола HTTP - HTTP/3, что он нам даст и чем отличается от предыдущих своих собратьев

Итак, все мы знаем что такое HTTP. Если вдруг кто забыл, HTTP, или протокол передачи в виде гипертекста, является основой Интернета и универсальным протоколом для передачи текстовых данных. Вы, несомненно, использовали его, поскольку веб-сайт, на котором вы сейчас читаете о HTTP, использует этот самый HTTP.

Немного истории HTTP

Тим Бернерс-Ли создал его в 1989 году, а в 1991 году он получил название HTTP/0.9. HTTP/0.9 был ограничен и мог выполнять только базовые функции. Он не мог возвращать ничего, кроме веб-страницы, не поддерживал файлы cookie и другие современные функции. В 1996 году был выпущен протокол HTTP/1.0, который принес некоторые новые функции, такие как POST запросы и возможность отправлять что-то, кроме веб-страницы. Однако до сегодняшнего дня было еще далеко.

HTTP/1.1 был выпущен в 1997 году и дважды пересматривался: один раз в 1999 году и один раз в 2007 году. Он принес много важных новых функций, таких как файлы cookie и сохраняющиеся соединения. Наконец, в 2015 году был выпущен протокол HTTP/2, который позволил повысить производительность, сделав такие вещи, как события отправки сервером и возможность отправлять несколько запросов за раз. HTTP/2 все еще нов и используется только чуть меньшей половины всех сайтов.

 

HTTP/3: новейшая версия HTTP

Здесь в игру вступает HTTP/3, HTTP/3 или HTTP поверх QUIC концептуально сильно меняет HTTP. HTTP традиционно выполняется через TCP, протокол управления передачей. Однако TCP был разработан в 1974 году, на заре Интернета. Когда TCP был первоначально создан, его авторы не могли предсказать рост Интернета. Из-за того, что TCP устарел, TCP на какое-то время ограничил HTTP как в скорости, так и в безопасности. Теперь, благодаря новому стандарту HTTP/3, HTTP больше не ограничен. Вместо TCP HTTP/3 использует новый протокол, разработанный в 2012 году Google, который называется QUIC («Квик»). Это вводит много новых функций в HTTP.

Потоки QUIC используют одно и то же соединение QUIC, поэтому для создания новых не требуются дополнительные квитирования и медленные запуски, потоки QUIC доставляются независимо, так что в большинстве случаев потеря пакетов, влияющая на один поток, не влияет на другие. Это возможно, потому что пакеты QUIC инкапсулируются поверх дейтаграмм UDP.

Использование UDP обеспечивает гораздо большую гибкость по сравнению с TCP и позволяет реализациям QUIC полностью жить в пользовательском пространстве - обновления реализаций протокола не привязаны к обновлениям операционных систем, как в случае с TCP.


Более быстрое мультиплексирование запросов

До HTTP/2 браузеры могли отправлять на сервер только один запрос за раз. Это значительно замедлило загрузку веб-сайта, потому что браузер загружал только один ресурс, например файлы стилей CSS или JavaScript. HTTP/2 представил возможность загружать более одного ресурса за раз, но TCP не был предназначен для этого. Если один из запросов не удался, TCP заставит браузер повторить все запросы. Поскольку TCP был удален из HTTP/3 и заменен на QUIC, HTTP/3 решил эту проблему. С HTTP/3 браузеру нужно только повторить неудавшийся запрос. Благодаря этому HTTP/3 работает быстрее и надежнее.


Более быстрое шифрование

HTTP/3 оптимизирует «рукопожатие» шифрования HTTP-запросов браузера. QUIC сочетает первоначальное соединение с подтверждением связи TLS, что делает его безопасным по умолчанию и более быстрым.


Стандартизация

На момент написания этой статьи HTTP/3 и QUIC не стандартизированы. Существует рабочая группа IETF, которая в настоящее время работает над проектом стандартизации QUIC. Версия QUIC для HTTP/3 немного изменена, с использованием TLS вместо шифрования Google, но она имеет те же преимущества. Спустя пять лет после того, как первый проект спецификации QUIC был представлен в IETF, у нас есть RFC 9000, QUIC: мультиплексированный и безопасный транспорт на основе UDP.


Поддержка браузера

В настоящее время Chrome поддерживает HTTP/3 по умолчанию, поскольку Google создает протокол QUIC и предлагает использовать HTTP поверх QUIC. Firefox также поддерживает протокол в версиях 88+ без флага. Safari 14 поддерживает HTTP/3, но только если установлен флаг экспериментальной функции.



Бессерверная поддержка/поддержка CDN

Пока только некоторые серверы поддерживают HTTP/3, но их доля растет. Cloudflare была одной из первых компаний, помимо Google, которая поддержала HTTP/3, поэтому их бессерверные функции и CDN совместимы с HTTP/3. Кроме того, Google Cloud и Fastly совместимы с HTTP/3. К сожалению, Microsoft Azure CDN и AWS CloudFront в настоящее время не поддерживают HTTP/3. Если вы хотите опробовать HTTP/3, QUIC.Cloud - интересный (хотя и экспериментальный) способ настроить кэширование CDN с помощью HTTP/3.

Cloudflare, Fastly и Google Cloud также имеют хорошую поддержку HTTP/3 и более готовы к работе.


Заключение

HTTP/3 все еще является экспериментальным обновлением HTTP, и, скорее всего, оно изменится. Однако QUIC и HTTP/3 - очень интересные стандарты, обещающие устранить многие недостатки предыдущих стандартов и открыть новую эру производительности в Интернете.


Что думаешь?

Категории
  • PHP 65
  • Заметки 15
  • Безопасность 3
  • Флуд 2
  • Nginx 2
  • ИТ новости 2
  • Видео 1
  • Docker 1
  • Roadmap 1
  • Архитектура 0

Хочешь поддержать сайт?

Делаем из мухи слона

sergeymukhin.com

персональный блог о веб-разработке от Сергея Мухина. Блог был основан в 2018 году, и собирался уделять основное внимание последним тенденциям, учебным пособиям, а также советам и рекомендациям, позволяющим начинающим девелоперам встать быстрее на правильную дорогу веб разработки, но что-то пошло не так 😃

Релизы PHP 8.4

Дата Релиз
8 Июня 2024 Альфа 1
20 Июня 2024 Альфа 2
04 Июля 2024 Альфа 3
16 Июля 2024 Feature freeze
18 Июля 2024 Бета 1
01 Августа 2024 Бета 2
15 Августа 2024 Бета 3
29 Августа 2024 RC 1
12 Сентября 2024 RC 2
26 Сентября 2024 RC 3
10 Октября 2024 RC 4
24 Октября 2024 RC 5
07 Ноября 2024 RC 6
21 Ноября 2024 GA

Что нового?