Jak nazywa się protokół warstwy transportowej modelu TCP/IP, który nie gwarantuje dostarczenia danych?
UDP, czyli User Datagram Protocol, to właściwa odpowiedź, bo jest to protokół warstwy transportowej w modelu TCP/IP, który działa bez zestawiania połączenia i nie gwarantuje dostarczenia danych. W praktyce oznacza to, że UDP wysyła datagramy „jak są” — bez potwierdzeń odbioru, bez automatycznych retransmisji, bez kontroli kolejności pakietów i bez mechanizmu podobnego do sesji w TCP. Standardowo opisuje go RFC 768. To nie znaczy, że UDP jest „gorszy”, tylko że ma inne zastosowanie. Moim zdaniem to jeden z tych protokołów, które najlepiej pokazują kompromis między szybkością a niezawodnością. UDP jest używany tam, gdzie ważne są małe opóźnienia: DNS, DHCP, VoIP, transmisje wideo, gry online, NTP, a także QUIC, który działa na UDP, ale część mechanizmów niezawodności realizuje wyżej. Dobra praktyka jest taka: jeśli aplikacja musi mieć pewność dostarczenia danych, wybiera się TCP albo samemu implementuje kontrolę błędów na poziomie aplikacji. Jeśli liczy się czas reakcji i pojedyncza utrata pakietu nie rozwala całej komunikacji, UDP jest bardzo sensownym wyborem.
W tym pytaniu łatwo pomylić warstwy modelu TCP/IP, bo kilka podanych nazw faktycznie kojarzy się z sieciami, portami i usługami internetowymi. FTP nie jest jednak protokołem warstwy transportowej, tylko protokołem warstwy aplikacji służącym do przesyłania plików. Co ważne, FTP korzysta z TCP, zwykle z portu 21 do sterowania i historycznie portu 20 do transmisji danych w trybie aktywnym. Skoro opiera się na TCP, to korzysta z mechanizmów niezawodnego dostarczania, potwierdzeń i retransmisji. To zupełnie inna logika niż w UDP. SPX też może mieszać, bo jest protokołem transportowym, ale nie należy do modelu TCP/IP. Pochodzi ze stosu IPX/SPX, kojarzonego głównie z dawnymi sieciami Novell NetWare. W pytaniu jest wyraźnie mowa o warstwie transportowej modelu TCP/IP, więc SPX odpada, nawet jeśli brzmi „transportowo”. DNS z kolei jest protokołem/usługą warstwy aplikacji do tłumaczenia nazw domenowych na adresy IP. Typowy błąd polega na tym, że ktoś pamięta, iż DNS często używa UDP na porcie 53, i przez to uznaje DNS za protokół transportowy. To nie tak działa podział warstw. DNS może działać przez UDP, ale może też używać TCP, na przykład przy transferach stref albo większych odpowiedziach związanych z DNSSEC. Warstwa transportowa w TCP/IP to przede wszystkim TCP i UDP, a w tym pytaniu chodzi o ten protokół, który nie zapewnia gwarancji dostarczenia, czyli UDP. W praktyce warto zawsze rozdzielać: co jest usługą aplikacyjną, a co mechanizmem transportu danych między procesami.