ostatnio IETF (Internet Engineering Task Force), która opracowuje protokoły i architekturę Internetu, dał mi znać wiadomości, że zakończył tworzenie RFC dla protokołu HTTP/3.0 i opublikował powiązane specyfikacje pod identyfikatorami RFC 9114 i RFC 9204.
Specyfikacja HTTP/3.0 uzyskała status „Proponowanego Standardu”, po czym rozpoczną się prace nad nadaniem RFC statusu projektu normy (Draft Standard), co w rzeczywistości oznacza całkowitą stabilizację protokołu i uwzględnienie wszystkich zgłoszonych uwag.
Protokół HTTP/3 definiuje użycie protokołu QUIC (Szybkie połączenia internetowe UDP) jako transport dla HTTP/2. QUIC to wtyczka do protokołu UDP, która obsługuje multipleksowanie wielu połączeń i zapewnia metody szyfrowania równoważne TLS/SSL.
Protokół został stworzony w 2013 roku przez Google jako alternatywa dla TCP + TLS for the Web, rozwiązująca problem długiej konfiguracji połączenia i czasu negocjacji w TCP oraz eliminująca opóźnienia spowodowane utratą pakietów podczas przesyłania danych.
Obecnie Obsługa QUIC i HTTP/3.0 jest już zaimplementowana we wszystkich przeglądarkach popularne strony internetowe. Po stronie serwera implementacje HTTP/3 dostępne są dla nginx (w osobnej gałęzi i jako osobny moduł), Caddy, IIS i LiteSpeed. HTTP/3 jest również obsługiwany przez sieć dostarczania treści Cloudflare.
Główne cechy QUIC:
- Wysokie bezpieczeństwo, podobne do TLS (w rzeczywistości QUIC zapewnia możliwość korzystania z TLS przez UDP)
- Kontrola integralności transmisji w celu zapobiegania utracie pakietów
- Możliwość natychmiastowego nawiązania połączenia i zapewnienia minimalnych opóźnień między wysłaniem żądania a otrzymaniem odpowiedzi (RTT, czas podróży w obie strony)
- Użyj innego numeru sekwencyjnego podczas retransmisji pakietu, aby uniknąć niejednoznaczności podczas określania odebranych pakietów i pozbyć się przekroczeń limitu czasu
- Utrata pakietu wpływa na dostarczenie tylko związanego z nim strumienia i nie zatrzymuje dostarczania danych w strumieniach przesyłanych równolegle przez bieżące połączenie
- Narzędzia do korekcji błędów, które minimalizują opóźnienia spowodowane retransmisją utraconych pakietów. Użycie specjalnych kodów korekcji błędów na poziomie pakietów w celu ograniczenia sytuacji wymagających retransmisji utraconych danych pakietowych.
- Granice bloków kryptograficznych są wyrównane z granicami pakietów QUIC, co zmniejsza wpływ utraty pakietów na dekodowanie zawartości kolejnych pakietów
- Brak problemów z blokowaniem kolejki TCP
- Wsparcie identyfikacji połączenia w celu skrócenia czasu ponownego połączenia dla klientów mobilnych
- Możliwość podłączenia zaawansowanych mechanizmów kontroli przeciążenia połączenia
- Użyj technik przewidywania przepustowości w każdym kierunku, aby zapewnić optymalne szybkości przesyłania pakietów, unikając przeciążeń, w których pakiety są tracone.
- Znaczący wzrost wydajności i wydajności w porównaniu z protokołem TCP. Wykazano, że w przypadku serwisów wideo, takich jak YouTube, QUIC redukuje operacje buforowania wideo o 30%.
Oprócz tego, również w tym samym czasie zostały opublikowane zaktualizowane wersje specyfikacji dla protokołów HTTP/1.1 (RFC 9112) i HTTP/2.0 (RFC 9113) oraz dokumenty definiujące semantykę żądań HTTP (RFC 9110) i nagłówki kontrolne buforowania HTTP (RFC 9111).
O zmianach w Specyfikacja HTTP/1.1, możesz zauważyć zakaz od oddzielnego użycia znaku powrotu karetki (CR) na zewnątrz ciała z treścią, czyli w elementach protokołu znak CR może być używany tylko razem ze znakiem nowej linii (CRLF).
El poprawiono algorytm układu pofragmentowanych żądań aby uprościć oddzielanie dołączonych pól i sekcji za pomocą nagłówków. Dodano wytyczne dotyczące obsługi niejednoznacznej treści w celu zablokowania ataków klasy „HTTP Request Smuggling”, które mogą ingerować w treść żądań innych użytkowników w przepływie między frontendem a backendem.
Aktualizacja specyfikacji HTTP/2.0 wyraźnie definiuje wsparcie dla TLS 1.3, przestarzały schemat nadawania priorytetów i powiązane pola nagłówka oraz mechanizm aktualizacji przestarzałe połączenie HTTP/1.1 zostało wycofane.
Wreszcie, jeśli chcesz dowiedzieć się więcej na ten temat, możesz zapoznać się ze szczegółami w następujący link.