UDP: wat is het, protocol zonder verbindingsopbouw en hoe het werkt

Auteur: IT Sectr Gepubliceerd: 2026-03-06 Leestijd: 8 min

UDP (User Datagram Protocol) — een protocol voor gegevensoverdracht zonder verbindingsopbouw, werkend over IP en met minimale vertraging bij het verzenden van datagrammen. In tegenstelling tot TCP garandeert UDP geen levering, volgorde van pakketten of bescherming tegen duplicatie. Volgens gegevens van IETF RFC 768 (2024), verwerkt UDP meer dan 40% van het wereldwijde internetverkeer dankzij videogesprekken, streaming en DNS-query's.

Belangrijkste punten

  • UDP — protocol zonder verbindingsopbouw, dat datagrammen verzendt zonder leveringsbevestiging
  • Minimale vertraging door afwezigheid van handshake, congestiecontrole en hertransmissies
  • Toegepast in videogesprekken, online games, DNS, DHCP en streaming
  • Datagram UDP heeft een header van slechts 8 bytes tegenover 20–60 bytes bij TCP
  • Pakketverlies wordt op applicatieniveau gecompenseerd door FEC, hertransmissie of gegevensredundantie

Wat is UDP?

UDP (User Datagram Protocol) — een van de belangrijkste protocollen van de transportlaag van het TCP/IP-model, ontwikkeld door David Reed in 1980. Het biedt een minimaal mechanisme voor gegevensoverdracht: de applicatie verzendt een datagram en het protocol volgt niet of het de ontvanger heeft bereikt.

De UDP-header bestaat uit slechts vier velden: bronpoort, bestemmingspoort, lengte en controlesom. Elk veld beslaat 2 bytes, dus de totale headergrootte is 8 bytes. Ter vergelijking: de TCP-header zonder opties beslaat 20 bytes en met opties tot 60 bytes.

Het protocol ondersteunt geen fragmentatie op zijn eigen niveau — als een datagram de MTU (Maximum Transmission Unit) overschrijdt, wordt het gefragmenteerd op IP-niveau. Bij verlies van een fragment wordt het hele datagram weggegooid, omdat UDP geen hertransmissie van afzonderlijke fragmenten kan aanvragen. Ontwikkelaars moeten de datagramgrootte controleren — voor mobiele netwerken is de MTU vaak 1400 bytes, dus de maximale grootte mag deze waarde niet overschrijden.

Hoe werkt UDP

Een applicatie die UDP gebruikt, maakt een socket van het type SOCK_DGRAM, specificeert de poort en het bestemmings-IP-adres en verzendt een datagram. Het protocol voegt een minimale header toe en geeft het pakket door aan de IP-laag. De ontvanger luistert naar zijn poort en haalt de gegevens uit de binnenkomende datagrammen.

UDP voert geen congestiecontrole uit — de applicatie kan datagrammen verzenden met de maximale snelheid die het netwerk ondersteunt. Dit kan leiden tot overbelasting van het kanaal, maar in realtime scenario's is dergelijke agressiviteit gerechtvaardigd: voor een videogesprek is een gegevensstroom met mogelijk verlies belangrijker dan het stoppen van de transmissie.

python
import socket

sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.sendto(b'Hello, UDP!', ('192.168.1.100', 8888))
sock.close()

In het voorbeeld wordt een socket SOCK_DGRAM voor UDP gemaakt. De methode sendto verzendt een datagram zonder verbindingsopbouw — het is voldoende om het IP en de poort van de ontvanger te kennen. De methode recvfrom aan de serverzijde retourneert zowel de gegevens als het adres van de afzender voor het antwoord. UDP-sockets op mobiele platforms worden op dezelfde manier geconfigureerd, maar vereisen aanvullende machtigingen: op iOS moet NSAppTransportSecurity worden toegevoegd voor niet-versleutelde UDP-verbindingen, en op Android — de INTERNET-machtiging in het manifest.

Voor- en nadelen van UDP

De keuze voor UDP is gerechtvaardigd in scenario's waar snelheid belangrijker is dan betrouwbaarheid. Het protocol verspilt geen tijd aan verbindingsopbouw, bevestigingen en hertransmissies — dit geeft minimale vertraging, maar vereist dat de ontwikkelaar zelf verlies afhandelt.

VoordelenNadelen
Lage vertraging — geen handshakeGeen leveringsgarantie
Kleinere header — 8 bytesGeen congestiecontrole
Ondersteuning voor broadcast en multicastMogelijke duplicaten van pakketten
Onafhankelijkheid van datagrammen — geen wachtrijenDatagramgrootte beperkt door MTU

In mobiele applicaties wordt UDP gebruikt via frameworks zoals WebRTC, die bovenop UDP verliescontrole, adaptieve bitrate en jitterbuffer toevoegen. Dit geeft de voordelen van snelheid zonder de nadelen van het kale protocol.

Een ander belangrijk aspect van UDP is het ontbreken van congestiecontrole. In TCP verminderen de algoritmen Slow Start en Congestion Avoidance de transmissiesnelheid bij pakketverlies om het netwerk niet te overbelasten. UDP heeft dergelijke mechanismen niet, dus ontwikkelaars moeten hun eigen snelheidscontrolestrategieën implementeren — bijvoorbeeld adaptieve bitrate in videogesprekken of rate limiting op gameservers om overmatige overbelasting van het netwerkkanaal te voorkomen.

Waar wordt UDP gebruikt

UDP is onmisbaar in scenario's waar tolerantie voor vertraging belangrijker is dan tolerantie voor pakketverlies. Laten we de belangrijkste toepassingsgebieden van het protocol in mobiele en webontwikkeling bekijken.

Audio- en videostreaming

De protocollen RTP en RTSP, die over UDP werken, worden gebruikt voor het verzenden van audio- en videostreams in realtime. WebRTC — de standaard voor videogesprekken in browsers en mobiele apps — gebruikt UDP als belangrijkste transport voor mediagegevens en TCP voor signalering. Het verlies van een enkel pakket in een 30 fps-video is onmerkbaar voor de gebruiker, in tegenstelling tot de vertraging van hertransmissie die een merkbare bevriezing van het beeld veroorzaakt.

Online games

Multiplayer shooters en MOBA's hebben een vertraging van minder dan 50 ms nodig voor correcte synchronisatie. UDP verzendt spelersposities, schoten en gebeurtenissen sneller dan TCP, en pakketverlies wordt gewoon genegeerd — de volgende update komt binnen 16–33 ms. Populaire game-engines, waaronder Unity en Unreal Engine, gebruiken UDP via hun eigen transportlagen met toevoeging van betrouwbaarheid voor kritieke gebeurtenissen via bevestigingen op applicatieniveau.

DNS en DHCP

DNS-query's gebruiken UDP op poort 53, omdat elke query een klein datagram is (meestal tot 512 bytes). Als er geen antwoord komt, herhaalt de client de query eenvoudigweg na een time-out, wat sneller is dan het opzetten van een TCP-verbinding met de drievoudige handshake. DHCP werkt ook over UDP, omdat de client nog geen IP-adres heeft en geen TCP-verbinding kan opzetten, en broadcast-UDP-pakketten maken het mogelijk om een DHCP-server in het lokale netwerk te vinden.

Vergelijking UDP en TCP

De keuze tussen UDP en TCP is een compromis tussen snelheid en betrouwbaarheid. Elk protocol is optimaal voor zijn taakklasse en inzicht in hun verschillen helpt bij het nemen van de juiste architecturale beslissingen bij het ontwerpen van netwerkinteractie in mobiele applicaties.

CriteriumUDPTCP
VerbindingsopbouwNiet vereistDrievoudige handshake
Header8 bytes20–60 bytes
LeveringsgarantieNeeJa, met bevestiging
OrderingNeeJa
CongestiecontroleNeeJa (AIMD, Slow Start)
ToepassingStreaming, games, DNSWeb, e-mail, bestanden, API

In mobiele projecten wordt vaak een hybride aanpak gebruikt: TCP voor betrouwbare verzoeken (autorisatie, gegevens laden) en UDP voor mediastreams. QUIC — het moderne Google-protocol dat over UDP werkt — combineert de snelheid van UDP met de betrouwbaarheid van TCP en wordt al gebruikt in HTTP/3.

Voorbeeld van UDP-code

Laten we een eenvoudige UDP-server in Python bekijken die berichten van clients ontvangt en antwoorden verzendt. De server luistert op poort 8888 en verwerkt binnenkomende datagrammen in een oneindige lus.

python
import socket

server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
server.bind(('0.0.0.0', 8888))
print('UDP-server gestart op poort 8888')

while True:
    data, addr = server.recvfrom(1024)
    print(f'Ontvangen van {addr}: {data.decode()}')
    server.sendto(b'OK', addr)

De server maakt een UDP-socket, bindt zich aan poort 8888 en wacht op binnenkomende datagrammen. recvfrom retourneert de gegevens en het adres van de client, waardoor antwoord via sendto mogelijk is. In tegenstelling tot TCP slaat de server geen verbindingsstatus op — elk datagram wordt onafhankelijk verwerkt. Dit maakt UDP-servers schaalbaar: één server kan miljoenen clients verwerken zonder geheugen toe te wijzen voor elke afzonderlijke verbinding, wat belangrijk is voor DNS-servers en game-matchmaking-systemen.

In mobiele ontwikkeling wordt UDP vaak gebruikt via bibliotheken op hoog niveau. Bijvoorbeeld CocoaAsyncSocket voor iOS biedt UDP-sockets met delegates en GCD voor asynchrone gebeurtenisverwerking. Op Android maakt de klasse DatagramSocket deel uit van de standaard java.net-bibliotheek en vereist geen extra afhankelijkheden. Voor Flutter is er het udp-pakket, dat een eenvoudige interface biedt voor het verzenden en ontvangen van datagrammen zonder native sockets te configureren.

Het is belangrijk op te merken dat veel mobiele netwerken en bedrijfsfirewalls UDP-verkeer blokkeren, vooral op poorten boven 1024. Als uw applicatie UDP gebruikt, moet u een fallback op TCP of controle van de protocolbeschikbaarheid via STUN-servers voorzien, zoals WebRTC doet. Op iOS ondersteunt het systeemframework Network.framework met NWConnection zowel TCP als UDP, waarbij het automatisch het optimale protocol selecteert op basis van beschikbaarheid. Voor realtime applicaties wordt ook aanbevolen om adaptieve bitrate te implementeren, die de streamkwaliteit verlaagt bij pakketverlies, waardoor continuïteit van afspelen wordt gegarandeerd, zelfs op onstabiele kanalen met een hoog foutenniveau.

Veelgestelde vragen

Waarin verschilt UDP van TCP?

UDP maakt geen verbinding en garandeert geen levering van pakketten, waardoor het sneller is dan TCP. UDP-header — 8 bytes tegenover 20–60 bytes bij TCP. UDP is geschikt voor streaming en games, TCP — voor webverzoeken en bestandsoverdracht.

Wat is een datagram in UDP?

Een datagram is een onafhankelijk gegevenspakket met een UDP-header (bronpoort, bestemmingspoort, lengte, controlesom). Elk datagram wordt onafhankelijk verwerkt, zonder verband met eerdere. De datagramgrootte is beperkt door de MTU van het netwerk en volgens specificatie tot 65507 bytes.

Hoe wordt betrouwbaarheid gegarandeerd bij gebruik van UDP?

UDP biedt geen betrouwbaarheid op transportniveau — dit wordt door de applicatie geïmplementeerd. Ontwikkelaars voegen volgnummers, controlesommen, herhaalaanvragen en foutcorrectie toe. FEC (Forward Error Correction) maakt het mogelijk verloren pakketten te herstellen zonder hertransmissie.

Wanneer moet UDP niet worden gebruikt?

UDP is niet geschikt voor scenario's waar gegevensintegriteit kritisch is: bestandsoverdracht, banktransacties, REST-API's. In deze gevallen garandeert TCP dat elke byte in de juiste volgorde aankomt. UDP wordt ook niet aanbevolen op onstabiele kanalen met een hoog verliesniveau.

Wat is QUIC en hoe is het gerelateerd aan UDP?

QUIC — een transportprotocol dat over UDP werkt, ontwikkeld door Google en gestandaardiseerd door IETF als RFC 9000. Het combineert de snelheid van UDP met de betrouwbaarheid van TCP, ondersteunt multiplexing zonder blokkering en ingebouwde encryptie. HTTP/3 gebruikt QUIC als transportlaag.

Samenvatting

  • UDP — protocol zonder verbindingsopbouw met minimale vertraging en een header van 8 bytes
  • Garandeert niet levering, volgorde van pakketten of bescherming tegen duplicatie
  • Toegepast in videogesprekken, online games, DNS, DHCP en streaming
  • Keuze UDP of TCP hangt af van de balans tussen snelheid en betrouwbaarheid in het specifieke scenario
  • Pakketverlies wordt op applicatieniveau gecompenseerd via FEC, herhaalaanvragen of redundantie
  • QUIC over UDP combineert de snelheid van UDP met de betrouwbaarheid van TCP in het HTTP/3-protocol
  • Ontwikkelaars moeten de datagramgrootte controleren en een fallback op TCP voorzien bij blokkering of filtering van UDP in het netwerk

We ontwikkelen een mobiele applicatie turnkey

IT Sectr creëert sinds 2017 iOS- en Android-applicaties voor startups en bedrijven. We adviseren u en stellen de beste oplossing voor.

Bespreek het project

Lees ook