Internet Control Message Protocol (ICMP) jest protokołem trzeciej warstwy (warstwy sieciowej) w siedmiowarstwowym modelu OSI. Protokół diagnozuje problemy z łącznością sieciową lub transmisją danych między urządzeniami. Umożliwia wysyłanie, odbieranie i przetwarzanie komunikatów ICMP w celu zgłaszania problemów z łącznością źródłowemu urządzeniu sieciowemu.
Dlatego głównym celem protokołu ICMP jest zgłaszanie błędów w warstwie sieci. Jednak złośliwi aktorzy mogą manipulować jego funkcjonalnością, aby uruchamiać ataki, takie jak ataki typu Distributed Denial of Service (DDoS) i Ping of Death. Tutaj dowiesz się o protokole ICMP, jego przypadku użycia i parametrach, które są ważne dla zrozumienia komunikatów ICMP.
Jak działa ICMP?
Routery używają protokołu ICMP do zarządzania siecią i diagnozowania problemów. Generuje i wysyła komunikaty o błędach do urządzenia nadawczego, gdy sieć wyłącza dostarczanie pakietów do urządzenia docelowego. Te komunikaty o błędach obejmują przekroczony czas, problem z parametrami, nieosiągalne miejsce docelowe, przeciążenie sieci itp.
Na przykład, gdy nadawca wysyła dane z jednego urządzenia do urządzenia docelowego w postaci datagramu IP, przechodzi przez wiele routerów lub urządzeń pośredniczących. Czasami może wystąpić błąd podczas przekazywania tego datagramu IPV4. Dlatego komunikaty ICMP są podzielone na dwie szerokie kategorie: komunikaty o błędach i komunikaty zapytań.
Komunikaty o błędach
Oto komunikaty, które router lub host pośredniczący może napotkać podczas przetwarzania datagramów:
- Przekroczono czas: Pakiet ICMP ma parametr czasu życia, który oznacza, że gdy osiągnie 0, router lub host odrzuca datagram i wysyła komunikat o przekroczeniu czasu. Wiadomość jest również wysyłana, gdy miejsce docelowe nie otrzyma wszystkich fragmentów danych.
- Cel podróży nieosiągalny: Urządzenie inicjujące połączenie otrzymuje komunikat o nieosiągalnym miejscu docelowym, gdy router lub host pośredniczący nie może go dostarczyć. W konsekwencji urządzenia odrzucają datagram.
- Tłumienie źródła: Gdy urządzenia nie dostarczają datagramu z powodu przeciążenia sieci, wysyłają komunikat ICMP „komunikat tłumienia źródła” do nadawcy wiadomości. Komunikat raportowania błędów dodaje kontrolę przepływu w warstwie sieciowej, informując urządzenie źródłowe o przeciążeniu na ścieżce i spowalniając proces wysyłania danych.
- Przekierowanie: Router na nieoptymalnej ścieżce przekierowuje pakiet do routera o optymalnej ścieżce między źródłem a miejscem docelowym. W związku z tym aktualizuje źródło o zmianie trasy.
- Problem z parametrem: Urządzenie źródłowe odbiera ten komunikat, gdy w nagłówku datagramu brakuje jakiejkolwiek wartości. Na przykład różnica w obliczonej sumie kontrolnej w miejscu docelowym ze źródła generuje ten komunikat o błędzie ICMP.
Zapytanie o wiadomości
Komunikaty zapytania występują w parach i dostarczają określone informacje z urządzeń pośrednich do urządzenia źródłowego.
- Wiadomość Echo-Request i Echo-Reply: Te komunikaty pomagają rozwiązać problemy z diagnostyką sieci.
- Żądanie i odpowiedź znacznika czasu: Te żądania znaczników czasu i komunikaty odpowiedzi pomagają określić czas podróży w obie strony między urządzeniami.
Zrozumienie parametrów ICMP
Dane komunikatów ICMP są enkapsulowane pod nagłówkiem IP, co oznacza, że nagłówek datagramu ICMP występuje po informacjach IPv4/v6. Pierwsza część nagłówka pakietu ICMP zawiera parametry, które pomagają urządzeniom sieciowym określić komunikat o błędzie lub zapytanie.
Spośród pierwszych 32 bitów, pierwsze 8 bitów określa typ wiadomości, następne 8 bitów określa kod wiadomości, a pozostałe bity zawierają informacje związane z integralnością danych. Stąd trzy pola informacyjne to: typy ICMP, kod ICMP i suma kontrolna.
Typy ICMP
Typ określa przeznaczenie pakietu ICMP. Ponieważ pokrótce wyjaśnia, dlaczego urządzenie źródłowe odbiera tę wiadomość. Istnieje od 0 do 255 typów komunikatów ICMP, z których każdy zawiera inne informacje. Niektóre ważne typy ICMP to:
0: żądanie echa
3: Miejsce docelowe nieosiągalne
4: hartowanie źródła
5: Przekierowanie
8: Echo Odpowiedz
11: Przekroczono czas
12: Problem z parametrami
30: Traceroute
Kod ICMP
Kod ICMP dostarcza dodatkowych informacji o komunikatach. Na przykład ICMP typu 3 z kodem 0-15 określa, dlaczego miejsce docelowe jest nieosiągalne; oznacza to, że jeśli kod ma wartość 0, oznacza to, że sieć jest niedostępna. Podobnie w przypadku kodu 1 typu 3 komunikat określa, że host jest nieosiągalny.
Co więcej, typ 8 kod 0 i typ 0 kod 0 reprezentują komunikaty żądania echa i odpowiedzi echa. Dlatego każdy typ wiadomości o tej samej wartości kodu daje różne informacje o sieci.
Suma kontrolna
Suma kontrolna to mechanizm wykrywania błędów, który określa integralność danych. Wartość sumy kontrolnej reprezentuje bity w komunikacie transmisji. Nadawca oblicza i uwzględnia sumę kontrolną danych, a odbiorca przelicza wartość i porównuje ją z oryginalną, aby określić wszelkie zmiany w oryginalnej wiadomości podczas transmisja.
Druga część nagłówka wskazuje na wartość bajtu, która jest przyczyną problemu w oryginalnej wiadomości. Wreszcie końcowa część pakietu ICMP to rzeczywisty datagram.
Przypadek użycia ICMP
Oto kilka działających przykładów protokołu ICMP w różnych narzędzia do zarządzania siecią i narzędzia administracyjne.
Świst
Ping to narzędzie wiersza poleceń, które opiera się na żądaniach echa ICMP i komunikatach odpowiedzi na echo w celu przetestowania dostępności sieci i opóźnień między urządzeniami. Narzędzie po prostu określa dostępność serwera docelowego, szacując całkowitą liczbę wysłanych lub odebranych pakietów oraz procent utraty pakietów. Pomaga również określić całkowity maksymalny rozmiar jednostki transmisji (MTU).
Posługiwać się świst aby określić dostępność google.com:
Traceroute
Traceroute to kolejne narzędzie wiersza polecenia, które używa komunikatów echo-request i echo-reply ze zmienną TTL do mapowania ścieżki między urządzeniami źródłowymi i docelowymi. Przydaje się również do określania opóźnień odpowiedzi i zapewnia dokładność poprzez wielokrotne odpytywanie każdego przeskoku.
Jak działa ICMP bez portu?
Z powyższego wyjaśnienia wynika, że ICMP jest protokołem bezpołączeniowym, który niezależnie wysyła dane jako datagram, a jego nagłówek pojawia się po szczegółach IPv4. Jednak można również zauważyć brak numeru portu, co rodzi pytanie, w jaki sposób urządzenia odbierają dane ICMP lub uzyskują informacje o jakimkolwiek połączeniu?
Odpowiedź jest dość prosta. Protokół ICMP został zaprojektowany do pracy w warstwie sieciowej modelu OSI i komunikacji między routerami a hostami w celu udostępniania informacji. Numery portów są częścią warstwy transportowej, a ICMP nie jest protokołem TCP ani UDP. Wreszcie kombinacja typu ICMP i kodu pomaga urządzeniom określić komunikat i uzyskać wszystkie informacje o sieci.
Kontrola błędów i przepływu za pomocą ICMP
Powyższe szczegóły dotyczące protokołu ICMP pokazują, w jaki sposób zapewnia on kontrolę przepływu i kontrolę błędów danych w warstwie trzeciej modelu OSI. Komunikaty protokołu i parametry w pierwszej części nagłówka pakietu ICMP obejmują wszystkie aspekty zarządzania siecią i kwestie diagnostyczne.
Ważne jest, aby wiedzieć, że niewłaściwe ustawienia zapory mogą pozwolić napastnikom na przeczesywanie sieci organizacji przez pakiety ping i narażać ją na ataki DDOS, ping of death i ICMP flood. Możesz użyć Wireshark do przechwytywania pakietów z Internetu i wykonaj szczegółową analizę pakietów ICMP w celu lepszego zrozumienia.
5 sposobów na naprawienie błędu „Brak jednego lub więcej protokołów sieciowych” w systemie Windows 10
Czytaj dalej
Powiązane tematy
- Wyjaśnienie technologii
- Sieć komputerowa
O autorze
Rumaisa jest niezależnym pisarzem w MUO. Nosiła wiele kapeluszy, od matematyka po entuzjastę bezpieczeństwa informacji, a teraz pracuje jako analityk SOC. Jej zainteresowania obejmują czytanie i pisanie o nowych technologiach, dystrybucjach Linuksa i wszystkim, co dotyczy bezpieczeństwa informacji.
Zapisz się do naszego newslettera
Dołącz do naszego newslettera, aby otrzymywać porady techniczne, recenzje, bezpłatne e-booki i ekskluzywne oferty!
Kliknij tutaj, aby zasubskrybować