ICMP

Protokół służący do przesyłania komunikatów diagnostycznych i błędów w sieci. Wykorzystują go narzędzia takie jak ping i traceroute.

ICMP (Internet Control Message Protocol) to protokół warstwy sieciowej, którego zadaniem nie jest przenoszenie Twoich danych, tylko meldowanie, co poszło nie tak po drodze. Gdy pakiet IP nie dotrze do celu, host jest nieosiągalny albo zabraknie czasu na dostarczenie, to właśnie ICMP wysyła zwrotny komunikat: „halo, tu się nie da”. Działa razem z IP (dla IPv4 jako numer protokołu 1), ale sam w sobie nie służy do transmisji treści, lecz do diagnostyki i sygnalizacji błędów.

Jak to działa

Każdy komunikat ICMP ma typ i kod, które razem opisują sytuację. Najważniejsze, na które natkniesz się w praktyce, to Echo Request (typ 8) i Echo Reply (typ 0) używane przez ping, Destination Unreachable (typ 3, z kodami w stylu „host unreachable” czy „port unreachable”), Time Exceeded (typ 11, gdy TTL spadnie do zera) oraz Fragmentation Needed przydatny przy ustalaniu MTU.

ICMP nie nawiązuje połączenia i nie ma portów, jak TCP czy UDP. To pojedyncze komunikaty wstrzykiwane w sieć, na które zwykle nie ma gwarancji odpowiedzi. W IPv6 mamy osobny ICMPv6, który jest jeszcze ważniejszy, bo obsługuje Neighbor Discovery, czyli odpowiednik ARP. Wytniesz go całkiem, a IPv6 przestanie działać.

Przykład z praktyki

Klasyka to ping 8.8.8.8, który wysyła Echo Request i mierzy czas powrotu odpowiedzi. Bardziej diagnostycznie działa traceroute 8.8.8.8 (na Windowsie tracert): wysyła pakiety z rosnącym TTL, a każdy router po drodze odsyła Time Exceeded, dzięki czemu widzisz całą trasę skok po skoku. Dla porównania, gdy znika łączność do serwera, najpierw odpalasz pinga, żeby sprawdzić, czy host w ogóle żyje, zanim zaczniesz grzebać w aplikacji.

Częste błędy i mity

Mit numer jeden: „ping nie odpowiada, więc host nie działa”. Wiele firm blokuje ICMP na firewallu, więc brak odpowiedzi nie oznacza awarii, tylko politykę bezpieczeństwa. Drugi błąd to bezmyślne wycinanie całego ICMP. Jeśli zablokujesz Fragmentation Needed, rozwalisz Path MTU Discovery i dostaniesz dziwne zawieszki dużych pakietów (tzw. PMTU black hole). I pamiętaj: ICMP bywa nadużywany w atakach (ping flood, smurf), ale to argument za rozsądnym limitowaniem, nie za totalną blokadą.

Pojęcia powiązane: IP, TTL, ping, traceroute, MTU, ICMPv6, ARP, firewall.