W Firefox, który będzie podstawą wersji Firefox 72, zaplanowanej na 7 stycznia, wsparcie dla protokołu HTTP/3. Domyślnie HTTP/3 jest wyłączone i wymaga aktywacji opcji „network.http.http3.enabled” w about:config.
Wsparcie HTTP/3 w Firefox opiera się na rozwijanym przez firmę Mozilla projekcie , który zapewnia implementację klienta i serwera dla protokołu QUIC. Kod komponentów wspierających HTTP/3 i QUIC został napisany w języku Rust.
Z klienta oprogramowania eksperymentalne wsparcie dla HTTP/3 jest już dostępne w Chrome i curl, a dla serwerów dostępne jest w formie dla nginx i opartego na bibliotece ( QUIC i HTTP/3 w języku Rust od firmy Cloudflare). Aby sprawdzić działanie klientów HTTP/3 kilka stron testowych, z których większość wciąż nie otwiera się poprawnie w Firefox (HTTP/3 znajduje się w fazie i nie został ostatecznie zstandaryzowany).
Przypomnijmy, że HTTP/3 standaryzuje użycie protokołu QUIC jako transportu dla HTTP/2. Protokół (Quick UDP Internet Connections) od 2013 roku jest rozwijany przez firmę Google jako alternatywa dla połączeń TCP+TLS w sieci, rozwiązując problemy z długim czasem ustanawiania i uzgadniania połączeń w TCP oraz eliminując opóźnienia przy utracie pakietów w trakcie przesyłania danych. QUIC jest nadbudową nad protokołem UDP, wspierającą mnożenie połączeń i zapewniającą metody szyfrowania porównywalne z TLS/SSL.
Podstawowe QUIC:
- Wysokie bezpieczeństwo, podobne do TLS (w zasadzie QUIC zapewnia możliwość użycia TLS nad UDP);
- Kontrola integralności strumienia, zapobiegająca utracie pakietów;
- Możliwość natychmiastowego ustanowienia połączenia (0-RTT, w około 75% przypadków dane można przesyłać natychmiast po wysłaniu pakietu ustanowienia połączenia) oraz zapewnienie minimalnych opóźnień między wysłaniem żądania a otrzymaniem odpowiedzi (RTT, Round Trip Time);
- Nie używanie tego samego numeru sekwencji podczas ponownej transmisji pakietu, co pozwala uniknąć dwuznaczności przy określaniu odebranych pakietów i wyeliminować opóźnienia;
- Utrata pakietu wpływa na dostarczanie tylko powiązanego z nim strumienia i nie zatrzymuje dostarczania danych w równolegle przesyłanych strumieniach przez bieżące połączenie;
- Środki korekcji błędów, minimalizujące opóźnienia spowodowane ponowną transmisją zagubionych pakietów. Wykorzystanie specjalnych kodów korekcji błędów na poziomie pakietów w celu zmniejszenia liczby sytuacji wymagających ponownej transmisji danych zagubionego pakietu.
- Granice bloków kryptograficznych są wyrównane z granicami pakietów QUIC, co zmniejsza wpływ utraty pakietów na dekodowanie zawartości następnych pakietów;
- Brak problemów z blokowaniem kolejek TCP;
- Wsparcie dla identyfikatora połączenia, co pozwala skrócić czas na ponowne nawiązanie połączenia dla klientów mobilnych;
- Możliwość podłączenia rozszerzonych mechanizmów kontroli przeciążenia połączenia;
- Wykorzystanie techniki prognozowania przepustowości w każdym kierunku, aby zapewnić optymalną intensywność wysyłania pakietów, zapobiegając wpadnięciu w stan przeciążenia, w którym występuje utrata pakietów;
- Wyraźny wydajności i przepustowości w porównaniu z TCP. Dla serwisów wideo, takich jak YouTube, zastosowanie QUIC wykazało zmniejszenie operacji ponownego buforowania podczas oglądania wideo o 30%.
Źródło: opennet.ru
