ICMP

Internet Control Message Protocol (ICMP) - sieć protokołów odpowiedzialna za zgłaszanie błędów poprzez generowanie i wysyłanie komunikatów na źródłowy adres IP w przypadku wystąpienia problemów sieciowych napotkanych przez system.[1] Komunikaty generowane przez ICMP wskazują, że nie można dotrzeć do określonej bramy, routera, usługi, a nawet hosta, który powinien połączyć się z Internetem. Zasadniczo odbiorca nie może odbierać pakietów podczas transmisji. Każde urządzenie sieciowe IP może wysyłać, generować, odbierać i przetwarzać komunikaty o błędach ICMP.

Innymi słowy, można sobie wyobrazić ICMP jako zespół produkujący części mechaniczne do pojazdów. Najlepszym sposobem montażu pojazdu byłoby wyprodukowanie najpierw każdej indywidualnej części przed wysłaniem każdej z tych części na linię montażową, która następnie zmontowałaby je w bardziej złożony produkt. Jednak, jak wszyscy wiemy, będą chwile, w których zespół produkcyjny nie będzie w stanie wysłać niektórych części w zaplanowanych ramach czasowych. Jeśli kiedykolwiek zabraknie części, wówczas linia montażowa będzie musiała powiadomić zespół produkcyjny, stąd też ICMP działa w ten sam sposób. Zasadniczo ICMP odgrywa rolę posłańca, który przekazuje dane i informacje od odbiorcy do nadawcy.

Funkcjonalność

Ten protokół jest dość skomplikowany. Posiada wiele innych funkcji niż tylko zgłaszanie błędów w transmisjach pakietowych i hostach, do których nie można dotrzeć. Przekazuje również echo, jak również echo odpowiedzi, wiadomości. Jest to używane poprzez dobrze znane polecenie PING, które pozwala większości użytkowników na przekazanie echa do hosta odbiorczego. W ten sposób wysyłana jest odpowiedź echo po otrzymaniu echa.

Jako takie, komunikaty ICMP umożliwiają sieci i systemowi powiadamianie o źródłowym adresie IP, który jest końcem przekaźnika, jeżeli zdalny host, który jest końcem odbiorczym, nie odbiera żadnych pakietów, które zostały wysłane.[2]

Router jest używany w celu przesłania popularnej wiadomości "Destination Unreachable" z powrotem do hosta źródłowego.[3] W takim przypadku zostanie on wysłany do urządzenia lub programu, które jako pierwsze przesłało pakiety danych. Te komunikaty o błędach informują wtedy program o problemie z łącznością sieci. Po otrzymaniu przez program źródłowy informacji, że niektóre z tych pakietów danych nie dotarły do odbiorcy, program ponownie przekaże tę informację do odbiorcy.

Jako główna funkcja, ICMP niekoniecznie jest regularnie wykorzystywana przez osoby fizyczne w aplikacjach dla użytkowników końcowych, ale jest wykorzystywana przez wielu administratorów sieci w celu rozwiązywania wszelkich błędów występujących w połączeniach internetowych poprzez diagnozę narzędzia, takiego jak:[4]

  1. Ping
  2. Trasa zwiedzania

Główny protokół wykorzystywany przez ICMP jest wykorzystywany przez urządzenia pośredniczące, routery, a nawet hosty w celu komunikacji w przypadku wystąpienia błędu i aktualizacji niezbędnych routerów, urządzeń pośredniczących i hostów. W tym przypadku najbardziej powszechnie stosowany protokół IPv4 (Internet Protocol version 4) i znacznie nowszy IPv6 wykorzystują podobne wersje protokołu ICMP, zwane odpowiednio ICMPv4 i ICMP6.[5]

Jeśli chodzi o to, jak ICMP odnosi się do różnych nagłówków pakietów, nagłówek ICMP pojawia się po nagłówku pakietu IPv4 lub IPv6, gdy jest rozpoznawany przez numer protokołu. Ten złożony protokół zawiera trzy różne główne komponenty:[6]

  • Główny komponent, który rozpoznaje komunikaty ICMP.
  • Mniejszy kod, który zawiera dane i informacje na temat tego typu pola.
  • Suma kontrolna, która faktycznie pomaga wykryć konkretny problem, który został wprowadzony podczas przesyłania wiadomości.

Komunikaty ICMP

Najpopularniejszym i najbardziej znanym komunikatem z datagramu ICMP jest komunikat "Destination Unreachable".[1:1] Istnieje kilka powodów, dla których komunikat ten jest generowany, co obejmuje takie problemy jak brak możliwości dotarcia do sieci, hosta, portu, a nawet wadliwego protokołu.

Większość użytkowników musi być świadoma i brać pod uwagę fakt, że nawet jeśli komunikat "Destination Unreachable" jest najczęściej otrzymywanym komunikatem, nie jest to jedyny komunikat, jaki ICMP może nadać. Istnieją inne komunikaty o błędach, które obejmują:[2:1]

  • Redirect Message - To jest to, czego brama używa w celu poinformowania hosta źródłowego, że będzie wysyłał ruch do innego routera.
  • Time Exceeded - To jest to, co router powie hostowi źródłowemu, że dany pakiet przekroczył pewien przedział czasowy zwany Time to Live (TTL). Kiedy pewien gospodarz zaczyna odbierać pakiety informacji "Przekroczony czas", jest to znak, że w systemie istnieje problem, w którym pętla sprzężenia zwrotnego znajduje się w strumieniu informacji.
  • Source Quench - Są to wiadomości wysyłane z routera w kierunku hosta. Dzięki temu wiadomo, że pojemność buforowa jest teraz pełna i na krótko zatrzyma proces transmisji, dzięki czemu będzie w stanie dogonić resztę danych.

Inne komunikaty to Parameter Problem, Address Mask Request and Reply, Timestamp.

Ograniczenia

Pomimo wszystkich tych ról, które ICMP musi pełnić, ma on pewne ograniczenia funkcjonalne. ICMP nie pomaga hostowi źródłowemu lub IP stać się bardziej niezawodnym i nie odbiera ani nie wysyła żadnych danych, które mogą być wykorzystane do transmisji.[5:1] ICMP po prostu istnieje jako sposób identyfikacji problemów na zagubionych pakietach i wszelkich zepsutych trasach.

ICMP nie będzie również wysyłać komunikatów dotyczących komunikatów ICMP.[2:2] Gdyby tak się kiedykolwiek stało, spowodowałoby to powstanie pętli sprzężenia zwrotnego, która okazałaby się szkodliwa dla systemu, ponieważ stworzyłaby komunikat ICMP z powrotem do drugiej strony. To by się szybko powieliło do tego stopnia, że zalałoby sieć, czyniąc ją nieefektywną.


  1. https://searchnetworking.techtarget.com/definition/ICMP ↩︎ ↩︎

  2. https://www.pcwdld.com/what-is-icmp-and-port ↩︎ ↩︎ ↩︎

  3. https://www.comparitech.com/net-admin/what-is-icmp/ ↩︎

  4. https://www.techopedia.com/definition/5362/internet-control-message-protocol-icmp ↩︎

  5. http://www.enterprisenetworkingplanet.com/netsp/article.php/3584166/Networking-101-Understanding-and-Using-ICMP.htm ↩︎ ↩︎

  6. https://www.webopedia.com/TERM/I/ICMP.html ↩︎