Wat is QUIC?

Protocol van de transportlaag dat over UDP loopt. Het heeft versleuteling met TLS 1.3 ingebouwd en combineert verbindingsopbouw en sleuteluitwisseling in één rondgang. Het multiplext meerdere streams in één verbinding, en het verlies van een pakket in één stream houdt de andere niet op. Het is de basis van HTTP/3 en werd in 2021 door de IETF gestandaardiseerd als RFC 9000.

Japanse benaming: QUIC

“QUIC” komt voor in 3 oefenvragen uit 2 onderwerpen, bijv. Basis van computernetwerken, Basis van webtechnologie.

Vakgebied: Basis van computernetwerken

Waarom bovenop UDP bouwen

Een nieuw transportprotocol dat rechtstreeks op IP zou worden geplaatst, zou door veel NAT's en firewalls onderweg worden tegengehouden, omdat die pakketten van protocollen die ze niet herkennen niet doorlaten. TCP is bovendien in de kernels van besturingssystemen geïmplementeerd, dus verbeteringen hebben veel tijd nodig om apparaten overal te bereiken. QUIC loopt over UDP, dat vrijwel overal doorkomt, en draait binnen applicaties en bibliotheken, zodat het even snel kan worden verbeterd als browsers worden bijgewerkt. Het versleutelt ook het grootste deel van zijn header, wat voorkomt dat apparaten onderweg afhankelijk worden van de details ervan en toekomstige wijzigingen blokkeren.

Snelle opbouw en multiplexen van streams

Met TCP en TLS volgt de TLS-handshake op de three-way handshake van TCP; QUIC voegt de twee samen, zodat er na één rondgang gegevens kunnen stromen. Naar een server waarmee al eerder verbinding was, kan het gegevens al in het allereerste pakket meesturen (0-RTT), al alleen voor verzoeken die geen kwaad kunnen als ze worden herhaald. HTTP/2 vervoert meerdere streams over één TCP-verbinding, dus één verloren pakket houdt alle streams op; QUIC ordent gegevens per stream, zodat een verlies alleen de stream treft waartoe het behoort.

Verbindings-ID's en herstel na verlies

Een TCP-verbinding wordt geïdentificeerd door IP-adressen en poortnummers, dus ze wordt verbroken wanneer een smartphone van Wi-Fi naar een mobiel netwerk overschakelt. QUIC identificeert verbindingen met verbindings-ID's, zodat een verbinding een adreswijziging kan overleven (verbindingsmigratie). Verliesdetectie, hertransmissie en congestiebeheersing gebeuren allemaal binnen QUIC, en omdat de nummers van pakketten nooit worden hergebruikt, is een hertransmissie van het origineel te onderscheiden en kan de RTT nauwkeurig worden gemeten. Anderzijds verbruikt het doorgaans meer CPU dan TCP, dat profiteert van uitgebreide ondersteuning in de kernel en de netwerkkaart.

Nu oefenen: vragen over QUIC

Welke uitspraak over UDP is juist?

  1. AHet bouwt geen verbinding op en regelt geen hertransmissie of volgorde, waardoor de header klein is en er vóór het verzenden niet gewacht hoeft te worden
  2. BHet bouwt een verbinding op, verzendt gegevens die niet aankwamen opnieuw en zet ze bij de ontvanger weer in de juiste volgorde
  3. CHet levert gegevens alleen op basis van MAC-adressen bij het doelapparaat af, zonder IP-adressen
Antwoord en toelichting tonen

Antwoord: A. Het bouwt geen verbinding op en regelt geen hertransmissie of volgorde, waardoor de header klein is en er vóór het verzenden niet gewacht hoeft te worden

UDP is een licht protocol dat bovenop IP alleen poortnummers en een eenvoudige foutcontrole (checksum) toevoegt; de header is 8 bytes (die van TCP is zonder opties 20 bytes). Er is geen verbindingsopbouw, geen ontvangstbevestiging en geen hertransmissie, dus het wordt gebruikt voor spraakgesprekken en livevideo, waar een beetje verlies beter is dan vertraging, en voor DNS, dat met één vraag en één antwoord toekomt. Als betrouwbaarheid nodig is, zorgt de applicatie daarvoor; QUIC, dat door HTTP/3 wordt gebruikt, implementeert bijvoorbeeld hertransmissie en versleuteling bovenop UDP. Verbindingsopbouw, hertransmissie en volgorderegeling zijn taken van TCP.

Een client maakt een nieuwe HTTPS-verbinding (TLS 1.3 over TCP) met een webserver met een rondetijd (RTT) van 100 ms. Welke waarde ligt het dichtst bij de tijd tot het antwoord op het eerste verzoek begint binnen te komen? De DNS-naamresolutie is al gedaan; verwaarloos de verwerkingstijd van de server en de overdrachtstijd van de gegevens.

  1. AOngeveer 100 ms
  2. BOngeveer 300 ms
  3. COngeveer 200 ms
Antwoord en toelichting tonen

Antwoord: B. Ongeveer 300 ms

Eerst kost de three-way handshake van TCP één rondgang (de client kan zijn eerste TLS-bericht samen met de laatste ACK versturen). Daarna kost de handshake van TLS 1.3 één rondgang, en vervolgens kosten het HTTP-verzoek en het antwoord nog één rondgang, samen drie rondgangen: 3 × 100 = 300 ms. Met TLS 1.2 kost de sleuteluitwisseling twee rondgangen, wat vier rondgangen of 400 ms geeft. Deze wachttijd hangt af van het aantal RTT's, dat door de afstand wordt bepaald, dus meer bandbreedte op de verbinding maakt hem niet korter. QUIC, dat door HTTP/3 wordt gebruikt, voegt de handshakes van transport en cryptografie samen tot één rondgang en biedt bij een nieuwe verbinding met dezelfde server ook een manier om al in de eerste rondgang gegevens te sturen (0-RTT).

Veelgestelde vragen

Wat is het verschil tussen QUIC en TCP?

Beide leveren betrouwbare, geordende aflevering, maar QUIC loopt over UDP en heeft versleuteling met TLS 1.3 ingebouwd. Het bouwt verbindingen sneller op (één rondgang, of nul bij hervatten), vervoert meerdere onafhankelijke streams in één verbinding en houdt een verbinding in stand wanneer het IP-adres verandert.

Hoe hangen HTTP/3 en QUIC samen?

HTTP/3 is de versie van HTTP die over QUIC loopt. Het multiplexen van streams en de versleuteling die HTTP/2 van TCP en TLS kreeg, worden nu door QUIC geleverd, en daarom gebruikt HTTP/3-verkeer normaal UDP-poort 443.

“QUIC” in de toelichting

Vragen met “QUIC” (3)

  1. Welke uitspraak over UDP is juist?
  2. Een client maakt een nieuwe HTTPS-verbinding (TLS 1.3 over TCP) met een webserver met een rondetijd (RTT) van 100 ms. Welke waarde ligt het dichtst bij de tijd tot het antwoord op het eerste verzoek begint binnen te komen? De DNS-naamresolutie is al gedaan; verwaarloos de verwerkingstijd van de server en de overdrachtstijd van de gegevens.
  3. Welke beschrijving van HTTP/2 en HTTP/3 is juist?

Verwante termen

TCP (Transmission Control Protocol) HTTP (Hypertext Transfer Protocol) UDP (User Datagram Protocol) DNS (Domain Name System) IP (internetprotocol) Poortnummer ARQ (automatic repeat request) HTTPS TLS (Transport Layer Security) RTT (round-trip time)

Naar de woordenlijst