Co to jest HTTP/3

HTTP/3

HTTP/3

HTTP/3 jest następcą HTTP/2. Biorąc pod uwagę, że przejście z HTTP/1.1 na HTTP/2 zajęło 16 lat, czy zająć się tematem HTTP/3?

Domyślasz się pewnie, że tak. Nie pisałabym o tym, jeśli nie uważałbym inaczej. Warto być na bieżąco w tym wątku. Tak jak HTTP/2 dokonał znaczących zmian w stosunku do HTTP/1.1, przełączając się z ASCII na binarny sposób przesyłania danych, tak HTTP/3 ponownie wprowadza znaczące zmiany, tym razem przełączając bazowy transport z TCP na UDP. Ta zmiana jest kluczową zmianą, jaka następuje w tej iteracji zmian.

Chociaż HTTP/3 jest wciąż na etapie projektowania. Oficjalna specyfikacja jest szkicem. Powoli jest wdrażany. Niestety do tego czasu trzeba się liczyć z niestabilnym działaniem tej wersji HTTP/3.

Istnieje jednak wiele niewiadomych i pytań związanych z działaniem HTTP/3. Jakie są korzyści? A co powinni wiedzieć inżynierowie sieci, administratorzy systemów i programiści?

Porównanie HTTP/2 a HTTP/3

  • HTTP/2 zapewnia duży wzrost wydajności, ponieważ rozwiązuje problem blokowania nagłówka wiersza HTTP (HOL). Wprowadza multipleksowanie żądania/odpowiedzi, binarne ramkowanie, kompresję nagłówków, priorytetyzację strumienia i push serwera.
  • Protokół HTTP/3 jest jeszcze szybszy, ponieważ zawiera cały protokół HTTP/2 i rozwiązuje problem blokowania protokołu TCP HOL. HTTP/3 wciąż jest tylko wersją roboczą. Jest bardziej wydajny, zużywa mniej zasobów (systemowych i sieciowych), wymaga szyfrowania (certyfikaty SSL są obowiązkowe) i wykorzystuje UDP.
  • Przeglądarki internetowe prawdopodobnie będą przez jakiś czas nadal obsługiwać starsze wersje protokołu HTTP. Korzyści związane z wydajnością i oraz rankowanie przez wyszukiwarki witryn obsługujących protokół HTTP/3 spowodują przyspieszenie implementacji na szeroką skalę.
  • W niedalekiej przyszłości właściciele witryn prawdopodobnie będą również chcieli wspierać HTTP/3. Jest jednak bardziej kontrowersyjny niż HTTP/2 i może mieć naturalnych oponentów w postaci wielkich sieci.

Prerformance

A 100-millisekund opóźnienia w czasie ładowania strony WWW, może obniżyć o 7% współczynnik konwersji!

Źródło: Akamai Online Retail Performance Report: Milliseconds Are Critical

Czy protokół HTTP/3 jest już dostępny?

Podczas gdy standard jest wciąż w fazie rozwoju, właściciele witryn i odwiedzający mogą zacząć otrzymywać wsparcie dla HTTP/3 za pośrednictwem przeglądarek, systemów operacyjnych i innych aplikacji klienckich. Oczywiście czeka nas prawdopodobnie więcej zmian w standardzie, który przeszedł już kilka implementacji.

Po wydaniu HTTP/3 cała sieć nie przełączy się od razu. Wiele witryn nie korzysta jeszcze z HTTP/2.

Jedną z potencjalnych przeszkód dla nowego protokołu jest to, że wymaga on zwiększonego wykorzystania procesora zarówno przez serwer, jak i klienta. Z czasem wpływ ten prawdopodobnie zmniejszy się wraz z rozwojem technologii.

Problem blokowania TCP HOL

Kontrola przeciążenia TCP jest obsługiwana przez zaimplementowane mechanizmy wycofywania i retransmisji pakietów. Dzieje się tak poprzez używanych w przypadku wykrycia utraty spójności danych. Retransmisja zapewnia, że dane zostaną ostatecznie dostarczone w spójnej formie i w całości.

Problem blokowania TCP HOL
Problem blokowania TCP HOL

Rozwiązanie problemu TCP HOL

Rozwiązanie problemu blokowania TCP HOL wymagało czegoś więcej niż tylko przejścia na UDP, ponieważ nadal konieczne jest zagwarantowanie prawidłowego i pełnego przesyłu danych przy zagwarantowaniu niskich obciążeń serwera. Protokół QUIC został zaprojektowany w celu poprawy działania tego obszaru. Zapewnia zoptymalizowaną komunikację HTTP przez UDP.

Ponieważ QUIC przejmuje kontrolę nad zarządzaniem strumieniami, ramkami binarnymi itp., niewiele pozostaje do zrobienia dla HTTP/2. Defacto QUIC + HTTP to już HTTP/3.

Model QUIC OSI
Model QUIC OSI

Model QUIC OSI opiera się na tym, że adres IP jest podstawa łącząca, dwa stosy. Lewy stos protokołów HTTP dodaje TCP, TLS i HTTP/2 do adresu IP. Stos protokołu HTTP po prawej stronie dodaje UDP, specjalny blok i „HTTP przez QUIC”. Specjalny blok zawiera kontrolę przeciążenia QUIC i podobnnie do TCP i możliwość odzyskiwania utraconych danych, i dodatkowo blok kodowania/kryptografii QUIC.
Istnieje wiele wersji QUIC, ponieważ protokół był rozwijany i wdrażany w środowiskach produkcyjnych od lat. Istnieje nawet wersja specyficzna dla Google o nazwie GQUIC. W związku z tym ważne jest, aby odróżnić stare protokoły QUIC od nowego standardu HTTP/3.

Co to jest UDP?

Protokół datagramów użytkownika (UDP) jest alternatywą dla TCP. Nie zapewnia wirtualizacji strumienia ani tych samych gwarancji, które oferuje TCP. Zamiast tego zapewnia łatwy sposób umieszczania danych w pakiecie, adresowania go do innego komputera i wysyłania. Jest zawodny, nieuporządkowany i nie jest wyposażony w żadną formę kontroli zatorów i strat.

Jego cel jest lekkość działania i zapewnienie minimum działających funkcji niezbędnych do umożliwienia komunikacji. W ten sposób aplikacja może realizować własne gwarancje. Jest to często bardzo przydatne w aplikacjach czasu rzeczywistego. Na przykład w rozmowach telefonicznych użytkownicy zazwyczaj wolą otrzymywać 90% danych natychmiast, a nie ostatecznie 100% danych.

Czy HTTP/3 jest zawsze szyfrowane?

HTTP/3 zawiera szyfrowanie Jednym z głównych wyzwań implementacyjnych dla HTTP/3 jest konieczność modyfikacji bibliotek TLS/SSL w celu dodania nowej wymaganej funkcjonalności.

HTTP/3 jest zawsze szyfrowane
Szyfrowane w HTTP/3

Ta zmiana jest spowodowana tym, że HTTP/3 różni się od HTTPS pod względem sposobu szyfrowania. W przypadku starszego protokołu HTTPS tylko same dane są chronione przez TLS, pozostawiając odkodowane pozostałe dane. W HTTP/3 chronione są zarówno dane, jak i protokół transportowy. Protokół optymalizuje nadmiarowe działania obecne w HTTP/2. W związku z tym szyfrowanie protokołu transportowego, a także danych, w rzeczywistości zwiększa wydajność protokołu.

Podsumowanie

Nowy protokół jest szybszy i rozbudowuje obecnie stosowany. Nie mniej, nie sądzę by był szybko rozpropagowany i dostępny jako ten główny. Ciekawy jestem, kiedy hostingi dla WordPress będą wyposażone w HTTP/3 jako standard.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *