UDP.doc

(84 KB) Pobierz
UDP

UDP

 

Protokół UDP jest standardem TCP/IP zdefiniowanym w specyfikacji RFC 768 „User Datagram Protocol (UDP)”. Protokół UDP jest używany przez niektóre programy zamiast protokołu TCP do szybkiego, uproszczonego, mniej niezawodnego przesyłania danych między hostami TCP/IP.

Protokół UDP jest usługą wymiany datagramów bez ustanowionego połączenia, która zapewnia najlepszą jakość dostarczania, co oznacza, że protokół UDP nie gwarantuje dostarczenia i sprawdzania sekwencji datagramów. Host źródłowy wymagający niezawodnych połączeń powinien korzystać z protokołu TCP lub programu, który posiada wbudowane własne usługi sprawdzania sekwencji i potwierdzania.

Komunikaty UDP są hermetyzowane i wysyłane w datagramach IP w sposób pokazany na rysunku.

 

Porty UDP

Porty UDP służą do wysyłania i odbierania komunikatów UDP. Port UDP funkcjonuje jako pojedyncza kolejka komunikatów, która służy do odbierania wszystkich datagramów przez program określony za pomocą numeru portu protokołu. Oznacza to, że programy UDP mogą jednocześnie odbierać kilka komunikatów.

Strona serwera każdego programu wykorzystującego port UDP oczekuje na komunikaty przychodzące do dobrze znanego numeru portu. Wszystkie numery portów serwerów UDP o wartościach niższych od 1024 (i niektóre wyższe numery) są zarezerwowane i zarejestrowane przez organizację IANA (Internet Assigned Numbers Authority).

Każdy port serwera UDP jest identyfikowany za pomocą zarezerwowanego lub dobrze znanego numeru portu. W tabeli przedstawiono część listy dobrze znanych numerów portów serwerów UDP wykorzystywanych przez standardowe programy UDP.

 

Numer portu UDP

Opis

53

Kwerendy nazw DNS

69

Protokół TFTP (Trivial File Transfer Protocol)

137

Usługa nazw NetBIOS

138

Usługa datagramów NetBIOS

161

Protokół SNMP (Simple Network Management Protocol)

520

Protokół RIP (Routing Information Protocol)

 

Protokoły UDP i TCP

Ogólne różnice w sposobie dostarczania danych między protokołem UDP a protokołem TCP są podobne do różnicy między używaniem telefonu a kartki pocztowej. Protokół TCP działa jak telefon, sprawdzając, czy miejsce docelowe jest dostępne i gotowe do ustanowienia połączenia. Protokół UDP działa jak kartka pocztowa komunikaty są niewielkie, a ich dostarczenie prawdopodobne, ale nie zawsze pewne.

Protokół UDP jest zwykle wykorzystywany przez programy, które służą do jednorazowego przesyłania małych ilości danych lub mają wymagania dotyczące czasu rzeczywistego. W takich przypadkach niskie wymagania organizacyjne i funkcje obsługi multiemisji protokołu UDP (na przykład jeden datagram, wielu odbiorców) są bardziej przydatne niż funkcje protokołu TCP.

Protokół UDP różni się wyraźnie pod względem usług i funkcji od protokołu TCP. W poniższej tabeli przedstawiono porównanie połączeń TCP/IP w zależności od tego, czy do transportowania danych jest używany protokół UDP, czy protokół TCP.

 

UDP

TCP

Usługa bez ustanowionego połączenia; między hostami nie jest ustanawiana sesja.

Usługa zorientowana na połączenie; między hostami jest ustanawiana sesja.

Protokół UDP nie gwarantuje dostarczenia przesyłki, a także potwierdzania i szeregowania danych.

Protokół TCP gwarantuje dostarczenie przesyłki dzięki użyciu potwierdzania i szeregowania dostarczania danych.

Programy wykorzystujące protokół UDP odpowiadają za prawidłowe transportowanie danych.

Programy wykorzystujące protokół TCP mają zapewniony niezawodny transport danych.

Protokół UDP jest szybki, ma niskie wymagania organizacyjne i obsługuje połączenia bezpośrednie i połączenia jednego punktu z wieloma punktami.

Protokół TCP jest wolniejszy, ma wyższe wymagania organizacyjne i obsługuje tylko połączenia bezpośrednie.

 

Protokoły UDP i TCP rozpoznają połączenia poszczególnych programów TCP/IP na podstawie portów, których te programy używają.


UDP (Datagramowy Protokół Użytkownika) – jeden z podstawowych protokołów internetowych. Umieszcza się go w warstwie czwartej (transportu) modelu OSI.

Jest to protokół bezpołączeniowy, więc nie ma narzutu na nawiązywanie połączenia i śledzenie sesji (w przeciwieństwie do TCP). Nie ma też mechanizmów kontroli przepływu i retransmisji. Korzyścią płynącą z takiego uproszczenia budowy jest większa szybkość transmisji 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 jak wideokonferencje, strumienie dźwięku w Internecie i gry sieciowe, gdzie dane muszą być przesyłane możliwie szybko, a poprawianiem błędów zajmują się inne warstwy modelu OSI. Przykładem może być protokół DNS lub VoIP.

UDP udostępnia mechanizm identyfikacji różnych punktów końcowych (np. pracujących aplikacji, usług czy serwisów) na jednym hoście dzięki portom (porównaj: gniazdo). UDP zajmuje się dostarczaniem pojedynczych pakietów, udostępnionych przez IP, na którym się opiera. Kolejną cechą odróżniającą UDP od TCP jest możliwość transmisji do kilku adresów docelowych na raz (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ących sumę kontrolną, długość pakietu oraz porty: źródłowy i docelowy.

Podobnie jak w TCP, porty UDP zapisywane są na dwóch bajtach (szesnastu bitach), więc każdy adres IP może mieć przypisanych 65536 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.

 

Struktura nagłówka UDP

 

+

Bity 0 - 15

16 - 31

0

Port nadawcy

Port odbiorcy

32

Długość

Suma kontrolna

64

 

Dane

 

 

Port nadawcyidentyfikuje 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 odbiorcyidentyfikuje 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 65,527 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.

Transfer UDP po IPv4

Kiedy UDP działa na IPv4 metoda używana do obliczania sumy kontrolnej określana jest w RFC 768.

Całe 16-bitowe słowa są sumowane razem używając uzupełnienia (z suma kontrolna pole 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łówku IPv4. Na długość pola UDP składa się jego nagłówek oraz dane.

Jeśli suma kontrolna jest wyliczana, jako zero (wszystkie 0) to powinno zostać wysłane jako negacja zera (wszystko 1). Jeśli suma kontrolna nie jest użyta to powinno zostać wysłane jako zero (wszystko 0) jako zero wskazuje też że suma kontrolna nie jest wykorzystywana.

 

Transfer UDP po IPv6

Kiedy UDP działa na IPv6, suma kontrolna nie jest już opcjonalna i metoda obliczania sumy kontrolnej jest zmieniona, na RFC 2460.

Wszelki transport albo inna wyższa warstwa protokołu, która zawiera adresy z nagłówka IP 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 w IPv4.

 

+

Bity 0 - 7

8 - 15

16 - 23

24 - 31

0

Adres źródłowy

32

...
Zgłoś jeśli naruszono regulamin