În versiunile nightly ale Firefox, precum și în versiunea beta, suportul pentru protocolul HTTP/3 este activat implicit. În ramura stabilă, activarea HTTP/3 este planificată pentru lansarea Firefox 88, programată pentru 20 aprilie. Activarea selectivă a HTTP/3 în Chrome a început în octombrie 2020.
Suportul pentru HTTP/3 în Firefox se bazează pe proiectul neqo dezvoltat de Mozilla, care oferă o implementare a clientului și server pentru protocolul QUIC. Codul componentelor pentru suportul HTTP/3 și QUIC este scris în limbajul Rust. Pentru gestionarea activării HTTP/3, în about:config există opțiunea „network.http.http3.enabled”. Suportul experimental HTTP/3 a fost de asemenea adăugat în Chrome și curl, iar pentru servere este disponibil în nginx, precum și sub formă de modul nginx și server de testare oferit de Cloudflare. Au fost lansate mai multe site-uri de testare pentru a verifica funcționarea clienților HTTP/3.
Protocolul HTTP/3 se află încă în stadiul de specificație preliminară și nu este complet standardizat în IETF. HTTP/3 definește utilizarea protocolului QUIC ca transport pentru HTTP/2. Protocolul QUIC (Quick UDP Internet Connections) este dezvoltat de Google din 2013 ca o alternativă la combinația TCP+TLS pentru Web, rezolvând problemele legate de timpii mari de stabilire și negociere a conexiunilor în TCP și eliminând întârzierile cauzate de pierderile de pachete în timpul transferului de date. QUIC reprezintă o suprastructură asupra protocolului UDP, care suportă multiplexarea mai multor conexiuni și oferă metode de criptare echivalente cu TLS/SSL. În procesul de dezvoltare a standardului IETF, protocolul a suferit modificări, ceea ce a condus la apariția a două ramuri care coexistă, una pentru HTTP/3 și cealaltă susținută de Google (Chrome suportă ambele variante).
Caracteristici principale ale QUIC:
- Securitate înaltă, similară cu TLS (în esență, QUIC oferă posibilitatea utilizării TLS peste UDP);
- Controlul integrității fluxului, prevenind pierderea pachetelor;
- Posibilitatea de a stabili instantaneu o conexiune (0-RTT, în aproximativ 75% din cazuri, datele pot fi transmise imediat după trimiterea pachetului de stabilire a conexiunii) și de a asigura întârzieri minime între trimiterea cererii și primirea răspunsului (RTT, Round Trip Time);
- Utilizarea unui alt număr de secvență pentru retransmisia pachetului, ceea ce permite evitarea ambiguității în determinarea pachetelor primit și eliminarea timeout-urilor;
- Pierderea unui pachet afectează livrarea doar a fluxului asociat și nu oprește livrarea datelor în fluxurile transmise în paralel prin conexiunea curentă;
- Mijloace de corectare a erorilor, care minimizează întârzierile cauzate de retransmisia pachetelor pierdute. Utilizarea unor coduri speciale de corectare a erorilor la nivel de pachet pentru a reduce situațiile care necesită retransmiterea datelor din pachetul pierdut.
- Limitele blocurilor criptografice sunt aliniate cu limitele pachetelor QUIC, ceea ce reduce impactul pierderilor de pachete asupra decodificării conținutului pachetelor următoare;
- Lipsa problemelor cu blocarea cozii TCP;
- Suport pentru identificatorul de conexiune, care permite reducerea timpului de reinstaurare a conexiunii pentru clienți mobile;
- Posibilitatea de a activa mecanisme extinse de control al supraîncărcării conexiunii;
- Utilizarea tehnicii de previzionare a capacității de transmisie în fiecare direcție pentru a asigura o intensitate optimă a trimiterii pachetelor, prevenind astfel ajungerea într-o stare de supraîncărcare, în care se observă pierderi de pachete;
- Un creștere semnificativă a performanței și capacității, comparativ cu TCP. Pentru serviciile video, cum ar fi YouTube, utilizarea QUIC a arătat o reducere a operațiunilor de rebuffering în timpul redării video cu 30%.
Sursa: opennet.ro
