User Datagram Protocol (UDP) – protokół pakietów użytkownika – jeden zprotokołów internetowycho numerze porządkowym 17(inne języki). UDP stosowany jest wwarstwie transportowej modelu OSI. Nie gwarantuje dostarczeniadatagramu.
Jest toprotokół bezpołączeniowy, więc nie ma narzutu na nawiązywanie połączenia i śledzenie sesji (w przeciwieństwie doTCP). Nie ma też mechanizmów kontroli przepływu i retransmisji. Korzyścią płynącą z takiego uproszczenia budowy jest szybszatransmisja danych i brak dodatkowych zadań, którymi musi zajmować się host posługujący się tym protokołem. Z tych względów UDP jest często używany w takich zastosowaniach jakwideokonferencje, strumieniedźwięku wInternecie i gry sieciowe, gdziedane muszą być przesyłane możliwie szybko, a poprawianiem błędów zajmują się inne warstwymodelu OSI. Przykładem może byćVoIP lub protokółDNS.
UDP udostępnia mechanizm identyfikacji różnych punktów końcowych (np. pracujących aplikacji, usług czy serwisów) na jednymhoście dziękiportom (porównaj:gniazdo). UDP zajmuje się dostarczaniem pojedynczych pakietów, udostępnionych przezIP, na którym się opiera. Kolejną cechą odróżniającą UDP odTCP jest możliwość transmisji do kilku adresów docelowych naraz (tzw.multicast).
Pakiety UDP, zwane też datagramami, zawierają oprócz nagłówków niższego poziomu nagłówek UDP. Składa się on z pól zawierającychsumę kontrolną, długość pakietu oraz porty: źródłowy i docelowy.
Podobnie jak wTCP,porty UDP zapisywane są na dwóch bajtach (szesnastu bitach), więc każdyadres IP może mieć przypisanych 65535 różnych zakończeń. Z przyczyn historycznych, porty 0-1023 zarezerwowane są dla dobrze znanych usług sieciowych – dla aplikacji użytkownika przydziela się porty od 1024.
| + | Bity 0 – 15 | 16 – 31 |
|---|
| 0 | Port nadawcy | Port odbiorcy |
|---|
| 32 | Długość | Suma kontrolna |
|---|
| 64 | Dane |
|---|
- Port nadawcy
- identyfikuje port, z którego została wysłana wiadomość, kiedy znaczący to wskazuje port wysyłającego procesu i może zostać przyjęty jako port, do którego powinna zostać zwrócona wiadomość zwrotna w przypadku braku innej informacji. Port nadawcy jest polem opcjonalnym. Gdy pole to nie jest używane, przyjmuje wartość zero.
- Port odbiorcy
- identyfikuje port odbiorcy i jest polem wymaganym.
- Długość
- 16-bitowe pola specyfikują długość w bajtach całego datagramu: nagłówek i dane. Minimalna długość to 8 bajtów i jest to długość nagłówka. Wielkość pola ustala teoretyczny limit 65527 bajtów, dla danych przenoszonych przez pojedynczy datagram UDP.
- Suma kontrolna
- 16 bitowe pole, które jest użyte do sprawdzania poprawności nagłówka oraz danych. Pole jest opcjonalne. PonieważIP nie wylicza sumy kontrolnej dla danych,suma kontrolna UDP jest jedyną gwarancją, że dane nie zostały uszkodzone.
- Kiedy UDP działa naIPv4 metoda używana do obliczania sumy kontrolnej określana jest wRFC 768 ↓
- Całe 16-bitowe słowa są sumowane razem, używająckodu uzupełnień do jedności (pole suma kontrolna ustawiane jest na zero). Końcowa wartość jest wstawiana do pola sumy kontrolnej.
- Różnica jest w danych używanych do tworzenia sumy kontrolnej.
| - | Bity 0 – 7 | 8 – 15 | 16 – 23 | 24 – 31 |
|---|
| 0 | Adres źródłowy |
|---|
| 32 | Adres docelowy |
|---|
| 64 | Zera | Protokół | Długość UDP |
|---|
| 96 | Port źródłowy | Port docelowy |
|---|
| 128 | Długość | Suma kontrolna |
|---|
| 160 | Dane |
|---|
Źródłowe i docelowe adresy znajdują się w nagłówkuIPv4. Na długość pola UDP składa się jego nagłówek oraz dane.Jeślisuma kontrolna zostanie wyliczona i wyniesie 0, to powinna zostać wysłana jako alternatywna reprezentacja zera w kodzie uzupełnień do jedności (same „1”). Jeśli suma kontrolna nie jest użyta, to powinna zostać wysłana jako „zwykłe” zero (same „0”), co wskazuje odbiorcy, że nie jest wykorzystywana.
Kiedy UDP działa naIPv6,suma kontrolna nie jest już opcjonalna. Metoda obliczania sumy kontrolnej została opisana wRFC 2460 ↓.
Wszelki transport albo inna wyższa warstwa protokołu, która zawiera adresy z nagłówkaIP w swojej sumie kontrolnej, musi zostać zmodyfikowana by można jej było użyć.IPv6 musi zawierać 128-bitowe adresy zamiast 32-bitowych używanych wIPv4.
| + | Bity 0 – 7 | 8 – 15 | 16 – 23 | 24 – 31 |
|---|
| 0 | Adres źródłowy |
|---|
| 32 |
|---|
| 64 |
|---|
| 96 |
|---|
| 128 | Adres docelowy |
|---|
| 160 |
|---|
| 192 |
|---|
| 224 |
|---|
| 256 | Długość UDP |
|---|
| 288 | Zera | Następny nagłówek |
|---|
| 320 | Port źródłowy | Port docelowy |
|---|
| 352 | Długość | Suma kontrolna |
|---|
| 384 | Dane |
|---|
W nagłówkuIPv6 znajduje się jeden adres źródła danych. Adres docelowy jest końcowym adresem; jeśli pakietIPv6 nie zawiera nagłówkatrasowania, to adresem docelowym będzie adres zawarty w nagłówkuIPv6, inaczej, w powstającym punkcie węzłowym, będzie to adres ostatniego elementu nagłówka trasowania, a w odbierającym punkcie węzłowym, będzie to adres docelowy z nagłówkaIPv6. Następna wartość nagłówka jest wartością dla protokołu UDP. Na długość pola UDP składa się jego nagłówek oraz dane. Patrz art. źródłowyDatagram Protocol.
Interfejs użytkownika powinien pozwolić:
- tworzyć nowe porty przyjmujące dane
- przyjmować operacje na tych portach, zwracać obiekty danych oraz wskazywać port źródła i adres źródła danych
- na operacje, które pozwalają datagramowi wysłać, dane, porty źródłowe i docelowe lub ich adresy.RFC 768 ↓
Moduł UDP musi być w stanie określić źródłowe i docelowe adresy internetowe, oraz rozróżniać pole protokołu od nagłówka. Jeden możliwy interfejs UDP/IP zwracałby cały datagram włącznie z nagłówkiem internetu jako odpowiedź na odebraną operacje. Interfejs UDP pozwoliłby także przesłać kompletny datagram wraz z nagłówkiem poprzez protokółIP.IP sprawdzałby dla zgodności niektóre pola oraz obliczał sumę kontrolną nagłówka.RFC 768 ↓
Miejsce UDP w podziale na warstwy TCP/IP pokazuje rysunek.
| Program użytkowy |
|---|
| Datagram użytkownika (UDP) |
| Intersieć (IP) |
| Interfejs sieci |
Kapsułkowanie polega na umieszczeniu danych warstwy wyższej wewnątrz wiadomości warstwy niższej. Zanim wiadomość po stronie nadawczej zostanie wysłana, przekazywana jest w dółstosu warstwy; każda kolejna warstwa po otrzymaniu tej wiadomości od warstwy wyżej, dodaje do niej własny nagłówek i stopkę. Datagram UDP przed wysłaniem w sieć jest w taki sposób kapsułkowany w datagram IP. Nagłówek IP identyfikuje maszynę źródłową i docelową, UDP – identyfikuje porty nadawcy i odbiorcy. U odbiorcy zachodzi proces odwrotny. Wiadomość przekazywana jest w górę stosu warstw i każda kolejna warstwa interpretuje, a następnie usuwa nagłówek dodany poprzednio przez tę samą warstwę u nadawcy.
Więc u odbiorcy pakiet dociera do najniższej warstwy oprogramowania sieciowego i wędruje ku coraz wyższym warstwom. Każda z nich usuwa jeden nagłówek, oczekujący proces otrzymuje komunikat bez nagłówków. Datagram UDP otrzymany od IP na maszynie docelowej jest identyczny z tym, który UDP przekazało do IP na maszynie źródłowej[1].
- JonJ. Postel JonJ.,User Datagram Protocol, STD 6,RFC 768,IETF, sierpień 1980,DOI: 10.17487/RFC0768,ISSN2070-1721,OCLC 943595667 (ang.).
- S.S. Deering S.S.,R.R. Hinden R.R.,Internet Protocol, Version 6 (IPv6) Specification,RFC 2460,IETF, grudzień 1998,DOI: 10.17487/RFC2460,ISSN2070-1721,OCLC 943595667 (ang.).