Internet Control Message Protocol (ICMP), dosł. internetowy protokół komunikatów kontrolnych) – opisany w RFC 792 ↓ protokół warstwy sieciowej modelu OSI, wykorzystywany w diagnostyce sieci oraz trasowaniu. Pełni przede wszystkim funkcję kontroli transmisji w sieci. Jest wykorzystywany w programach ping oraz traceroute.
Teoretycznie sieci powinny działać poprawnie przez cały czas, lecz tak nie jest. Gdy coś dzieje się nie tak w warstwie internetowej modelu TCP/IP (w warstwie sieci modelu ISO/OSI), rolę narzędzia do rozwiązywania problemów odgrywa protokół komunikacyjny zarządzania siecią Internet (ICMP — Internet Control Message Protocol). ICMP jest protokołem serwisowym, który zgłasza błędy łączności między hostami.
W warstwie internetowej datagramy dostarczane są w sposób bezpołączeniowy, na zasadzie „najlepiej, jak się da”. Protokół ICMP jest zestawem komunikatów, przesyłanych w datagramach IP i zdolnych do zgłaszania błędów w dostarczaniu innych datagramów IP.
Komunikaty ICMP są narzędziami diagnostycznymi „wbudowanymi” w warstwę internetową. Jeśli dwa hosty nie są w stanie komunikować się ze sobą, komunikaty ICMP mogą pomóc w zdiagnozowaniu problemu. Ponieważ w szybko ewoluującym środowisku może wystąpić zalew komunikatów, niedostarczenie komunikatu ICMP nie powoduje wysłania komunikatu ICMP o błędzie. Szczególnie, gdy komunikat ICMP o niedostępności hosta docelowego nie dotrze do hosta źródłowego, ten nie wysyła kolejnego komunikatu ICMP.
Przykłady wykorzystania
Poniższa lista zawiera kilka sytuacji, z powodu których bramy lub hosty mogą wysyłać komunikaty ICMP:
- Gdy router lub host jest zbyt obciążony, by móc przyjąć do buforów kolejne datagramy, komunikaty ICMP służą do zwolnienia szybkości napływania datagramów do danego routera.
- Gdy router lub host znajduje lepsza trasę do miejsca przeznaczenia, może wysłać do hosta źródłowego komunikat ICMP, powiadamiający o krótszej trasie.
- Gdy host docelowy jest nieosiągalny, ostatnia brama wysyła komunikat ICMP z powrotem do hosta źródłowego, informując o niedostępności adresata.
- Gdy host lub brama przetwarza pakiet o TTL równym 0 hopów, wówczas odrzuca ten pakiet i ewentualnie wysyła komunikat ICMP do hosta źródłowego.
Pakiet (datagram) ICMP
Bit 0 7
|
Bit 8 15
|
Bit 16 23
|
Bit 24 31
|
Typ
|
Kod
|
Suma kontrolna
|
Dane (opcjonalne)
|
Lista typów wiadomości
Typ
|
Znaczenie
|
0
|
Echo Reply (zwrot echa – „odpowiedź na ping”)
|
1 - 2
|
Zarezerwowane
|
3
|
Destination Unreachable (nieosiągalność miejsca przeznaczenia)
|
4
|
Source Quench (tłumienie nadawcy)
|
5
|
Redirect Message (zmień trasowanie)
|
6
|
Alternate Host Address (alternatywny adres hosta)
|
7
|
Zarezerwowane
|
8
|
Echo Request (żądanie echa)
|
9
|
Router Advertisement (ogłoszenie routera)
|
10
|
Router Solicitation (wybór routera)
|
11
|
Time Exceeded (przekroczenie limitu czasu)
|
12
|
Parameter Problem (Problem z parametrem)
|
13
|
Timestamp (żądanie sygnatury czasowej)
|
14
|
Timestamp Reply (zwrot sygnatury czasowej)
|
15
|
Information Request (żądanie informacji)
|
16
|
Information Reply (zwrot informacji)
|
17
|
Address Mask Request (żądanie maski adresowej)
|
18
|
Address Mask Reply (zwrot maski adresowej)
|
19
|
Zarezerwowane dla bezpieczeństwa
|
20-29
|
Zarezerwowane
|
30
|
Traceroute (śledzenie trasy)
|
31
|
Datagram Conversion Error (błąd konwersji datagramu)
|
32
|
Mobile Host Redirect (zmiana adresu ruchomego węzła)
|
33
|
IPv6 Where-Are-You (Pytanie IPv6 „gdzie jesteś”)
|
34
|
IPv6 Here-I-Am (Odpowiedź IPv6 „tu jestem”)
|
35
|
Mobile Registration Request (prośba o rejestrację węzła ruchomego)
|
36
|
Mobile Registration Reply (odpowiedź na prośbę o rejestrację węzła ruchomego
|
37
|
Domain Name Request (żądanie nazwy domeny)
|
38
|
Domain Name Reply (zwrot nazwy domeny)
|
39
|
SKIP(inne języki) Algorithm Discovery Protocol
|
40
|
Photuris(inne języki), Security failures
|
41-255
|
Zarezerwowane
|
Zobacz też
Linki zewnętrzne