Wat is UDP (User Datagram Protocol)?
Verbindingsloos protocol van de transportlaag. De header is 8 bytes en bevat alleen poortnummers, een lengte en een checksum. Er is geen verbindingsopbouw, geen ontvangstbevestiging of hertransmissie en geen volgorderegeling, dus er komt weinig vertraging bij. Het wordt onder meer gebruikt voor DNS-query's, spraak- en videogesprekken, onlinegames, DHCP en QUIC.
Japanse benaming: UDP
“UDP (User Datagram Protocol)” komt voor in 4 oefenvragen uit 2 onderwerpen, bijv. Basis van computernetwerken, Basis van webtechnologie.
Vakgebied: Basis van computernetwerken
Header en datagrammen
De UDP-header bestaat uit vier velden van 16 bits: het poortnummer van de bron, dat van de bestemming, de lengte en de checksum, samen 8 bytes. Elk blok gegevens dat de applicatie verstuurt, wordt één datagram, en de ontvanger krijgt het met dezelfde grenzen, anders dan bij de bytestroom van TCP. De checksum is optioneel over IPv4 maar verplicht over IPv6. Grote datagrammen worden op IP-niveau gefragmenteerd en gaan gemakkelijker verloren, dus applicaties houden ze gewoonlijk klein genoeg om binnen de MTU te passen.
Wanneer UDP de juiste keuze is
Bij gesprekken en livestreaming zijn gegevens die te laat aankomen nutteloos, en wachten op hertransmissies laat geluid en beeld haperen. Bij uitwisselingen die uit één vraag en één antwoord bestaan, zoals DNS-query's, verkort het weglaten van de verbindingsopbouw de wachttijd. UDP kan ook worden gebruikt voor broadcast en multicast van één naar velen, en daarom loopt DHCP, dat wordt gebruikt door apparaten die nog geen IP-adres hebben, over UDP. Applicaties die betrouwbaarheid nodig hebben, bouwen hertransmissie en volgorderegeling zelf bovenop UDP, zoals QUIC doet.
Waar je op moet letten
UDP-datagrammen kunnen verloren gaan, dubbel aankomen of in een andere volgorde aankomen, dus de applicatie moet daarmee omgaan, bijvoorbeeld door haar gegevens te nummeren. UDP zelf heeft geen congestiebeheersing, dus een applicatie die veel gegevens verstuurt, moet zelf haar tempo regelen. NAT-koppelingen verdwijnen na een periode zonder verkeer, dus applicaties sturen soms kleine pakketten (keepalives) om ze open te houden. Omdat er geen handshake is en het bronadres gemakkelijk te vervalsen is, worden UDP-diensten zoals DNS die grote antwoorden op kleine vragen geven, misbruikt voor reflectie- en amplificatie-DDoS-aanvallen.
Veelgestelde vragen
Waarom zou je UDP gebruiken als het onbetrouwbaar is?
Het wacht niet op verbindingsopbouw of hertransmissies, dus er komt weinig vertraging bij, en de header is klein. Dat past bij gesprekken en games, waar weinig vertraging belangrijker is dan een beetje ontbrekende gegevens, en bij DNS-query's, die in één rondgang klaar zijn. Is betrouwbaarheid nodig, dan implementeren protocollen zoals QUIC hertransmissie bovenop UDP.
Komen UDP-gegevens aan in de volgorde waarin ze zijn verzonden?
Dat is niet gegarandeerd. Datagrammen kunnen in een andere volgorde aankomen, bijvoorbeeld doordat ze verschillende paden nemen, en ze kunnen ook verloren gaan of dubbel aankomen. Is de volgorde belangrijk, dan nummert de applicatie haar gegevens en zet ze die weer op volgorde.