User Datagram Protocol (UDP) är ett förbindelselöst protokoll i transportskiktet, för att skicka paket över ett IP-nätverk.
Förbindelselöst betyder att ingen session upprättas mellan sändare och mottagare av protokollet i sig. Sändaren kan alltså inte garantera att mottagaren får paketet. Mottagaren kan heller inte veta att den fått alla paket, eller att den fått paketen i rätt ordning. Jämför med TCP som är ett förbindelseorienterat protokoll.
UDP, till skillnad mot TCP, bidrar knappt med några funktioner mellan nätverksskiktet och applikationsskiktet, förutom portnummer och enklare undersökning av eventuella fel på segmentet. Det sker genom undersökning av kontrollsumman. Om mottagaren upptäcker ett trasigt UDP-segment kastas segmentet bort eller skickas vidare till applikationsskiktet, med en varning. Mottagaren begär i detta fall inte en återsändning av segmentet, vilket det hade gjorts med TCP. Återsändning kan ändå begäras av det program i applikationsskiktet som använder UDP.
Den som skapar ett protokoll som bygger på UDP, måste alltså sköta om och hantera eventuella sessioner och försenade eller borttappade paket. Förutsatt att det behövs. UDP lämpar sig för tillämpningar med krav på snabb överföring, och där ett förlorat paket eller omkastad ordning inte spelar så stor roll. Exempel är IP-telefoni, P2P-nätverk och datorspel. Protokollet kan också användas då sessionshanteringen i TCP inte räcker, och ändå måste hanteras på en högre nivå i applikationen.