HTTP/3
Międzynarodowy standard | Biskup, Mike; Akamai. "RFC 9114: HTTP/3" . edytor rfc . Źródło 6 czerwca 2022 r . (HTTP/3 korzysta również z kompletnego protokołu QUIC opisanego w RFC 9000 i pokrewnych dokumentach RFC, takich jak RFC 9001) |
---|---|
Opracowany przez | IETF |
wprowadzony | RFC9114 _ |
Strona internetowa | https://quicwg.org/ |
HTTP/3 to trzecia główna wersja protokołu Hypertext Transfer Protocol używana do wymiany informacji w sieci World Wide Web , uzupełniająca powszechnie stosowane protokoły HTTP/1.1 i HTTP/2 . W przeciwieństwie do poprzednich wersji, które opierały się na dobrze znanym protokole TCP (opublikowanym w 1974 r.), HTTP/3 wykorzystuje QUIC , multipleksowany protokół transportowy zbudowany na UDP . 6 czerwca 2022 r. IETF opublikował HTTP/3 jako proponowany standard w RFC 9114 .
HTTP/3 wykorzystuje podobną semantykę w porównaniu z wcześniejszymi wersjami protokołu, w tym te same metody żądania , kody statusu i pola komunikatów , ale inaczej je koduje i utrzymuje stan sesji. Jednak częściowo ze względu na przyjęcie przez protokół QUIC, HTTP/3 ma mniejsze opóźnienia i ładuje się szybciej w rzeczywistych zastosowaniach w porównaniu z poprzednimi wersjami: w niektórych przypadkach ponad 3 razy szybciej niż w przypadku HTTP/1.1 (który pozostaje jedynym wersja wdrożona przez wiele stron internetowych).
HTTP/3 jest obsługiwany przez 75% przeglądarek internetowych (i 83% przeglądarek internetowych „śledzonych” na komputery stacjonarne) oraz 26% z 10 milionów najpopularniejszych witryn. Jest obsługiwany przez Chromium (i projekty pochodne, w tym Google Chrome , Microsoft Edge , Samsung Internet i Opera ) od kwietnia 2020 r., a przez Mozillę Firefox od maja 2021 r. Safari 14 (na macOS Big Sur i iOS 14 oraz „jest głównym Nowa funkcja w iOS 15 "; dla aplikacji) zaimplementował protokół, ale domyślnie pozostaje on wyłączony .
Historia
HTTP/3 wywodzi się z projektu internetowego przyjętego przez grupę roboczą QUIC. Pierwotna propozycja nosiła nazwę „HTTP/2 Semantics using The QUIC Transport Protocol”, a później przemianowano ją na „Hypertext Transfer Protocol (HTTP) over QUIC”.
W dniu 28 października 2018 r. W dyskusji na liście mailingowej Mark Nottingham, przewodniczący grup roboczych IETF HTTP i QUIC, zaproponował zmianę nazwy HTTP-over-QUIC na HTTP/3, aby „wyraźnie zidentyfikować to jako kolejne powiązanie semantyki HTTP z protokołem przewodowym [...] więc ludzie rozumieją jego oddzielenie od QUIC”. Propozycja Nottingham została zaakceptowana przez innych członków IETF kilka dni później. Grupa robocza HTTP została powołana, aby pomagać grupie roboczej QUIC podczas projektowania HTTP/3, a następnie przejąć odpowiedzialność za konserwację po publikacji.
Obsługa HTTP/3 została dodana do Chrome (kompilacja Canary) we wrześniu 2019 r., a następnie ostatecznie osiągnęła stabilne wersje, ale została wyłączona przez flagę funkcji. Został włączony domyślnie w kwietniu 2020 r. Firefox dodał obsługę HTTP/3 w listopadzie 2019 r. Za pomocą flagi funkcji i zaczął włączać ją domyślnie w kwietniu 2021 r. W przeglądarce Firefox 88. Eksperymentalna obsługa HTTP/3 została dodana do Safari Technology Preview w kwietniu 8, 2020 i została dołączona do Safari 14, która jest dostarczana z iOS 14 i macOS 11 , ale nadal jest domyślnie wyłączona od Safari 16, zarówno w systemie macOS, jak i iOS. [ potrzebne źródło ]
Porównanie z HTTP/1.1 i HTTP/2
Semantyka HTTP jest spójna we wszystkich wersjach: te same metody żądania , kody stanu i pola komunikatów są zazwyczaj stosowane we wszystkich wersjach. Różnice dotyczą mapowania tych semantyk do podstawowych transportów. Zarówno HTTP/1.1, jak i HTTP/2 używają protokołu TCP jako środka transportu. HTTP/3 wykorzystuje QUIC , protokół sieciowy warstwy transportowej , który wykorzystuje kontrolę przeciążenia przestrzeni użytkownika za pośrednictwem protokołu UDP (User Datagram Protocol ). Przejście na QUIC ma na celu rozwiązanie głównego problemu HTTP/2 o nazwie „ blokowanie nagłówka linii ”: ponieważ równoległa natura multipleksowania HTTP/2 nie jest widoczna dla mechanizmów odzyskiwania strat TCP , zagubiony lub uporządkowany pakiet powoduje zatrzymanie wszystkich aktywnych transakcji , niezależnie od tego, czy na tę transakcję wpłynął utracony pakiet Ponieważ QUIC zapewnia natywne multipleksowanie, utracone pakiety mają wpływ tylko na strumienie, w których utracono dane.
Proponowane rekordy zasobów DNS SVCB (powiązanie usługi) i HTTPS umożliwiłyby połączenie bez uprzedniego odbierania nagłówka Alt-Svc przez poprzednie wersje HTTP, usuwając w ten sposób 1 RTT uzgadniania TCP. Istnieje obsługa klientów dla rekordów zasobów HTTPS od czasu, gdy Firefox 92, iOS 14 zgłosił obsługę Safari 14, a Chromium obsługuje to za flagą.
Implementacje
Klient
Przeglądarka
Przeglądarka | Zaimplementowana wersja (domyślnie wyłączona) | Dostarczona wersja (domyślnie włączona) | Komentarz | ||
---|---|---|---|---|---|
Chrom | Stabilna konstrukcja (79) | grudzień 2019 r | 87 | kwiecień 2020 r | Wcześniejsze wersje zawierały inne wersje robocze QUIC |
Krawędź | Stabilna konstrukcja (79) | grudzień 2019 r | 87 | kwiecień 2020 r | Edge 79 był pierwszą wersją opartą na Chromium |
Firefoxa | Stabilna wersja (72.0.1) | styczeń 2020 r | 88 | kwiecień 2021 r | |
Safari | Przegląd technologii Safari 104 | kwiecień 2020 r | – | – |
Biblioteki
Biblioteki typu open source , które implementują logikę klienta lub serwera dla QUIC i HTTP/3 obejmują
serwer
- 7 czerwca 2021 r. Wydano LiteSpeed Web Server (i OpenLiteSpeed) 6.0.2, który stał się pierwszą wersją domyślnie obsługującą HTTP / 3.
- Caddy w wersji 2.6.0 (wydany 20 września 2022 r.) ma domyślnie włączony protokół HTTP/3.
- Trwają prace nad obsługą Nginx dla HTTP/3. Wersja zapoznawcza technologii nginx z obsługą HTTP/3 została opublikowana w czerwcu 2020 r.
- Cloudflare dystrybuuje łatkę dla nginx, która integruje z nią bibliotekę quiche HTTP/3.
- Microsoft IIS dla protokołu HTTP/3 jest włączona natywnie w systemie Windows Server 2022/Windows 11.
- HAProxy obsługuje HTTP/3 przez QUIC od wersji 2.6 wydanej 31 maja 2022 r.
Zobacz też
Linki zewnętrzne
- Oficjalna strona internetowa
- Grupa robocza IETF QUIC na GitHub
- RFC 9114 „Protokół przesyłania hipertekstu w wersji 3 (HTTP/3)”
- Wyjaśnienie protokołu HTTP/3 ( Daniel Stenberg )
- HTTP/3 na caniuse.com
- Lista implementacji QUIC na IETF QUIC Working Group Wiki
- Narzędzie do sprawdzania, czy strona obsługuje HTTP/3