Wat is UDP en hoe verschilt het van TCP?
Auteur: Redactie Domeny.ForSale Gepubliceerd
In het kort: UDP is een netwerkprotocol dat kleine hoeveelheden gegevens verstuurt zonder eerst een verbinding tot stand te brengen. Het protocol bevestigt zelf geen ontvangst, verstuurt verloren pakketten niet opnieuw en garandeert niet dat ze in de juiste volgorde aankomen. Het is nuttig wanneer actuele gegevens en een lage vertraging belangrijker zijn dan het terughalen van elk ontbrekend stukje gegevens — bijvoorbeeld bij spraakgesprekken en online games.
Hoe werkt UDP en wat is een datagram?
UDP, voluit User Datagram Protocol, is een transportlaagprotocol: het bepaalt hoe applicaties via het netwerk gegevens uitwisselen. Het werkt boven op IP, het protocol dat verantwoordelijk is voor de adressering en verzending van pakketten tussen apparaten. IP helpt de juiste host te bereiken, terwijl UDP poortnummers gebruikt om de gegevens naar de juiste dienst of applicatie te sturen.
Een afzonderlijk UDP-bericht heet een datagram. Het bevat applicatiegegevens en een header met informatie zoals de bronpoort, de doelpoort en de lengte van het bericht. De UDP-header is 8 bytes groot; voor verzending via het netwerk zijn ook headers van andere lagen nodig, waaronder IP.
De afzender verstuurt een datagram naar een gekozen IP-adres en poortnummer. UDP stemt de verbinding niet vooraf af met de ontvanger via een zogenoemde handshake. Dat betekent echter niet dat een applicatie die UDP gebruikt geen aanmelding, sessies of een eigen procedure voor het afstemmen van de communicatie kan hebben.
UDP houdt berichten afzonderlijk: twee verzonden datagrammen worden niet samengevoegd tot één stroom bytes. De ontvanger kan ze echter in omgekeerde volgorde ontvangen, een duplicaat krijgen of geen van beide ontvangen.
Wat garandeert UDP niet?
Als een applicatie een datagram succesvol verstuurt, bewijst dat niet dat de ontvanger het heeft ontvangen. Een pakket kan onder meer verloren gaan door netwerkoverbelasting, een firewall of het ontbreken van een programma dat op de betreffende poort luistert. UDP zelf lost zo’n situatie niet op.
Het protocol biedt ook geen stroomregeling, waarbij de verzendsnelheid wordt afgestemd op wat de ontvanger aankan, en geen congestiecontrole om netwerkoverbelasting te beheersen. Als een applicatie die functies nodig heeft, moet ze aanvullende mechanismen gebruiken. Steeds meer gegevens versturen zonder op verliezen te reageren, kan de communicatie verslechteren in plaats van versnellen.
UDP versleutelt geen gegevens en verifieert de identiteit van de afzender niet. Protocollen die boven op UDP werken, zoals DTLS of QUIC, kunnen vertrouwelijkheid en authenticatie bieden. Het ontbreken van deze functies in UDP zelf betekent dus niet dat elke dienst die UDP gebruikt informatie onbeveiligd verstuurt.
UDP tegenover TCP: wanneer doet het verschil ertoe?
TCP, voluit Transmission Control Protocol, is een ander veelgebruikt transportprotocol. Het brengt een verbinding tot stand en biedt de applicatie een geordende stroom bytes, waarbij verloren gegevens automatisch opnieuw worden verzonden. Als de communicatie niet kan worden voortgezet, kan die eindigen met een fout — ook TCP garandeert niet dat een volledige bedrijfsactie slaagt, zoals het opslaan van een bestelling.
| Eigenschap | UDP | TCP |
|---|---|---|
| Verbinding tot stand brengen | Niet in het protocol zelf | Vereist |
| Manier van gegevensoverdracht | Afzonderlijke datagrammen | Stroom bytes |
| Verloren gegevens opnieuw verzenden | Niet automatisch | Ingebouwd |
| Volgorde van gegevens | Niet gegarandeerd | Behouden in de stroom |
| Congestiecontrole | Niet in UDP zelf | Ingebouwd |
De uitspraak ‘UDP is sneller dan TCP’ is een vereenvoudiging. UDP heeft een kleinere header en wacht niet op ontvangstbevestigingen, maar de werkelijke vertraging hangt ook af van het netwerk en het ontwerp van de applicatie. Als het programma zelf de ontvangst moet bevestigen en elk bericht opnieuw moet kunnen versturen, kan een deel van dat voordeel verdwijnen.
Stel je een game voor waarin de client regelmatig de positie van een tegenstander ontvangt. Als één update verloren gaat, kan een nieuwere update nuttiger zijn dan het opnieuw versturen van de oude. Informatie over de aankoop van een voorwerp vereist daarentegen een bevestiging en bescherming tegen dubbele uitvoering — UDP alleen biedt dat niet.
Waar kom je UDP in de praktijk tegen?
UDP wordt in veel diensten gebruikt, al hangen de details af van het specifieke programma en de netwerkomstandigheden:
- Spraakgesprekken en videoconferenties: een te laat ontvangen geluidsfragment kan minder bruikbaar zijn dan een korte onderbreking die de applicatie maskeert.
- Online games: frequente updates van de spelstatus kunnen worden verstuurd zonder te wachten tot eerdere gegevens zijn teruggehaald.
- DNS, het domeinnaamsysteem: veel verzoeken en antwoorden gebruiken UDP, maar DNS gebruikt ook TCP. De versleutelde varianten ervan gebruiken aanvullende protocollen.
- HTTP/3: gebruikt QUIC, dat boven op UDP werkt en onder meer versleuteling, betrouwbaar transport van gegevensstromen en congestiecontrole toevoegt.
HTTP/3 laat zien dat ‘werkt boven op UDP’ niet betekent dat ‘inhoud van een webpagina zonder gevolgen verloren mag gaan’. Garanties die UDP niet biedt, kunnen worden geleverd door de laag erboven.
Hoe controleer je of een applicatie UDP nodig heeft?
Als je een router of firewall configureert, controleer dan in de documentatie van de applicatie welk protocol, welke poort en welke verkeersrichting vereist zijn. Een TCP-poort en een UDP-poort met hetzelfde nummer zijn afzonderlijke communicatiepunten: TCP toestaan geeft UDP niet automatisch toegang.
Stel niet beide protocollen open ‘voor de zekerheid’. Een gewone uitgaande verbinding vereist doorgaans geen handmatige poortdoorsturing, maar die kan wel nodig zijn als je een server vanuit je thuisnetwerk beschikbaar stelt. Bepaal eerst of het programma alleen verbinding maakt met een dienst of ook verkeer vanaf internet moet ontvangen — daarvan hangt de juiste configuratie af.
Zie ook: Wat is GitLab?
