Transport

Nagłówek UDP

Pola: port źródłowy/docelowy, długość, suma kontrolna i pseudo-nagłówek.

Przeznaczenie nagłówka UDP

Segment TCP zawiera pola numerów sekwencyjnych, potwierdzeń, flag, kontroli przepływu i opcji. Datagram UDP ma stały nagłówek bazowy z dwoma portami, długością i sumą kontrolną. Nagłówek UDP dostarcza informacji potrzebnych do przekazania pojedynczej wiadomości aplikacji na port docelowy.

UDP zapewnia minimalny transport wiadomości. Jego nagłówek bazowy nie ma numeru sekwencyjnego, numeru potwierdzenia ani okna odbiorczego, więc protokół nie zapewnia uporządkowanego dostarczania, retransmisji ani kontroli przepływu. Aplikacja lub protokół działający nad UDP może dodać te funkcje, gdy ich potrzebuje.

Bazowy nagłówek ma 8 bajtów, więc każdy datagram przenosi niewiele informacji sterujących transportem. Ogranicza to przetwarzanie nagłówka i zużycie pasma względem transportu z rozbudowanym stanem połączenia, lecz nie gwarantuje szybszej ścieżki ani mniejszego opóźnienia kolejek. Cztery pola dotyczą portów, długości i wykrywania błędów.

Ogólna struktura nagłówka UDP

Bazowy nagłówek UDP ma zawsze długość 8 bajtów (64 bity). Zawiera cztery pola o szerokości 2 bajtów (16 bitów). W odróżnieniu od TCP UDP nie ma nagłówka bazowego o zmiennej długości. Standaryzowane rozszerzenie UDP Options umieszcza opcjonalne opcje transportowe w obszarze za danymi użytkownika, a bazowy nagłówek pozostaje 8-bajtowy.

Kompletna wiadomość wysyłana przez UDP nazywana jest datagramem UDP. W podstawowej postaci składa się z 8-bajtowego nagłówka UDP oraz danych aplikacji, czyli .

Pola wielobajtowe używają sieciowego porządku bajtów, w którym najbardziej znaczący bajt występuje pierwszy. Pole Długość obejmuje bazowy nagłówek i dane użytkownika UDP, więc odbiorca może oddzielić datagram od pozostałej części pakietu IP. Przy standaryzowanym rozszerzeniu UDP Options krótsza wartość pola Długość wyznacza obszar nadmiarowy po danych użytkownika, w którym umieszcza się opcje.

Szczegółowy opis pól nagłówka UDP

Cztery pola pełnią odrębne funkcje podczas obsługi UDP.

1. Port Źródłowy (16 bitów)

Cel: Pole portu źródłowego identyfikuje port procesu wysyłającego, gdy ta informacja ma znaczenie. Odbiorca może użyć go jako portu docelowego odpowiedzi, jeśli aplikacja nie stosuje innego mechanizmu zwrotnego.

Użycie: W wymianie klient-serwer, na przykład dla zapytania DNS, klient zwykle wybiera efemeryczny port źródłowy. Serwer kopiuje tę wartość do portu docelowego odpowiedzi, aby system operacyjny mógł dostarczyć ją do gniazda, które wysłało zapytanie.

Opcjonalność: Specyfikacja UDP dopuszcza wysłanie zera, gdy nadawca nie używa portu źródłowego. Aplikacje oczekujące odpowiedzi zwykle wybierają port, aby odbiorca mógł rozpoznać punkt zwrotny. Urządzenia pośredniczące mogą stosować własne zasady wobec nietypowych wartości portu.

Punkt końcowy UDP wybiera się zwykle przez połączenie lokalnego adresu z lokalnym portem, a gniazdo połączone może także zapamiętać zdalny adres i port. Jeden host może wtedy obsługiwać wielu rozmówców, a port docelowy nadal wskazuje usługę aplikacji.

2. Port Docelowy (16 bitów)

Cel: Pole identyfikuje port docelowy w kontekście adresu docelowego. System operacyjny używa go przy wyborze gniazda odbiorczego.

Użycie: Po odebraniu datagramu warstwa transportowa łączy adres docelowy i port z lokalnymi powiązaniami gniazd, aby przeprowadzić demultipleksację. Na przykład zapytanie DNS jest zwykle wysyłane na port docelowy 5353 serwera DNS.

3. Długość (16 bitów)

Cel: To pole określa całkowitą długość całego datagramu UDP w bajtach. Długość ta obejmuje 8-bajtowy nagłówek i ładunek danych o zmiennej długości.

Wartości: Minimalna wartość to 8, czyli nagłówek bez danych użytkownika. Aplikacja może użyć takiego datagramu jako pulsu, lecz znaczenie nadaje mu sama aplikacja. 16-bitowe pole daje teoretyczną maksymalną długość datagramu 216−1=65 5352^{16} - 1 = 65\,535 bajtów wraz z nagłówkiem. Maksymalny ładunek UDP wynosi 65 507 bajtów dla pakietu IPv4 z minimalnym nagłówkiem i 65 527 bajtów dla IPv6 bez jumbogramu. Duże datagramy mogą wymagać fragmentacji IP, co zmniejsza wydajność i zwiększa skutki utraty pojedynczego fragmentu.

Suma kontrolna UDP i pseudo-nagłówek

Pole sumy kontrolnej ma 16 bitów i służy do wykrywania błędów w nagłówku UDP oraz danych. Obliczenie obejmuje także wybrane wartości warstwy IP, co pozwala wykryć część przypadków błędnego dostarczenia. Suma nie koryguje błędów ani nie zapewnia poufności.

Cel Sumy Kontrolnej

Suma kontrolna UDP wykrywa błędy. Odbiorca ponownie oblicza sumę z dopełnieniem do jedności i sprawdza wynik. Nieudana kontrola powoduje odrzucenie datagramu przez implementację odbiorczą, a UDP nie definiuje retransmisji ani odpowiedzi o błędzie do nadawcy.

Obliczenia wykorzystują tę samą , co suma kontrolna TCP/IP.

Rola pseudo-nagłówka

Suma obejmuje nagłówek UDP i jego ładunek oraz koncepcyjny pseudo-nagłówek UDP. Pseudo-nagłówek nie jest częścią datagramu UDP i nie jest przesyłany przez sieć. Nadawca tworzy go do obliczeń, a odbiorca odtwarza do weryfikacji.

Pseudo-nagłówek IPv4 zawiera:

  • Źródłowego Adresu IP (32 bity)
  • Docelowego Adresu IP (32 bity)
  • 8-bitowego pola wypełnionego zerami
  • 8-bitowego numeru protokołu, którego wartość dla UDP wynosi 17
  • 16-bitowej długości UDP skopiowanej z nagłówka

Cel: Gdy suma jest obecna, uwzględnienie adresów źródłowego i docelowego wiąże ją z punktami IP zapisanymi w pakiecie. Jeżeli pośrednik albo uszkodzony nagłówek IP zmieni adres punktu końcowego, odbiorca odtworzy inny pseudo-nagłówek i może odrzucić datagram. IPv6 używa adresów 128-bitowych oraz pseudo-nagłówka zawierającego adres źródłowy i docelowy, długość warstwy wyższej oraz wartość next header.

Obliczenie dodaje 16-bitowe słowa z przeniesieniem zawijanym i uzupełnia wynik bitowo. Gdy obliczony wynik wynosi zero, przesyłana suma przyjmuje wartość wszystkich jedynek. W IPv4 przesłane zero oznacza pominięcie sumy przez nadawcę. Te szczegóły są przydatne przy porównywaniu przechwyconego pakietu z implementacją oraz przy weryfikacji datagramu po scaleniu fragmentów.

Wymagania sumy według wersji IP

IPv4 i IPv6 mają różne wymagania dotyczące sumy kontrolnej:

  • IPv4: Nadawca może pominąć sumę kontrolną UDP, przesyłając w tym polu zero. Wartość niezerowa włącza kontrolę od końca do końca, a kontrola warstwy łącza nie zastępuje jej na całej ścieżce.
  • IPv6: Zwykły UDP przez IPv6 wymaga niezerowej sumy kontrolnej. Konkretne standardy określają ograniczone wyjątki dla kontrolowanych tuneli, dlatego reguła ogólna nie dotyczy każdej enkapsulacji.

Porównanie nagłówków UDP i TCP

Zestaw pól pokazuje różne usługi zapewniane przez oba transporty.

CechaNagłówek UDP (8 bajtów)Nagłówek TCP (20-60 bajtów)
AdresowaniePort Źródłowy i DocelowyPort Źródłowy i Docelowy
Kolejność DanychBrak mechanizmu (Brak pola Numeru Sekwencyjnego)Tak (32-bitowe pole Numeru Sekwencyjnego)
NiezawodnośćBrak mechanizmu (Brak Numeru Potwierdzenia)Tak (32-bitowe pole Numeru Potwierdzenia, flaga ACK)
Stan PołączeniaBrak (Brak flag SYN, FIN, RST)Pełne zarządzanie stanem (flagi SYN, FIN, RST)
Kontrola PrzepływuBrak (Brak pola Rozmiar Okna)Tak (16-bitowe pole Rozmiar Okna)
Wykrywanie BłędówOpcjonalna (w IPv4) 16-bitowa Suma KontrolnaObowiązkowa 16-bitowa Suma Kontrolna
Rozszerzalność8-bajtowy nagłówek bazowy, opcje UDP w zdefiniowanym rozszerzeniu za danymiTak (pole Opcje o zmiennej długości)

Bazowy nagłówek UDP dostarcza porty, długość i sumę kontrolną dla jednego datagramu. Dostarczanie, kolejność, retransmisja, kontrola przepływu i kontrola przeciążenia pochodzą z aplikacji albo protokołu działającego nad UDP. Standaryzowane rozszerzenie UDP Options dodaje obszar za danymi dla opcjonalnych opcji transportowych bez zmiany 8-bajtowego nagłówka bazowego.

Powiązane artykuły