IETF (Internet Engineering Task Force), der arbejder med udviklingen af internetprotokoller og arkitektur, har afsluttet udformningen af RFC for HTTP/3.0 og offentliggjort de relaterede specifikationer med identifikatorerne RFC 9114 (protokol) og RFC 9204 (komprimeringsteknologi for HTTP/3, kaldet QPACK). Specifikationen for HTTP/3.0 har fået status som 'Foreslået standard', hvorefter arbejdet med at give RFC'en status som udkaststandard (Draft Standard) vil begynde, hvilket i praksis betyder fuld stabilisering af protokollen og hensyntagen til alle fremsatte bemærkninger. Samtidig er der offentliggjort opdaterede versioner af specifikationerne for HTTP/1.1 (RFC 9112) og HTTP/2.0 (RFC 9113), samt dokumenter, der definerer semantikken i HTTP-anmodninger (RFC 9110) og HTTP-hoveder til cachekontrol (RFC 9111).
HTTP/3-protokollen definerer brugen af QUIC (Quick UDP Internet Connections) som transport for HTTP/2. QUIC er en overbygning på UDP-protokollen, der understøtter multiplexing af flere forbindelser og leverer krypteringsmetoder svarende til TLS/SSL. Protokollen blev skabt i 2013 af Google som et alternativ til TCP+TLS forbindelsen til web, der løser problemer med lang tid til etablering og forhandling af forbindelser i TCP og eliminerer forsinkelser ved pakketab under dataoverførsel.

I øjeblikket er understøttelse af QUIC og HTTP/3.0 allerede implementeret i alle populære web-browsere (i Chrome, Firefox og Edge er HTTP/3 aktiveret som standard, mens det i Safari kræver aktivering af indstillingen 'Advanced > Experimental Features > HTTP/3'). På serversiden er implementeringer af HTTP/3 tilgængelige for nginx (i en separat gren og som et særskilt modul), Caddy, IIS og LiteSpeed. Understøttelse af HTTP/3 leveres også af Cloudflare's indholdsleveringsnetværk.
Hovedfunktionerne ved QUIC:
- Høj sikkerhed svarende til TLS (faktisk giver QUIC mulighed for brug af TLS oven på UDP);
- Overvågning af strømmens integritet, der forhindrer tab af pakker;
- Mulighed for straks at etablere en forbindelse (0-RTT, i cirka 75% af tilfældene kan data overføres umiddelbart efter, at forbindelsespakken er sendt) og sikre minimale forsinkelser mellem anmodningens afsendelse og modtagelsen af svar (RTT, Round Trip Time);

- Brug af et andet sekvensnummer ved genoverførsel af pakken, hvilket gør det muligt at undgå tvetydighed ved bestemmelse af modtagne pakker og eliminere timeouts;
- Pakketab påvirker kun leveringen af den tilknyttede strøm og stopper ikke dataoverførslen i parallelt overførte strømme gennem den aktuelle forbindelse;
- Fejlkorrektionsmidler, der minimerer forsinkelser på grund af genoverførsel af tabte pakker. Brug af specialiserede fejlkorrektionskoder på pakkeniveau for at reducere situationer, der kræver genoverførsel af data fra en tabt pakke.
- Grænserne for kryptografiske blokke er justeret med grænserne for QUIC-pakker, hvilket reducerer tabspakkernes indvirkning på afkodningen af indholdet i efterfølgende pakker;
- Ingen problemer med TCP-køblokering;
- Understøttelse af forbindelsesidentifikatoren, der reducerer tiden til at etablere en genforbindelse for mobile klienter;
- Mulighed for at tilslutte udvidede mekanismer til overvågning af forbindelsesoverbelastning;
- Brug af kapacitetsprognoseteknikker i hver retning for at sikre optimal intensitet i pakkeafsendelsen, hvilket forhindrer at glide ind i en overbelastningssituation, hvor pakkemister forekommer;
- Bemærkelsesværdige præstations- og kapacitetsforøgelser sammenlignet med TCP. For videotjenester såsom YouTube har anvendelsen af QUIC vist sig at reducere genbufferingsoperationer med 30% under videovisning.
Bland ændringerne i HTTP/1.1-specifikationen kan et forbud mod separat brug af carriage return-tegn (CR) uden for indholdskroppen nævnes, dvs. i protokollelementer kan CR-symbolet kun anvendes sammen med linjeskift-symbolet (CRLF). Algoritmen til opbygning af chunked-anmodninger er blevet forbedret for at forenkle opdelingen af vedhæftede felter og sektionen med overskrifter. Der er tilføjet anbefalinger til behandling af tvetydigt indhold for at blokere angreb af typen "HTTP Request Smuggling", der gør det muligt at trænge ind i indholdet af andre brugeres anmodninger i strømmen mellem frontend og backend.
I opdateringen af HTTP/2.0-specifikationen er understøttelsen af TLS 1.3 klart defineret. Prioriteringsbestemmelsen og de tilknyttede felter i overskrifterne er flyttet til kategorien forældet. Mekanismen til opdatering af forbindelsen fra HTTP/1.1, der ikke har fået udbredelse, er blevet erklæret forældet. Kravene til kontrol af feltnavne og værdier er blevet reduceret. Nogle tidligere reserverede frame-typer og parametre foreslås til brug. Forbudte overskrifter relateret til forbindelsen er blevet mere præcist defineret.
Kilde: opennet.ru

