User Datagram Protocol (UDP) werd in 1980 geïntroduceerd en is een van de oudste netwerkprotocollen die er bestaan. Het is een eenvoudig OSI-transportlaagprotocol voor client/server-netwerktoepassingen, is gebaseerd op Internet Protocol (IP) en is het belangrijkste alternatief voor TCP (transmissiecontroleprotocol). Een korte uitleg van UDP zou kunnen verklaren dat het een onbetrouwbaar protocol is in vergelijking met TCP. Hoewel dat waar is, is het ook waar dat er zeker toepassingen voor dit protocol zijn die TCP niet kan evenaren, aangezien er geen foutencontrole of -correctie betrokken is bij datatransmissies. UDP (ook wel UDP/IP genoemd) wordt vaak gebruikt in toepassingen voor videoconferenties of computerspellen die speciaal zijn gemaakt voor realtime prestaties. Om hogere prestaties te bereiken, staat het protocol toe dat individuele pakketten worden verwijderd (zonder nieuwe pogingen) en dat UDP-pakketten in een andere volgorde worden ontvangen dan waarin ze zijn verzonden, zoals bepaald door de toepassing. Deze transmissiemethode zorgt, in vergelijking met TCP, voor minder dataoverhead en vertragingen. Omdat de pakketten hoe dan ook worden verzonden en er geen foutcontrole is, resulteert dit in het gebruik van minder bandbreedte.
Is UDP beter dan TCP?
Het antwoord op deze vraag hangt af van de context, aangezien UDP betere prestaties mogelijk maakt, maar mogelijk slechtere kwaliteit dan TCP. Een goed voorbeeld van wanneer UDP de voorkeur heeft boven TCP, is als het gaat om een toepassing die beter presteert met minder latentie, zoals online gamen, videochatten of spraakoverdracht. Pakketten kunnen verloren gaan, maar met minder algemene vertragingen om de kwaliteit te dempen, wordt niet echt veel kwaliteitsverlies waargenomen. Bij online gamen zorgt UDP-verkeer ervoor dat het spel kan doorgaan, zelfs als de verbinding even wegvalt of als sommige pakketten om wat voor reden dan ook wegvallen. Als er foutcorrectie zou zijn, zou de verbinding tijdverlies lijden omdat de pakketten proberen opnieuw binnen te gaan waar ze waren gebleven om de fouten te compenseren, maar dat is niet nodig in live videogames. Hetzelfde geldt voor livestreaming. De reden dat UDP echter niet zo geweldig is als het gaat om bestandsoverdrachten, is dat je het hele bestand nodig hebt om het correct te gebruiken. Je hebt echter niet elk pakket van een videogame of video nodig om ervan te genieten. Zowel TCP als UDP bevinden zich in laag 4 van het OSI-model en werken met services zoals TFTP, RTSP en DNS.
UDP-datagrammen
UDP-verkeer werkt via zogenaamde datagrammen, waarbij elk datagram uit één enkele berichteenheid bestaat. De headerdetails worden opgeslagen in de allereerste acht bytes, maar de rest is wat het eigenlijke bericht bevat. Elk deel van een UDP-datagramheader, hier vermeld, is twee bytes:
- Bronpoortnummer
- Bestemmingspoortnummer
- Datagramgrootte
- Controlesom
Met UDP-poortnummers kunnen verschillende toepassingen hun eigen kanalen voor gegevens onderhouden, vergelijkbaar met TCP. UDP-poortheaders zijn twee bytes lang; daarom variëren geldige UDP-poortnummers van 0 tot 65535. De grootte van het UDP-datagram is een telling van het totale aantal bytes in kop- en gegevenssecties. Aangezien de koplengte een vaste grootte is, volgt dit veld effectief de lengte van het gegevensgedeelte met variabele grootte (soms payload genoemd). De grootte van datagrammen varieert afhankelijk van de besturingsomgeving, maar heeft een maximum van 65535 bytes. UDP-controlesommen beschermen berichtgegevens tegen manipulatie. De controlesomwaarde vertegenwoordigt een codering van de datagramgegevens die eerst door de afzender en later door de ontvanger zijn berekend. Mocht er met een individueel datagram geknoeid worden of beschadigd raken tijdens de verzending, dan detecteert het UDP-protocol een mismatch in de checksumberekening. In UDP is checksumming optioneel, in tegenstelling tot TCP waar checksums verplicht zijn.