Protokół IP nie posiada żadnego mechanizmu, dzięki któremu moża się upewnić, że pakiet danych dotarł do celu. Dane mogą nie dotrzeć do celu z bardzo wielu różnych powodów, takich jak: awaria sprzętu, zła konfiguracja sieci, niewłaściwe informacje na temat routingu. Aby zidentyfikować awarie w sieci protokół IP używa sygnałów nternet Control Message Protocol (ICMP), aby poinformować nadawcę, o problemie w dostarczeniu wiadomości.
Ponieważ protokół IP nie ma żadnych wbudowanych mechanizmów wysyłąjących informacje kontrolne i na temat błędów wysyła on sygnały ICMP. Wiedza na temat sygnałów ICMP jest niezbędna podczas analizowani problemów występujących w sieci, jest ona kluczem do pełnego poznania zasady działania sieci opartych na protokole IP. Pełny opis nagłówków ICMP można znaleźć w dokumencie RFC 792.
Protokół IP jest niepewną metodą przesyłania wiadomości od nadawcy do odbiorcy. Nie posiada on wbudowanych mechanizmów, dzięki którym można określić problemy występujące w sieci. Jeżeli jakieś urządzenie pośredniczące takie jak router zawiedzie, lub jeżeli odbiorca wiadomości jest odłączony od sieci, to pakiet danych nie może zostać przekazany. Internet Control Message Protocol (ICMP) jest komponentem stosu protokołów TCP/IP, który lokalizuje problemy w sieci. Protokół ICMP nie identyfikuje błędów w sieci, bo tym zajmują się prtotokoły wyższych warstw, ICMP powiadamia tylko o zaistniałych problemach.
Protokół ICMP jest częścią składową protokołu IP. Kiedy zdarzy się problem z dostarczeniem wiadomości protokół ICMP powiadamia o tym nadawcę pakietu. Na przykład, zgodnie ze sechematem Host 1 wysyła wiadomość do Hosta 6, ale interfejs Fa0/0 na routerze C jest w trybie Down, router C wysyła wiadomość ICMP do Hosta 1 powiadamiając go o tym, że nie może przekazać pakietu danych do hosta 1.
|
Kiedy router C otrzyma pakiet danych od Hosta 1, zna on tylko adres źródłowy i adres przeznaczenia. Nie zna on dokładnej ścieżki jaką przebył pakiet od źródłowego Hosta 1. Jest on wstanie określić tylko brak dostępności Hosta 6, i może on rozsyłać sygnały ICMP tylko dotyczące Hosta 6.
Wiadomości ICMP są enkapsulowane w datagramy, tak samo jak inne wiadomości przesyłane za pomocą protokołu IP. Skoro wiadomości ICMP są przesyłane w taki sam sposób jak inne wiadomości, to także i sygnały ICMP mogą nie dotrzeć do adresu przeznaczenia. Scenariusz, w którym raport na temat błędu generuje kolejne raporty na temat błędów, mógłby spowodować przeciążenie w działającej sieci. Dlatego problem z dostarczeniem wiadomości ICMP nie generuje kolejnych wiadomości ICMP.
Komumnikacja w sieci zależy od pewnych ustalonych warunków, które muszą zostać spełnione. Wsystkie urządzenia wysyłające i odbierające komunikaty muszą mieć poprawnie zainstalowany protokół TCP/IP oraz właściwie skonfigurowane adresy IP hostów i masek sieci lub podsieci. Aby pakiety mogły się wydostać poza sieć, musi być skonfigurowana brama domyślna. Urządzenia pośredniczące muszą być w stanie przenosić dane z źródła do celu, jeżeli to koniczene między różnymi sieciami. Za te funkcje odpowiadają routery. Aby router mógł poprawnie wykonywać swoje działania musi także mieć zainstalowany protokół TCP/IP oraz adresy IP interfejsów i maski sieciowe. Odpowiedni protokół routingu powienien być uaktywniony.
Jeżeli te warunki nie zostaną spełnione komunikacja w sieci nie będzie możliwa. Na przykład urządzenie wysyłąjące może zaadresować datagram do nieistniejącego adresu IP, lub do urządzenia, które nie jest podłączone do sieci. Routery także mogą być źródłem problemów w komunikacji, jeżeli interfejs jest w stanie donw, lub jeżeli router nie posiada informacji koniecznych do odnalezienia zdalnej sieci. Jeżli zdalna sieć nie jest dostępna, mówi się że jest nieosiągalna.
Protokół ICMP może służyć do testowania osiągalności docelowego adresu IP. Jeżeli zapytanie ICMP dotrze do urządzenia o określonym aresie IP, to urządzenie to tworzy odpowiedź Echo i wysyła ją do z powrotem do nadawcy zapytania. Jeżeli nadawca wiadomości otrzyma odpowiedź Echo od zdalnego adresu IP, oznacza to że ten adres IP jest osiagalny za pomocą protokołu IP. Zapytanie Echo inicjuje się za pomoca polecenia Ping.
Sytuacja może zdażyć się w sieci, w której datagram krąży w sieci, nigdy nie docierając do celu. Jeżeli dwa routery przesyłają sobie wzajemnie pakiet danych myśląc błednie, że wysyłąją pakiet do routera oznaczonego jako następny skok. Ograniczenia maksymalnej liczby skoków może pomóc w rozwiązaniu tego problemu, oznaczając zdalną sieć jako nieosiągalną. Na przykład protokół RIP ma goraniczoną liczbę skoków do 15, oznacza to że pakiet zostanie przpuszczony maksymalnie przez 15 routerów. Istnienia w sieciach nadmiernie oddalnonych routerów nie da się uniknąć. Aktualna ścieżka może być okrężną drogą prowadzącą przez zbyt dużlą liczbę skoków i może przewyższać maksymalną ich liczbę. W takiej sytuacji mówi się o osiągnięciu czasu Time-To-Live, czyli TTL. Zazwyczaj liczba TTL oznacza jednocześnie maksymalną liczbę skoków zdefiniowana przez protokół. Wartość TTL jest zdefiniowana dla każdego datagramu. Jeżeli pakiet przechodzi przez router wartość TTL jest zmniejszana o 1, tak długo aż osiągnie wartosć 1. Jeżeli wartość TTL osiągnie stan 0 pakiet jest uniważniany. Protokół ICMP wysyła do hosta źródłowego wiadomość, że wartość TTL dla tego pakietu została przekroczona.
Podobnie jak inne typy pakietów, tak i wiadomości ICMP mają wiele formatów i składają się z kilku części. Kżada wiadomość ICMP posiada swoją unikalną charakterystykę, ale wszystkie wiadomości ICMP składają się z tych samych pól.
Pole Type zawiera informacje, które sygnalizują typ wiadomości ICMP. Pole Code zawiera informacje na temat rodzaju wiadomości. Pole Checksum podobnie jak w innych nagłówkach służy do sprawdzania integralności pakietu.
Datagramy nie zawsze mogą zostać prawidłowo dostarczone do celu. Problemy sprzętowe, nieprawidłowa konfiguracja protokołów, interfejsy w stanie Down, nieprawidłowe informacje na temat routingu to jedne z powodów, dzięki którym nie jest możliwe dostarczenie pakietów danych do celu. W takich przypadkach protokół ICMP wysyła do nadawcy informacje, że pakiet danych nie może zostać prawidłowo dostarczony do nadawcy.
Sygnał o tym, że nie można dostarczyć datagramu jest generowany także w przypadku, kiedy wymagana jest fragmentacja datagramu. Fragmentacja taka jest konieczna między innymi podczas przesyłania danych z sieci Token-Ring do sieci Ethernet. Kiedy datagram nie pozwala na to, aby został podzielony generowany jest sygnał, ogłaszający niemożność dostrczenia pakietu do celu.
Urządzenia sieciowe, które zajmują się przesyłaniem wiadomości mogą nie być w stanie dostarczyć pakietu danych do celu, generując w ten sposób różne typy błędów. Te błędy nie odnoszą się do stanu docelowego hosta lub sieci, lecz zapobiegają dalszemu przesyłaniu datagramów. W takiej sytuacji protokół ICMP wysyła wiadomość do źródłowego adresu IP informując go o wystąpieniu problemów w dostarczeniu datagramu.
Protokół Internet Control Message Protocol (ICMP) jest integralną częścią stosu protokołów TCP/IP. Wszystkie implementacjie protokołu IP muszą zawierać wsparcie dla ICMP. Powód tej sytuacji jest bardzo prosty. Protokół IP sam w sobie nie gwarantuje pewnego dostarczenia datagramu i nie posiada on żadnych funkcji, które zajmują się informowaniem o wystopieniu błędów. Protokół IP nie ma także żadnych wbudowanych funkcji, które zajmują się przesyłanie wiadomości informacyjnych i kontrolnych. Te zadania dla protokołu IP wykonuje ICMP.
Stos protokołów TCP/IP pozwala na połączenie i komunikację systów rozprzestrzenionych na znacznym obszarze geograficznym. Każda z małych, indywidualnych sieci, przeprowadza synchronizację czasu w swoim zakresie. W rezultacie host używający jakiegoś oprogramowania, które próbuje nawiązać kontakt ze znacznie odległym hostem może czasami napotkać na pewne problemy. Wiadomość ICMP typu timestamp może złagodzić ten problem.
Zapytanie ICMP timestamp pozwala hostowi na poznanie czasu jaki jest aktualny w strefie, w której jest umieszczony zdalny host. Odległy host używa odpowiedzi ICMP timestamp, aby przekazać tę informację hostowi, który o nią poprosił. Odpowiedź od odległego hosta zawiera czas jaki był akutalny, w chwili otrzymania zapytania o ten czas. Czas jest podawany w ilości milisekund jakie upłyneły od czasu północy w Czasie Uniwersalnym (Universal Time (UT)).
Wiadomości ICMP timestamp są prostą drogą na przekazania wiadomości o akutalnym czasie na zdalnym hoście, nie jest to jednak najlepsze rozwiązanie. Zamiast tego radzi się stosować bardziej rozbudowane narzędzie jakim jest protokół Network Time Protocol (NTP), który działa w wyższych warstwach stosu protokołów TCP/IP. Synchronizacja czasu jest wtedy bardziej niezawodna.
Wiadomości zawierające zapytania i odpowiedzi ICMP były pierwotnie przeznaczone do uzyskania inforamcji na temat numeru sieci. Dwa typy wiadomości ICMP dalej służą do tego celu, sa to wiadomości typu 15 (zapytanie) i typu 16 (odpowedź), wiecej na temat numerów typów wiadomości ICMP mozna przeczytać w RFC7 792. Do tego celu służą także inne protokoły, takie jak BOOTP i Dynamic Host Configuration Protocol (DHCP).
Kiedy administrator sieci dzieli główne adresy IP na podsieci, są tworzone nowe adresy IP masek dla tych podsieci.
Ta nowa maska jest bardzo ważna w identyfikacji bitu sieci, podsieci i hosta. Jeżeli host nie zna maski odległej
podsieci może wysłać zapytanie do lokalnego routera. Jeżeli adres routera jest znany to zapytanie zostanie wysłane
tylko do niego, w przeciwnym wypadku zapytanie zostanie rozesłane w trybie Broadcast. Kiedy router otrzyma prośbę o
udzielenie takiej informacji, wysyła ją do hosta, który o nią prosił.
Na przykład jakiś Host jest umieszczony w
sieci klasy B, a jego adres IP to 172.16.5.2. Host ten nie zna interesującego go adresu maski podsieci, wysyła więc
zapytanie w trybie Broadcas.
Source address: 172.16.5.2 Destination address: 255.255.255.255 Protocol: ICMP = 1 Type: Address Mask Request = AM1 Code: 0 Mask: 255.255.255.0Wiadomość ta zostałą odebrana między innymi przez lokalny router o adresie IP 172.16.5.1. Router wysyła, więc odpowiedź w postaci:
Source address: 172.16.5.1 Destination address: 172.16.5.2 Protocol: ICMP = 1 Type: Address Mask Reply = AM2 Code: 0 Mask: 255.255.255.0Zapytanie i odpowiedź o maskę sieciową to odpowiednio wiadomości typu 17. i 18., które są opisane szerzej w RFC 792.
Kiedy host zostaje podłączony do sieci i nie został on ręcznie skonfigurowany (m. in. brama domyślna), może dowiedzieć się o osiągalnych routerach za pomocą procesu odkrywania. Proces ten rozpoczyna się poprzez rozesłanie wiadomości router solicitation message, do wszystkich routerów za pomocą adresu multicast 224.0.0.2. Wiadomość ta może także zostać rozesłana w trybie broadcast, tak aby mogła zostać dostarczona także do tych routerów, które nie maja włączonego odbioru w trybie multicast. Jeżeli wiadomość zostanie przesłana do routera, który ma wyłączony tryb poznawania sieci, host nie otrzyma żadnej odpowiedzi. Kiedy wiadomość wysłana z hosta dotrze do routera, który ma włączony tryb poznawania sieci, odsyła on swoje ogłoszenie z powrotem do hosta, który o nie prosił.
Host generuje zaputanie ICMP typu Router solicitation message w przypadku, gdy nie ma on skonfigurowanej bramy domyślnej. Wiadomość ta jest rozsyłana w trybie multicast. Lokalny router w swoim ogłoszeniu daje adres IP bramy domyślnej dla danego, lokalnego hosta.
Jeżeli wiele komputerów w tym samym czasie próbuje zdobyć dostęp do tego samego, docelowego adresu IP. Docelowy komputer, może zostać "przygnieciony" nadchodzącym ruchem. Przeciążenie może zdażyć się także, kiedy ruch z szybkiej sieci LAN dotrze do wolniejszego połączenia WAN. Porzucenie pakietów zdaża się, kiedy w sieci jest za duże przeciążenie. Wiadomość ICMP typu source-quench jest wysyłana, aby zredukować liczbę utraconych pakietów. Wiadomość ta jest wysyłana do nadawcy z prośbą o zmniejszenie liczby wysyłanych pakietów. W większości przypadków przeciążenie łagodnieje w krótkim okresie czasu. Hosty, które spowodowały to przeciążenie zwiąkszają pomału ilość wysyłanych pakietów, do czasu, gdy znów otrzymają prośbę ICMP o zmniejszenie transmisji. Większość routerów Cisco domyślnie nie wysyła wiamości source-quench.
Sieci typu small office home office (SOHO) są sieciami, gdzie wiadomości ICMP source-quench messages mogą być efektywnie wykorzystane. Sieć SOHO składa się na przykład z czterech komputerów spiętych skętką CAT-5, a do internetu są podpięte za pomocą modemu 56K. Jak łatwo zauważyć, że dzięki przepustowości 10Mbsp, jaką daje skrętka szybko można przeciążyć połączenie WAN 56K, w rezultacie dane zostają tracone i muszą być przesyłana ponownie