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

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

TCP vs 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 - очень интересные стандарты, обещающие устранить многие недостатки предыдущих стандартов и открыть новую эру производительности в Интернете.


Сергей Мухин

Веб-разработчик со стажем программирования более 9 лет, всегда в процессе учебы и созидания.

Есть вопросы?

Я почти всегда в режиме онлайн

Связаться со мной