Mozilla har annonceret sin hensigt om at begynde indfasning af HTTP/3 og QUIC med udgivelsen af Firefox 88, der er planlagt til den 19. april (oprindeligt forventet at blive udgivet den 20. april, men at dømme efter tidsplanen vil den blive skubbet en dag tilbage). HTTP/3-understøttelse vil i første omgang kun være aktiveret for en lille procentdel af brugerne og vil, bortset fra uventede problemer, blive udrullet til alle inden udgangen af maj. I natlige builds og betaversioner var HTTP/3 aktiveret som standard i slutningen af marts.
Lad os huske, at implementeringen af HTTP/3 i Firefox er baseret på neqo-projektet udviklet af Mozilla, som leverer en klient- og serverimplementering til QUIC-protokollen. Komponentkoden til HTTP/3- og QUIC-understøttelse er skrevet i Rust. For at kontrollere, om HTTP/3 er aktiveret, giver about:config muligheden "network.http.http3.enabled". Fra klientsoftware er der også tilføjet eksperimentel understøttelse af HTTP/3 til Chrome og curl, og til servere er den tilgængelig i nginx, samt i form af et nginx-modul og en testserver fra Cloudflare. På hjemmesiden er der allerede HTTP/3-understøttelse på Google- og Facebook-servere.
HTTP/3-protokollen er stadig på udkast til specifikationsstadiet og er endnu ikke fuldt standardiseret af IETF. HTTP/3 kræver klient- og serverunderstøttelse for den samme version af QUIC-draft-standarden og HTTP/3, som er angivet i Alt-Svc-headeren (Firefox understøtter spec-drafts 27 til 32).
HTTP/3 definerer brugen af QUIC-protokollen som en transport for HTTP/2. QUIC (Quick UDP Internet Connections)-protokollen er blevet udviklet af Google siden 2013 som et alternativ til TCP+TLS-kombinationen til nettet, der løser problemer med lange opsætnings- og forhandlingstider for forbindelser i TCP og eliminerer forsinkelser, når pakker går tabt under data. overførsel. QUIC er en udvidelse af UDP-protokollen, der understøtter multipleksing af flere forbindelser og giver krypteringsmetoder svarende til TLS/SSL. Under udviklingen af IETF-standarden blev der foretaget ændringer i protokollen, hvilket førte til fremkomsten af to parallelle grene, en til HTTP/3, og den anden understøttet af Google (Chrome understøtter begge muligheder).
Nøglefunktioner ved QUIC:
- Høj sikkerhed svarende til TLS (i det væsentlige giver QUIC mulighed for at bruge TLS over UDP);
- Flowintegritetskontrol, forhindrer pakketab;
- Evnen til øjeblikkeligt at etablere en forbindelse (0-RTT, i ca. 75 % af tilfældene kan data transmitteres umiddelbart efter afsendelse af forbindelsesopsætningspakken) og give minimale forsinkelser mellem afsendelse af en anmodning og modtagelse af et svar (RTT, Round Trip Time);
- Brug af et andet sekvensnummer ved gentransmission af en pakke, hvilket undgår tvetydighed i at identificere modtagne pakker og slipper af med timeouts;
- Tab af en pakke påvirker kun leveringen af den strøm, der er knyttet til den, og stopper ikke leveringen af data i parallelle strømme, der transmitteres gennem den aktuelle forbindelse;
- Fejlretningsfunktioner, der minimerer forsinkelser på grund af gentransmission af tabte pakker. Brug af specielle fejlkorrektionskoder på pakkeniveau for at reducere situationer, der kræver gentransmission af mistede pakkedata.
- Kryptografiske blokgrænser er tilpasset QUIC-pakkegrænser, hvilket reducerer virkningen af pakketab på afkodning af indholdet af efterfølgende pakker;
- Ingen problemer med blokering af TCP-køer;
- Understøttelse af forbindelsesidentifikator, som reducerer den tid, det tager at etablere en genforbindelse for mobile klienter;
- Mulighed for tilslutning af avancerede mekanismer til kontrol af forbindelsesoverbelastning;
- Bruger per-direction-gennemløbsprognoseteknikker for at sikre, at pakker sendes med optimale hastigheder, hvilket forhindrer dem i at blive overfyldte og forårsage pakketab;
- Betydelig stigning i ydeevne og gennemløb sammenlignet med TCP. For videotjenester som f.eks. YouTube har QUIC vist sig at reducere tilbagesendelsesoperationer, når man ser videoer med 30 %.
Kilde: opennet.ru