HTTP/3
Международный стандарт | RFC 9114 [1] (HTTP/3 также использует завершенный протокол QUIC , описанный в RFC 9000 и связанных с ним RFC, таких как RFC 9001) |
---|---|
Разработано | IETF |
Представлено | июнь 2022 г. |
Веб-сайт | https://httpwg.org/specs/rfc9114.html |
HTTP/3 — третья основная версия протокола передачи гипертекста, используемая для обмена информацией во Всемирной паутине , дополняющая широко распространенные HTTP/1.1 и HTTP/2 . В отличие от предыдущих версий, основанных на хорошо зарекомендовавшей себя TCP (опубликованной в 1974 г.), [2] HTTP/3 использует QUIC , мультиплексный транспортный протокол, построенный на основе UDP . [3] 6 июня 2022 года IETF опубликовал HTTP/3 в качестве предлагаемого стандарта в РФК 9114 . [4]
HTTP/3 использует аналогичную семантику по сравнению с более ранними версиями протокола, включая те же методы запроса , коды состояния и поля сообщений , но кодирует их и поддерживает состояние сеанса по-другому. Однако, отчасти благодаря использованию протокола QUIC, HTTP/3 имеет меньшую задержку и загружается быстрее в реальных условиях по сравнению с предыдущими версиями: в некоторых случаях более чем в четыре раза быстрее, чем HTTP/1.1 (который для многих веб-сайты — единственная развернутая версия HTTP). [5] [6]
По состоянию на июнь 2024 года HTTP/3 полностью поддерживается 79% всех установленных веб-браузеров. [7] и 29% из 10 миллионов лучших веб-сайтов. [8] Он поддерживается Chromium (и производными проектами, включая Google Chrome , Microsoft Edge , Samsung Internet и Opera ). [9] с апреля 2020 г. и Mozilla Firefox с мая 2021 г. [7] [10] В Safari 14 этот протокол реализован, но по умолчанию он отключен. [11]
История [ править ]

HTTP/3 создан на основе Интернет-проекта, принятого рабочей группой QUIC. Первоначальное предложение называлось «Семантика HTTP/2 с использованием транспортного протокола QUIC». [12] и позже переименован в «Протокол передачи гипертекста (HTTP) через QUIC». [13]
28 октября 2018 года в ходе обсуждения в списке рассылки Марк Ноттингем, председатель рабочих групп IETF HTTP и QUIC, предложил переименовать HTTP-over-QUIC в HTTP/3, чтобы «четко идентифицировать его как еще одну привязку семантики HTTP к проводному протоколу». [...] чтобы люди поняли его отделение от QUIC". [14] Предложение Ноттингема было принято другими членами IETF несколько дней спустя. Рабочая группа HTTP была создана для оказания помощи рабочей группе QUIC во время разработки HTTP/3, а затем взяла на себя ответственность за поддержку после публикации. [15]
Поддержка HTTP/3 была добавлена в Chrome (сборка Canary) в сентябре 2019 года, а затем в конечном итоге достигла стабильных сборок, но была отключена с помощью функционального флага. Он был включен по умолчанию в апреле 2020 года. [9] Firefox добавил поддержку HTTP/3 в ноябре 2019 года с помощью функционального флага. [7] [16] [17] и начал включать его по умолчанию в апреле 2021 года в Firefox 88. [7] [10] Экспериментальная поддержка HTTP/3 была добавлена в Safari Technology Preview 8 апреля 2020 г. [18] и был включен в Safari 14, который поставляется с iOS 14 и macOS 11 , [11] [19] но в Safari 16 он по-прежнему отключен по умолчанию как на macOS, так и на iOS. [ нужна ссылка ]
Сравнение с HTTP/1.1 и HTTP/2 [ править ]
Семантика HTTP одинакова для всех версий: одни и те же методы запроса , коды состояния и поля сообщений обычно применимы ко всем версиям. Различия заключаются в сопоставлении этой семантики с базовыми транспортами. И HTTP/1.1 , и HTTP/2 используют TCP в качестве транспорта. HTTP/3 использует QUIC , транспортного уровня сетевой протокол , который использует пользовательского пространства контроль перегрузки через протокол пользовательских дейтаграмм (UDP). Переход на QUIC направлен на решение основной проблемы HTTP/2, называемой « блокировкой начала строки »: поскольку параллельная природа мультиплексирования HTTP/2 не видна механизмам восстановления потерь TCP , потерянный или переупорядоченный пакет вызывает все активные транзакции зависают независимо от того, повлияла ли на эту транзакцию потеря пакета. Поскольку QUIC обеспечивает собственное мультиплексирование, потерянные пакеты влияют только на те потоки, в которых были потеряны данные.
Предлагаемые записи ресурсов DNS SVCB (привязка службы) и HTTPS позволят подключаться без предварительного получения заголовка Alt-Svc через предыдущие версии HTTP, тем самым удаляя 1 RTT установления связи TCP. [20] [21] Клиентская поддержка записей ресурсов HTTPS имеется, поскольку Firefox 92, iOS 14 сообщили о поддержке Safari 14, а Chromium поддерживает ее с помощью флага. [22] [23] [24]
Реализации [ править ]
Клиент [ править ]
Браузер | Версия реализована (отключена по умолчанию) | Версия отправлена (включена по умолчанию) | Комментарий | ||
---|---|---|---|---|---|
Хром | Стабильная сборка (79) | декабрь 2019 г. | 87 [7] | апрель 2020 г. [25] | В более ранних версиях реализованы другие варианты QUIC. |
Край | Стабильная сборка (79) | декабрь 2019 г. | 87 | апрель 2020 г. | Edge 79 был первой версией, основанной на Chromium. |
Firefox | Стабильная сборка (72.0.1) | январь 2020 г. | 88 [10] | апрель 2021 г. [26] | |
Сафари | Стабильная сборка (14.0) | сентябрь 2020 г. | 16.4 | март 2023 г. | Apple тестирует поддержку HTTP/3 на некоторых пользователях Safari, начиная с Safari 16.4. [27] |
Библиотеки [ править ]
с открытым исходным кодом Библиотеки , реализующие клиентскую или серверную логику для QUIC и HTTP/3, включают в себя [28]
Сервер [ править ]
- 7 июня 2021 года был выпущен веб-сервер LiteSpeed (и OpenLiteSpeed) 6.0.2, который стал первой версией, в которой по умолчанию включен HTTP/3. [34]
- Веб-сервер Caddy версии 2.6.0 (выпущен 20 сентября 2022 г.) по умолчанию включает HTTP/3. [35]
- Nginx поддерживает HTTP/3 с версии 1.25.0 (выпущенной 23 мая 2023 г.). Предварительная версия технологии nginx с поддержкой HTTP/3 была выпущена в июне 2020 года. [36] Бинарные пакеты nginx с поддержкой HTTP/3 были выпущены в феврале 2023 года. [37]
- Cloudflare распространяет патч для nginx, который интегрирует в него библиотеку HTTP/3 Quiche. [38]
- Поддержка Microsoft IIS для HTTP/3 изначально включена в Windows Server 2022/Windows 11. [39]
- HAProxy поддерживает HTTP/3 через QUIC, начиная с версии 2.6, выпущенной 31 мая 2022 года. [40] [41]
См. также [ править ]
- Быстрый и безопасный протокол — схема команд терминала, используемая для передачи данных.
Ссылки [ править ]
- ^ Бишоп, Майк; Акамай. «RFC 9114: HTTP/3» . rfc-редактор . Проверено 6 июня 2022 г.
- ^ Серф, В.; Далал, Ю.; Саншайн, К. (декабрь 1974 г.). «Спецификация программы управления передачей через Интернет» . IETF : RFC0675. дои : 10.17487/rfc0675 .
- ^ «Что такое HTTP/3?» . Облачная вспышка . Архивировано из оригинала 4 июля 2022 года . Проверено 12 июля 2022 г.
- ^ «HTTP/3» . 6 июня 2022 г. Проверено 6 июня 2022 г.
- ^ Перна, Джанлука; Тревизан, Мартино; Джордано, Данило; Драго, Идилио (1 апреля 2022 г.). «Первый взгляд на внедрение и производительность HTTP/3» . Компьютерные коммуникации . 187 : 115–124. дои : 10.1016/j.comcom.2022.02.005 . HDL : 11368/3025202 . ISSN 0140-3664 . S2CID 246936473 .
- ^ «HTTP/3 — это быстро» . Запросить метрики . Проверено 1 июля 2022 г.
- ↑ Перейти обратно: Перейти обратно: а б с д и " "HTTP/3" | Могу ли я использовать... Таблицы поддержки HTML5, CSS3 и т. д." . canIuse.com . Проверено 10 июня 2024 г.
- ^ «Использование HTTP/3 для веб-сайтов» . Обзоры технологий Всемирной паутины . W3Techs . Проверено 2 февраля 2024 г.
- ↑ Перейти обратно: Перейти обратно: а б «Включение QUIC в верхушке дерева» . groups.google.com . Проверено 8 апреля 2021 г.
- ↑ Перейти обратно: Перейти обратно: а б с Дамьянович, Драгана (16 апреля 2021 г.). «Поддержка QUIC и HTTP/3 теперь в Firefox Nightly и бета-версии» . Mozilla Hacks — блог веб-разработчиков . Проверено 17 апреля 2021 г.
- ↑ Перейти обратно: Перейти обратно: а б «Примечания к выпуску Safari 14» . разработчик.apple.com . Проверено 4 декабря 2020 г.
- ^ Шейд, Робби (8 июля 2016 г.). Семантика HTTP/2 с использованием транспортного протокола QUIC . IETF . Идентификатор черновика-shade-quic-http2-mapping.
- ^ Чимпану, Каталин (12 ноября 2018 г.). «HTTP-over-QUIC будет переименован в HTTP/3 | ZDNet» . ЗДНет . Проверено 12 ноября 2018 г.
- ^ Ноттингем, Марк (28 октября 2018 г.). «Определение наших результатов» . Почтовый архив IETF .
- ^ «Устав протокола передачи гипертекста» . ietf.org . Проверено 2 сентября 2020 г.
- ^ Дэниел, Стенберг. «Дэниел Стенберг объявляет о поддержке HTTP/3 в Firefox Nightly» . Твиттер . Проверено 5 ноября 2019 г.
- ^ Чимпану, Каталин (26 сентября 2019 г.). «Cloudflare, Google Chrome и Firefox добавляют поддержку HTTP/3» . ЗДНет . Проверено 27 сентября 2019 г.
- ^ «Примечания к выпуску Safari Technology Preview 104» . вебкит.орг . 8 апреля 2020 г. Проверено 7 августа 2020 г.
- ^ Нг, Гэри (23 июня 2020 г.). «Apple Safari добавляет поддержку HTTP3 в iOS 14 и macOS 11» . iphoneincanada.ca . Проверено 25 июня 2021 г.
- ^ «HTTPS-RR» . МДН . Мозилла . Проверено 25 октября 2022 г.
- ^ Шварц, Бенджамин М.; Бишоп, Майк; Нигрен, Эрик (12 июня 2020 г.). Привязка службы и указание параметров через DNS . IETF . Идентификатор черновика-ietf-dnsop-svcb-https.
- ^ «Firefox 92 для разработчиков» . Корпорация Мозилла . 7 сентября 2021 г. Проверено 25 октября 2022 г.
- ^ «Функция: перенаправление HTTP->HTTPS для DNS-записей HTTPS» . Google Inc. Дата обращения 25 октября 2022 г.
- ^ Патрик Мевзек (24 августа 2021 г.). «Каков вариант использования SVCB (тип 65, привязка службы) RR» . Stack Exchange Inc. Дата обращения 25 октября 2022 г.
- ^ «Включение QUIC в верхушке дерева» . groups.google.com . Проверено 9 апреля 2021 г.
- ^ «Владельцы релизов Firefox — MozillaWiki» . Wiki.mozilla.org . Проверено 9 апреля 2021 г.
- ^ Джен Симмонс (4 апреля 2023 г.). «Поддержка HTTP/3 добавлена в Safari 14.0» . Гитхаб . Проверено 7 апреля 2023 г.
- ^ «Внедрение QUIC» . Гитхаб . Проверено 8 апреля 2021 г.
- ^ «Первый HTTP/3 с Curl» . Дэниел Стенберг. 5 августа 2019 года . Проверено 2 октября 2019 г.
- ^ «HTTP3 (и QUIC)» . Дэниел Стенберг. 23 августа 2023 г. Проверено 27 августа 2023 г.
- ^ «MsQuic имеет открытый исходный код» . 28 апреля 2020 г. Проверено 28 апреля 2020 г.
- ^ «Поддержка HTTP/3 в .NET 6» . 17 сентября 2021 г. Проверено 17 сентября 2021 г.
- ^ «Поддержка HTTP/3 в .NET 6» . .NET-блог . 17 сентября 2021 г. Проверено 12 января 2022 г.
- ^ «Журнал выпуска веб-сервера LiteSpeed — LiteSpeed Technologies» . www.litespeedtech.com . Проверено 12 февраля 2022 г.
Включите HTTP/3 v1 по умолчанию.
- ^ «Выпуск 2.6.0 · caddyserver/caddy» . Гитхаб . 22 сентября 2022 г. Проверено 20 сентября 2022 г.
- ^ «Представляем предварительную версию технологии поддержки NGINX для QUIC и HTTP/3» . НГИНКС . 10 июня 2020 г. Проверено 11 июня 2020 г.
- ^ «Двоичные пакеты теперь доступны для предварительной версии реализации NGINX QUIC+HTTP/3» . НГИНКС . 8 февраля 2023 г. Проверено 30 марта 2023 г.
- ^ «Экспериментируйте с HTTP/3, используя NGINX и пирог с заварным кремом» . Блог Cloudflare . 17 октября 2019 г. Проверено 9 ноября 2019 г.
- ^ Третчер. «Используйте ASP.NET Core с HTTP/3 в IIS» . docs.microsoft.com . Проверено 29 апреля 2022 г.
- ^ «Анонс HAProxy 2.6» . Блог HAProxy . 31 мая 2022 г.
- ^ «Реализация QUIC в HAProxy» . Видеопрезентация HAProxyConf .