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.
| Kenmerk | TCP | UDP |
|---|---|---|
| Verbindingsopbouw | Verbindingsgericht: 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 hertransmissie | Aflevering wordt bevestigd met ACK's; verlies wordt gedetecteerd via een retransmission-time-out of dubbele ACK's, en de verloren data wordt opnieuw verzonden | Geen bevestiging of hertransmissie; verloren data blijft verloren |
| Volgorde | Met volgnummers wordt data in de verzendvolgorde gezet en afgeleverd; duplicaten worden verwijderd | Data wordt afgeleverd in volgorde van aankomst; verwisseling en duplicatie kunnen voorkomen |
| Grenzen van berichten | Een bytestroom zonder grenzen; de applicatie bepaalt waar berichten beginnen en eindigen | Elke verzending wordt één datagram, dus berichtgrenzen blijven behouden |
| Flowcontrol en congestiebeheersing | Ja: het ontvangstvenster voorkomt dat de buffer van de ontvanger overloopt, en het congestievenster past de verzonden hoeveelheid aan aan de congestie | Geen; indien nodig past de applicatie zelf haar verzendsnelheid aan |
| Headergrootte | 20 bytes zonder opties (tot 60 bytes met opties) | 8 bytes (bron- en bestemmingspoort, lengte, checksum) |
| Latentie | De verbindingsopbouw kost één round trip; na een verlies wacht ook latere data tot de hertransmissie aankomt | Geen opbouw en geen wachten op hertransmissies, dus de vertraging is laag, maar er kan data ontbreken |
| Soorten bestemmingen | Alleen één-op-één (unicast) | Unicast, en ook broadcast en multicast |
| Typische toepassingen | Het web via HTTP/1.1 en HTTP/2, videolevering via HTTP, e-mail (SMTP), SSH, bestandsoverdracht | DNS-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.