User Datagram Protocol (UDP) är ett förbindelselöst protokoll i transportskiktet för att skicka datagram över ett IP-nätverk.
Med förbindelselöst (en. stateless eller connectionless) menas att ingen session upprättas mellan sändare och mottagare av protokollet i sig. Härvid kan inte sändare (på UDP-nivå) 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 (en. stateful eller connection oriented) protokoll. Således bidrar alltså UDP, till skillnad mot TCP, inte i större utsträckning med några funktioner mellan nätverksskiktet och applikationsskiktet förutom portnummer och lite enklare undersökning på mottagarsidan av eventuella fel (error checking) på segmentet, vilket sker genom undersökning av kontrollsumman. Om mottagaren (på UDP-nivå) upptäcker ett trasigt UDP-segment kastas vanligtvis segmentet bort eller skickas vidare till applikationsskiktet med en varning. Mottagaren begär alltså i detta fall inte en återsändning av segmentet vilket hade varit fallet i TCP. Återsändning kan begäras av det program i applikationsskiktet som utnyttjar UDP.
Den som skapar ett protokoll som bygger på UDP måste separat sköta om att hantera eventuella sessioner och försenade eller borttappade paket, i den mån sådan hantering behövs. UDP lämpar sig för tillämpningar med krav på låg latens och där ett förlorat paket eller omkastad ordning spelar mindre roll. Exempel på sådana tillämpningar ä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å.
UDP-paketets uppbyggnad
redigeraEtt UDP-paket består av en header som efterföljs av data. UDP-headerns uppbyggnad kan ses i nedanstående tabell:
Offset | Oktett | 0 | 1 | 2 | 3 | ||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Oktett | Bit | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
0 | 0 | Avsändarport | Destinationsport | ||||||||||||||||||||||||||||||
4 | 32 | Längd | Kontrollsumma |
- Avsändarport
- Anger vilken port datan skickades från.
- Destinationsport
- Anger vilken port datan skickas till.
- Längd
- Längd inklusive UDP-header, dvs det lägsta tillåtna värdet är 8 (då finns det ingen payload).
- Kontrollsumma
- Används för att kontrollera att paketet inte har blivit korrupt. Sätts till noll om den inte används.
Standarddokument
redigeraKällor
redigeraJames F. Kurose, Ross, Keith W, Computer Networking: A Top-Down Approach
Tanenbaum, Andrew S; Computer networks