http/3

Eind 2018 liet de Internet Engineering Task Force (IETF) weten dat het experimentele HTTP-over-QUIC protocol voortaan als HTTP/3 door het leven gaat. Zo wordt het normaliter de derde officiële versie van het http-protocol waarop het wereldwijde web steunt. Dat vergt wat uitleg. En een antwoord op vragen als: Wat is HTTP/3? Hoe verschilt HTTP/3 van HTTP/2 en HTTP/1.1? En wat betekent het voor jou? We geven je stap per stap alle antwoorden.

De aankondiging van HTTP/3 was belangrijk nieuws, al kijken de experts van het IETF al ver vooruit. HTTP/3 mag dan wel op de agenda staan voor 2019, vandaag zijn wereldwijd nog lang niet alle websites al overgestapt op het HTTP/2 protocol dat in 2015 werd gelanceerd. Het zal dus nog een hele tijd duren voor HTTP/3 ook effectief door iedereen gebruikt zal worden. Maar natuurlijk is het belangrijk om te weten wat de toekomst in petto heeft.

Wat is HTTP/3?

HTTP/3 is de derde officiële versie wordt van het HTTP-protocol, na de lancering van HTTP/1.1 (in 1999) en HTTP/2 (in 2015). HTTP staat daarbij voor Hypertext Transfer Protocol, oftewel het protocol dat gebruikt wordt om digitale gegevens uit te wisselen op het wereldwijde web. Voor deze derde versie wordt gebruik gemaakt van het QUIC protocol van Google. Wat ons bij de vraag brengt: wat is QUIC? Voor we dat kunnen uitleggen, moeten we eerst nog even twee andere protocollen die nu gebruikt worden van naderbij bekijken, met name TCP en UDP.

Wat is TCP?

TCP, oftewel het Transmission Control Protocol, is een verbindingsgeoriënteerd protocol dat veel gebruikt wordt voor gegevensoverdracht over netwerkverbindingen op het internet, LANs en thuisnetwerken. Het wordt universeel gebruikt omdat het eenvoudig is en zorgt voor stabiele, betrouwbare netwerkverbindingen.

TCP heeft als belangrijk voordeel dat het gegevens in een datastroom kan versturen en daarbij de garantie levert dat de gegevens aankomen zoals ze verstuurd werden. Eventuele communicatiefouten, zowel in de gegevens zelf als in de volgorde van de gegevens kunnen worden opgevangen. Hierdoor hoeft een applicatie die TCP als transmissieprotocol gebruikt, geen rekening te houden met de onderliggende netwerkarchitectuur en eventuele fouten in de communicatie.

Het grote nadeel is dat de geleverde garantie zorgt voor de nodige vertraging. Om een ​​TCP-verbinding te starten, wordt een driewegs-handdruk uitgevoerd. Dit betekent extra trips (netwerkpakketten die heen en weer verzonden worden) voor elke startverbinding. Dat zorgt voor aanzienlijke vertragingen voor elke nieuwe verbinding. Daarom gebruikt men TCP vooral als de overdracht zeker en compleet moet zijn (bij het overdagen van bestanden bijvoorbeeld), maar wordt UDP gebruikt als de overdracht vooral snel moet zijn (DNS).

Wat is UDP?

UP, oftewel User Datagram Protocol, is een van de andere basisprotocollen van het internet. Het biedt een sneller alternatief voor TCP, maar is tegelijk onbetrouwbaarder. UDP biedt namelijk geen garantie dat de gegevens daadwerkelijk aankomen. Wanneer je een bericht verzendt via UDP wordt er automatisch aangenomen dat het op zijn bestemming aankomt.

UDP wordt veel gebruikt bij toepassingen waar het snel overdragen van de gegevens en een korte reactietijd zeer belangrijk is, en het minder erg is dat er gegevens verloren kunnen gaan. Denk bijvoorbeeld aan SNMP of DNS. Nu je weet wat TCP en UDP zijn, kunnen we kijken naar QUIC.

Wat is QUIC?

QUIC staat voor Quick UDP Internet Connections en is de poging van Google om het TCP-protocol te herschrijven als een verbeterde technologie die HTTP/2, TCP, UDP en TLS (voor encryptie) combineert met een aantal andere zaken. Google wil dat QUIC op termijn TCP vervangt als het nieuwe protocol voor het versturen van gegevens via internet, omdat QUIC sneller en veiliger is vanwege de gecodeerde standaardimplementatie.

Hoe werkt QUIC?

QUIC kan een verbinding starten en onderhandelen over alle TLS (HTTPs)-parameters in een of twee pakketten (afhankelijk of het gaat om een nieuwe server of een bekende host waarmee je verbinding maakt). Dit maakt natuurlijk een groot verschil voor de eerste verbinding en het begin van het downloaden van een pagina. QUIC combineert op die manier de snelheid van UDP met de betrouwbaarheid van TCP (door een garantie toe te voegen via forward error correction).

QUIC wil dus gelijkwaardig zijn met een onafhankelijke TCP-verbinding, maar met veel kortere latentie. Als de functionaliteit van QUIC bewezen is, kan die migreren naar een latere versie van TCP. Het TCP-protocol is immers behoorlijk streng gereguleerd. De implementatie bevindt zich in de kernel van Windows en Linux, het zit in de besturingssystemen van smartphones, … het zit vrijwel in elk apparaat dat vandaag online verbindt.  Een verbetering van de manier waarop TCP werkt ligt dus moeilijk, omdat elk van die TCP-implementaties moet volgen.

UDP aan de andere kant is relatief eenvoudig in ontwerp. Het is sneller om een ​​nieuw protocol bovenop UDP te implementeren. Zo kan je dus sneller oplossingen testen voor netwerkverzadiging, stroomblokkering, enz. Dat brengt de ontwikkeltijd terug naar maanden in plaats van jaren of decennia.

Waar past QUIC?

Als je naar de lagen kijkt die deel uitmaken van een moderne HTTP-verbinding, vervangt QUIC de TLS-stack en delen van HTTP/2. Het QUIC-protocol implementeert zijn eigen cryptolaag en maakt geen gebruik van de bestaande TLS 1.2.

QUIC

Het vervangt TCP door UDP en bovenop QUIC is een kleinere HTTP/2 API die wordt gebruikt om te communiceren met externe servers. De reden dat deze kleiner is, is omdat het multiplexen en verbindingsbeheer al door QUIC wordt afgehandeld. Wat overblijft, is een interpretatie van het HTTP-protocol.

Wat betekent dit voor jou?

Dat het internet een stukke sneller en veiliger zal worden.

Als je het geluk hebt om een ​​snelle internetverbinding te hebben, zal de latentie tussen jou en een externe server tussen de 10 en 50 milliseconden liggen. Elk pakket dat je via het netwerk verzendt, zal zoveel tijd nodig hebben om ontvangen te worden. Daar zal je niet veel verschil merken. Het voordeel van HTTP/3 zal vooral merkbaar zijn wanneer je met een server op een ander continent praat of via een mobiele provider die Edge, 3G / 4G / LTE gebruikt. Om een ​​server vanuit Europa in de VS te bereiken, moet je de Atlantische oceaan oversteken. Je krijgt meteen een latentietijd van +100 milliseconden of hoger, puur vanwege de afstand die moet worden afgelegd. Mobiele netwerken hebben dezelfde latentie: het is niet ongewoon dat er een wachttijd van 50 tot 150 milliseconden zit tussen je mobiele telefoon en een externe server, alleen vanwege de radiofrequenties en intermediaire netwerken die moeten worden gebruikt.

Daar zal QUIC zorgen voor een fikse daling van je wachttijd. Een ander interessant aspect van QUIC is dat de verbinding altijd versleuteld is. QUIC beschermt ook tegen ip spoofing, het vervalsen van het ip-adres van de zender.

Dit wordt overigens de tweede door Google ontwikkelde experimentele technologie om een ​​officiële HTTP-protocolupgrade te worden nadat de SPDY-technologie van Google de basis van HTTP/2 is geworden.

Gerelateerde berichten
SACK Panic

Wat is SACK Panic en wat doen we eraan?

Elke bug krijgt tegenwoordig een coole naam i.p.v. een saai nummer en met de recente ontdekkingen van onderzoekers bij Netflix is dit niet anders. […]

Lees meer

Nucleus stand op Sound of Science festival

Behind the scenes van onze "Sound of Science" stand

Een tweetal weken geleden vond in Mortsel het Sound of Science festival plaats. Geen focus op muziek, maar wel op iets wat we minstens […]

Lees meer

mds bugs

Wat zijn de nieuwe MDS CPU-bugs en wat doen wij eraan?

Je herinnert je misschien nog dat begin vorig jaar er een heel aantal veiligheidsproblemen zijn gevonden in de processoren van Intel. Helaas hebben gisteravond […]

Lees meer