Co to jest 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 HTTP3 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.
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 opiera się na tym, że adres IP jest podstawą łą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 celem 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.
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.
Wpływ na rozwój aplikacji i stron internetowych
Zastosowanie HTTP/3 ma dalekosiężne konsekwencje dla rozwoju aplikacji webowych i stron internetowych, zmuszając deweloperów do przemyślenia niektórych utrwalonych praktyk optymalizacji. Przede wszystkim, szybsza prędkość ładowania i lepsza wydajność połączeń oferowane przez HTTP/3 mogą zmniejszyć potrzebę stosowania niektórych technik, takich jak łączenie plików czy sztuczne opóźnianie ładowania (lazy loading), które były wcześniej wykorzystywane do przyspieszenia ładowania stron w starszych protokołach.
Dodatkowo, lepsze zarządzanie połączeniami i zwiększona odporność na utratę pakietów mogą zmienić podejście do projektowania aplikacji internetowych, umożliwiając tworzenie bardziej interaktywnych i dynamicznych doświadczeń użytkownika, szczególnie w środowiskach mobilnych i o niskiej stabilności połączenia.
Deweloperzy będą musieli również wziąć pod uwagę zmienione wymagania bezpieczeństwa i prywatności, ponieważ HTTP 3 domyślnie wspiera szyfrowanie, co może wpływać na wybór i konfigurację infrastruktury serwerowej. Ostatecznie, HTTP/3 otwiera nowe możliwości w zakresie wydajności i funkcjonalności stron internetowych, zmuszając branżę do adaptacji i rewizji obecnych praktyk programistycznych i projektowych.
QUIC (Quick UDP Internet Connections)
HTTP/3 wyróżnia się przede wszystkim swoim wykorzystaniem protokołu QUIC (Quick UDP Internet Connections) jako warstwy transportowej, zamiast tradycyjnie stosowanego TCP. Ten nowatorski wybór ma znaczący wpływ na wydajność i niezawodność połączeń internetowych. QUIC, działając na bazie UDP (User Datagram Protocol), zapewnia szybsze ustanawianie połączeń, eliminując niektóre opóźnienia typowe dla TCP, takie jak proces “handshaking” (wymiany sygnałów przy nawiązywaniu połączenia).
Ta zmiana jest szczególnie korzystna w warunkach niestabilnych połączeń internetowych, gdzie TCP może napotykać problemy z opóźnieniami i przerwaniami transmisji. QUIC poprawia również zarządzanie połączeniami, umożliwiając lepsze multiplexowanie i unikanie blokowania przez kolejne pakiety (head-of-line blocking), co przekłada się na wyższą ogólną wydajność przesyłania danych. Dodatkowo, QUIC od samego początku zapewnia szyfrowanie, co zwiększa bezpieczeństwo przesyłanych danych. W rezultacie, HTTP/3 z QUIC oferuje bardziej płynne i bezpieczne doświadczenie przeglądania internetu, co jest szczególnie istotne w mobilnym i dynamicznie zmieniającym się środowisku internetowym.
Wsparcie i kompatybilność
Wsparcie dla HTTP/3 wciąż ewoluuje, co stwarza różnorodne wyzwania dla deweloperów i administratorów stron internetowych. Na początku 2023 roku, główne przeglądarki internetowe takie jak Google Chrome, Mozilla Firefox i Safari już implementowały lub testowały wsparcie dla HTTP/3, wskazując na rosnącą akceptację tego standardu. Jednakże, nie wszystkie serwery i sieciowe narzędzia zarządzania treścią (CDN) były w pełni przystosowane do obsługi HTTP/3, co może skutkować nierównomiernym wdrażaniem i wykorzystaniem.
Deweloperzy i administratorzy muszą więc bacznie śledzić aktualizacje i kompatybilność swoich narzędzi i platform hostingowych, aby w pełni wykorzystać zalety HTTP/3. Dodatkowo, konieczność obsługi zarówno nowego protokołu, jak i starszych wersji HTTP, może wymagać dodatkowego planowania i testowania w celu zapewnienia płynnego przejścia i zgodności z różnymi środowiskami użytkownika.
Wyzwaniem jest również zapewnienie odpowiedniego poziomu bezpieczeństwa i wydajności, ponieważ HTTP/3 wprowadza nowe aspekty techniczne i operacyjne, które mogą wymagać specjalistycznej wiedzy i dostosowania infrastruktury. Pomimo tych wyzwań, rosnące wsparcie dla HTTP/3 w branży wskazuje na jego potencjalne długoterminowe korzyści i znaczenie w przyszłym kształtowaniu internetu.
Podsumowanie
Nowy protokół jest szybszy i rozbudowuje obecnie stosowany. Niemniej, 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.
Artykuł uaktualniony 12 miesięcy
2 Comments
Czy rzeczywiście tego typu rozwiązania są już dostępne? czy warto korzystać z niedokońca sprawdzonych rozwiązań
Z mojej wiedzy wynika, że jeśli hosting oferuje rozwiązanie HTTP/3 to jest ono w pełnej wersji działającej. Oznacza to, że zastosowane funkcje są w pełni sprawne.