TCP versus UDP: verbindingsopbouw, betrouwbaarheid, volgorde, congestiebeheersing, headergrootte, latentie en toepassingen

TCP en UDP zijn allebei protocollen van de transportlaag die boven op IP draaien en poortnummers gebruiken om applicaties te identificeren. Voordat TCP data verstuurt, bouwt het met een three-way handshake een verbinding op; het bevestigt de aflevering met bevestigingen (ACK's), verstuurt verloren data opnieuw en geeft de data aan de ontvangende applicatie in de volgorde waarin ze is verzonden. Het past ook de hoeveelheid die het verstuurt aan aan de vrije bufferruimte van de ontvanger (flowcontrol) en aan congestie in het netwerk (congestiebeheersing). UDP doet niets van dit alles: het verstuurt data eenvoudigweg als datagrammen, dus de header is klein en er hoeft niet te worden gewacht voor het verzenden. Gebruik TCP wanneer betrouwbare aflevering belangrijk is, en UDP wanneer een lage vertraging belangrijk is en de applicatie zelf regelt wat ze verder nodig heeft.

KenmerkTCPUDP
VerbindingsopbouwVerbindingsgericht: data volgt na een three-way handshake (SYN → SYN+ACK → ACK), dus er is een initiële wachttijd van één round trip (RTT)Verbindingsloos: data kan meteen worden verzonden, zonder opbouw
Bevestiging en hertransmissieAflevering wordt bevestigd met ACK's; verlies wordt gedetecteerd via een retransmission-time-out of dubbele ACK's, en de verloren data wordt opnieuw verzondenGeen bevestiging of hertransmissie; verloren data blijft verloren
VolgordeMet volgnummers wordt data in de verzendvolgorde gezet en afgeleverd; duplicaten worden verwijderdData wordt afgeleverd in volgorde van aankomst; verwisseling en duplicatie kunnen voorkomen
Grenzen van berichtenEen bytestroom zonder grenzen; de applicatie bepaalt waar berichten beginnen en eindigenElke verzending wordt één datagram, dus berichtgrenzen blijven behouden
Flowcontrol en congestiebeheersingJa: het ontvangstvenster voorkomt dat de buffer van de ontvanger overloopt, en het congestievenster past de verzonden hoeveelheid aan aan de congestieGeen; indien nodig past de applicatie zelf haar verzendsnelheid aan
Headergrootte20 bytes zonder opties (tot 60 bytes met opties)8 bytes (bron- en bestemmingspoort, lengte, checksum)
LatentieDe verbindingsopbouw kost één round trip; na een verlies wacht ook latere data tot de hertransmissie aankomtGeen opbouw en geen wachten op hertransmissies, dus de vertraging is laag, maar er kan data ontbreken
Soorten bestemmingenAlleen één-op-één (unicast)Unicast, en ook broadcast en multicast
Typische toepassingenHet web via HTTP/1.1 en HTTP/2, videolevering via HTTP, e-mail (SMTP), SSH, bestandsoverdrachtDNS-query's, DHCP, realtime verkeer zoals spraakoproepen en livevideo, onlinegames, en QUIC dat door HTTP/3 wordt gebruikt

De getalswaarden zijn typische ordegroottes en variëren per procesgeneratie en product.

Wanneer welke variant?

TCP
Wanneer ontbrekende of verwisselde data een probleem zou zijn. Het is de standaard voor de meeste applicaties: webpagina's, bestanden, e-mail, databaseverbindingen en meer.
UDP
Voor realtime verkeer waarbij het beter is een beetje te verliezen dan te laat te komen, en voor korte uitwisselingen met slechts één query en één antwoord. Het wordt ook gebruikt voor broadcast en multicast, en wanneer de applicatie haar eigen betrouwbaarheid opbouwt, zoals QUIC doet.

Veelgestelde vragen

Moet UDP worden vermeden omdat het onbetrouwbaar is?

Dat hangt af van het doel. Wat UDP weglaat, zijn afleveringsbevestiging en hertransmissie, volgorde en snelheidsaanpassing. Als die niet nodig zijn, of de applicatie ze op haar eigen manier wil regelen, past UDP goed. Bij een spraakoproep is geluid dat te laat aankomt bijvoorbeeld nutteloos, dus doorgaan is beter dan wachten op een hertransmissie. Applicaties die grote hoeveelheden data via UDP versturen, moeten wel zelf hun verzendsnelheid regelen om het netwerk niet te overbelasten.

Waarom is QUIC boven op UDP gebouwd?

QUIC (RFC 9000) is een transportprotocol dat hertransmissie, volgorde, congestiebeheersing en TLS 1.3-versleuteling combineert. Een gloednieuw protocol dat direct over IP wordt vervoerd, komt vaak niet door NAT's en firewalls onderweg en zou ook moeten wachten op ondersteuning door besturingssystemen. Door op UDP te bouwen, kan het door bestaande netwerken en kan het in de applicatie worden geïmplementeerd en bijgewerkt. HTTP/3 draait over QUIC.

Gebruikt DNS alleen UDP?

Gewone naamopvragingen gebruiken UDP-poort 53 en worden afgehandeld met één query en één antwoord. Wanneer een antwoord te groot is om via UDP te versturen, en bij zoneoverdrachten, wordt TCP gebruikt, en DNS-implementaties moeten ook TCP ondersteunen (RFC 7766).

Hoe verschillen flowcontrol en congestiebeheersing bij TCP?

Flowcontrol voorkomt dat de buffer van de ontvanger overloopt: de ontvanger meldt zijn vrije ruimte als ontvangstvenster. Congestiebeheersing voorkomt dat het netwerk onderweg wordt overbelast: de zender leidt congestie af uit pakketverlies en vergelijkbare signalen en vergroot of verkleint zijn congestievenster. De hoeveelheid die werkelijk kan worden verzonden, wordt bepaald door het kleinste van de twee vensters.

Test uw begrip

Tot welke laag van het TCP/IP-model met vier lagen behoren TCP en UDP?

  1. AApplicatielaag
  2. BInternetlaag
  3. CTransportlaag
Antwoord en toelichting tonen

Antwoord: C. Transportlaag

Het TCP/IP-model wordt van onder naar boven beschreven met vier lagen: de linklaag (netwerkinterfacelaag), de internetlaag, de transportlaag en de applicatielaag. TCP en UDP zijn protocollen van de transportlaag; met poortnummers onderscheiden ze voor welke applicatie op een eindapparaat het verkeer bestemd is. IP in de internetlaag zorgt ervoor dat pakketten van eindapparaat naar eindapparaat worden bezorgd. HTTP en DNS zijn protocollen van de applicatielaag. Vergeleken met het OSI-referentiemodel komt de transportlaag overeen met laag 4 en de internetlaag met laag 3.

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.

Wat is bij de three-way handshake waarmee een TCP-verbinding wordt opgebouwd de juiste volgorde van de uitgewisselde pakketten?

  1. ASYN → ACK → FIN
  2. BACK → SYN → SYN+ACK
  3. CSYN → SYN+ACK → ACK
Antwoord en toelichting tonen

Antwoord: C. SYN → SYN+ACK → ACK

Bij de three-way handshake vraagt de client eerst met een SYN om een verbinding en deelt hij het eerste nummer mee van de gegevens die hij zal sturen (zijn initiële volgnummer). De server antwoordt met een SYN+ACK: hij bevestigt (ACK) de ontvangst daarvan en deelt tegelijk zijn eigen initiële volgnummer mee. Ten slotte stuurt de client een ACK terug, en zijn beide richtingen klaar. Door in drie uitwisselingen de nummers in beide richtingen te bevestigen, worden onder meer foutieve verbindingen door laat aangekomen oude pakketten voorkomen. Daardoor kost het bij TCP minstens één rondetijd (RTT) voordat gegevens kunnen worden verzonden. FIN wordt gebruikt om een verbinding te beëindigen.

  1. Wat is bij de flowcontrol van TCP het doel ervan dat de ontvanger zijn venstergrootte (ontvangstvenster) aan de zender meldt?
  2. Welke beschrijving van het basisidee van congestiebeheersing bij TCP is juist?
  3. Wat is voor een TCP-zender de aanleiding om een segment als verloren te beschouwen en opnieuw te verzenden?

Oefenvragen over Basis van computernetwerken

Belangrijke termen uitgelegd

Three-way handshake (drieweghandshake)
De procedure waarmee een TCP-verbinding wordt opgebouwd. Drie uitwisselingen, de SYN van de client, de SYN+ACK van de server en de ACK van de client, bevestigen het initiële volgnummer van elke kant.
Poortnummer
Getal van 0 tot 65535 waarmee TCP en UDP aangeven voor welke applicatie op een apparaat het verkeer bestemd is. De poorten 0–1023, zoals 80 voor HTTP, 443 voor HTTPS en 53 voor DNS, heten well-known ports.
OSI-referentiemodel
Model dat de communicatiefuncties indeelt in zeven lagen: fysieke laag, datalinklaag, netwerklaag, transportlaag, sessielaag, presentatielaag en applicatielaag. Het dient als gemeenschappelijke taal om de rol van elke laag afzonderlijk te bekijken.
DNS (Domain Name System)
Systeem dat gedistribueerd wordt beheerd door servers over de hele wereld en domeinnamen zoals www.example.com koppelt aan de IP-adressen die voor de communicatie worden gebruikt.
DHCP (Dynamic Host Configuration Protocol)
Protocol dat apparaten die met een netwerk verbinding maken automatisch en voor beperkte tijd een IP-adres, subnetmasker, standaardgateway, DNS-servers en andere instellingen toekent.
TLS (Transport Layer Security)
Protocol dat communicatie versleutelt, manipulatie detecteert en servers met certificaten authenticeert. HTTPS is HTTP beveiligd met TLS.
HTTP (Hypertext Transfer Protocol)
Het protocol op de applicatielaag voor het uitwisselen van HTML, afbeeldingen en gegevens tussen onder meer webbrowsers en webservers. Een client verstuurt een verzoek dat bestaat uit een methode, een URL, headers en een body, en de server geeft een antwoord terug dat bestaat uit een statuscode, headers en een body. Als protocol is HTTP toestandsloos, dus een toestand zoals een login wordt bewaard met cookies en vergelijkbare middelen. HTTP/1.1 gebruikt een tekstformaat en persistente verbindingen, HTTP/2 multiplext meerdere streams over één TCP-verbinding, en HTTP/3 werkt met QUIC over UDP. HTTP die met TLS is beveiligd, heet HTTPS.

Verwante vergelijkingen