Internet Control Message Protocol
Ten artykuł od 2021-06 wymaga zweryfikowania podanych informacji. |
ICMP (ang. Internet Control Message Protocol, 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 Algorithm Discovery Protocol |
40 | Photuris, Security failures |
41-255 | Zarezerwowane |
Zobacz też
Linki zewnętrzne
- Jon Postel, Internet Control Message Protocol, STD 5, RFC 792, IETF, wrzesień 1981, DOI: 10.17487/RFC0792, ISSN 2070-1721, OCLC 943595667 (ang.).