Który z protokołów jest protokołem warstwy transportowej, bezpołączeniowym, nieposiadającym mechanizmów sprawdzających poprawność dostarczania danych?
A. ICMP
B. IP
C. UDP
D. TCP
Pytanie z egzaminu CKE, styczeń 2020 (arkusz E.13-SG-20.01).
UDP to właściwa odpowiedź, bo jest protokołem warstwy transportowej i działa bez ustanawiania połączenia. W praktyce oznacza to, że nadawca wysyła datagramy bez wcześniejszego uzgadniania sesji, bez potwierdzeń odbioru, bez numerowania segmentów w celu odtworzenia kolejności i bez retransmisji utraconych danych. UDP ma nagłówek dużo prostszy niż TCP, więc narzut jest mniejszy, a transmisja szybsza, ale kosztem niezawodności. Warto tylko pamiętać o jednym szczególe: UDP posiada sumę kontrolną, która może wykrywać uszkodzenie danych w pakiecie, ale to nie jest mechanizm gwarantujący dostarczenie. Jak pakiet zginie po drodze, UDP sam z siebie nie zrobi z tym nic. Moim zdaniem to bardzo ważne rozróżnienie, bo często na testach miesza się sprawdzanie integralności ze sprawdzaniem poprawnego dostarczenia. UDP stosuje się tam, gdzie liczy się małe opóźnienie: DNS, VoIP, streaming, gry sieciowe, DHCP czy NTP. Dobra praktyka jest taka, że jeśli aplikacja potrzebuje niezawodności przy UDP, musi sama dodać odpowiednie mechanizmy, np. potwierdzenia, timeouty albo korekcję błędów.
W tym pytaniu łatwo pomylić warstwy modelu sieciowego i właściwości protokołów, bo wszystkie podane nazwy kojarzą się z komunikacją w sieci IP. IP nie jest jednak protokołem warstwy transportowej, tylko należy do warstwy sieciowej, w modelu TCP/IP do warstwy Internet. Odpowiada za adresowanie i trasowanie pakietów między hostami, ale nie tworzy połączenia aplikacji z aplikacją i nie operuje na portach tak jak protokoły transportowe. Sam IP też jest bezpołączeniowy, więc ten fragment może zmylić, ale nie spełnia warunku dotyczącego warstwy transportowej.
TCP jest protokołem transportowym, ale jego charakter jest dokładnie odwrotny niż w treści pytania. TCP ustanawia połączenie, używa mechanizmu three-way handshake, numerów sekwencyjnych, potwierdzeń ACK, kontroli przepływu i retransmisji. Dzięki temu jest wybierany np. dla HTTP/HTTPS, SMTP, SSH czy FTP, gdzie kompletność danych jest ważniejsza niż minimalne opóźnienie. Z mojego doświadczenia wynika, że uczniowie czasem wybierają TCP tylko dlatego, że wiedzą, że jest w warstwie transportowej, ale nie doczytują słów „bezpołączeniowy” i „bez mechanizmów sprawdzających dostarczanie”.
ICMP również nie pasuje, bo to protokół pomocniczy używany głównie do komunikatów diagnostycznych i kontrolnych, na przykład w poleceniu ping albo przy informowaniu o niedostępności hosta. Nie jest typowym protokołem transportowym dla danych aplikacji. Najlepiej zapamiętać prostą zasadę: TCP i UDP to podstawowe protokoły transportowe, IP przenosi pakiety między sieciami, a ICMP pomaga diagnozować i zgłaszać problemy w komunikacji.
TCP jest protokołem transportowym, ale jego charakter jest dokładnie odwrotny niż w treści pytania. TCP ustanawia połączenie, używa mechanizmu three-way handshake, numerów sekwencyjnych, potwierdzeń ACK, kontroli przepływu i retransmisji. Dzięki temu jest wybierany np. dla HTTP/HTTPS, SMTP, SSH czy FTP, gdzie kompletność danych jest ważniejsza niż minimalne opóźnienie. Z mojego doświadczenia wynika, że uczniowie czasem wybierają TCP tylko dlatego, że wiedzą, że jest w warstwie transportowej, ale nie doczytują słów „bezpołączeniowy” i „bez mechanizmów sprawdzających dostarczanie”.
ICMP również nie pasuje, bo to protokół pomocniczy używany głównie do komunikatów diagnostycznych i kontrolnych, na przykład w poleceniu ping albo przy informowaniu o niedostępności hosta. Nie jest typowym protokołem transportowym dla danych aplikacji. Najlepiej zapamiętać prostą zasadę: TCP i UDP to podstawowe protokoły transportowe, IP przenosi pakiety między sieciami, a ICMP pomaga diagnozować i zgłaszać problemy w komunikacji.