Protokół ICMP
Dziankowski Krzysztof
V rok informatyki
Wydział Matematyki i Informatyki
UMK w Toruniu
dzik@mat.uni.torun.pl
Toruń 21.11.2005
ICMP - Internet Control Message Protocol
Protokół ICMP, inaczej nazywany ICMPv4 został opisany
w RFC 792 (oraz w paru innych), a jego wersja 6 (ICMPv6)
jest opisana w RFC 2463.
Działa w warstwie sieci (razem z IP), jest integralną częścią
protokołu IP. Jego zadaniem jest sygnalizacja błędów oraz
diagnostyka sieci. Komunikat ICMP jest zapakowany w
datagram IP, dlatego też jak UDP jest protokołem
bezpołączeniowym i nie gwarantuje dostarczenia
komunikatu.
Założenia implementacji
Komunikat ICMP Error nie może być wysłany na inny
komunikat ICMP Error
Komunikaty ICMP w przypadku pofragmentowanych
pakietów IP, są wysyłane tylko na pierwszy fragment (nr 0)
Komunikaty ICMP nie są wysyłane na pakiety kierowane
na adres multicastowy oraz broadcastowy
Komunikaty ICMP nie sa wysyłane na pakiety których
adres zródłowy jest adresem zerowym, loopback, broadcast
ani multicast
Nie odpowiadamy na pakiety IGMP
Komuniaty ICMP z nieobsługiwanym typem odrzucamy
Podział komunikatów
Zapytania Informacje o błędach
Echo request/reply
Destination Unreachable
Timestamp request/reply
Source Quench
Information request/reply
Time exceeded
Address mask
Parameter problem
request/reply
Redirection
Router
solicitation/advertisement
Struktura zapytań ICMP
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Code | Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Identifier | Sequence Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Data ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Type typ komunikatu
Code podtyp komunikatu, uszczegółowienie typu
Checksum suma kontrolna nagłówka
Identifier identyfikator, służy do odróżniania pakietów ICMP
wysyłanych do różnych hostów
Sequence number numer sekwencyjny służy do odróżniania
pakietów ICMP wysyłanych do tego samego hosta
Data dane w zależności od typu komunikatu
Echo Request / Reply
Echo Request: typ 8, kod 0
Echo Reply: typ 0, kod 0
Nagłówek standardowy dla zapytań.
Komunikat ten służy do określania, czy dany host w sieci
jest włączony. Na zapytanie, host powinien odpowiedzieć
identycznym pakietem z zamienionym typem na 0. Ilość
danych oraz same dane są zależne od implementacji.
System operacyjny musi mieć zaimplementowane
odpowiadanie na zapytania echo.
Program ping wykorzystuje komunikaty echo.
Timestamp Request / Reply
Timestamp Request: typ 13, kod 0
Timestamp Reply: typ 14, kod 0
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Code | Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Identifier | Sequence Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Originate Timestamp |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Receive Timestamp |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Transmit Timestamp |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Timestamp Request / Reply [cd]
Komunikat ten pozwala na badanie opóznień w przesyłaniu
pakietów. (OS nie musi mieć go zaimplementowanego)
Wysyłając zapytanie, system wypełnia pole Originate
Timestamp aktualnym czasem (ilość milisekund które
upłynęły od północy), w odpowiedzi otrzymujemy pakiet, w
którym powyższe pole się nie zmienia, a pozostałe sa
ustawione następująco:
Recive Timestamp czas otrzymania zapytania.
Transmit Timestamp czas tuż przed wysłaniem odpowiedzi.
Różnica powyższych czasów daje nam opóznienie w
przetwarzaniu pakietu.
Do wygenerowania zapytania można użyć programu:
hping2 -1 icmp-ts host
Information Request / Reply
Information Request: typ 15, kod 0
Information Reply: typ 16, kod 0
Nagłówek standardowy dla zapytań.
Komunikat służył stacjom bezdyskowym do otrzymywania
informacji o własnym adresie IP. Mechanizm ten jest
przestarzały i nie używany.
Lepszym rozwiązaniem jest RARP, BOOTP, DHCP.
Address Mask Request / Reply
Address Mask Request: typ 17, kod 0
Address Mask Request: typ 18, kod 0
Standardowy nagłówek jest rozszerzony o 32 bitowe pole
maski podsieci (subnet address mask).
Komunikat służy stacjom bezdyskowym do otrzymania
maski podsieci.
Tak jak i w poprzednim przypadku lepszym rozwiązaniem
są BOOTP i DHCP.
Do wygenerowania zapytania można użyć programu:
hping2 -1 icmp-addr host
Router Solicitation / Advertisment
Router Solicitation: typ 10
Router Advertisment: typ 9
Komunikat Router Solicitation jest używany przy starcie
komputera (o ile zaimplementowany i włączony) do
znalezienia domyślnej bramki.
Routery co pewien czas ogłaszają się komunikatami Router
Advertisment (wysyłając je na adres broadcastu
(multicastu?)), w celu powiadomienia innych o swoim
istnieniu (co 5 -10 minut), ogłoszenie ma ważność 30
minut.
* informacje ze slajdu z wykładu :)
Ogólna struktura ICMP error
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Code | Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| unused |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Internet Header + 64 bits of Original Data Datagram |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Internet Header + 64 bits ... - nagłówk IP pakietu na który
odsyłamy błąd oraz pierwsze 64 bity (8 oktetów) nagłówka
wyższego protokołu, jeśli protokół wyższej warstwy używa
portów, zakładamy, że numery portów będą ujęte w tych
danych. Dane te służą do określenia procesu któremu należy
przekazać błąd.
Destination Unreachable Message
Destination Unreachable Message: typ 3, kod:
0 - net unreachable (sieć nieosiągalna)
1 - host unreachable (host nieosiągalny)
2 - protocol unreachable (protokół nieosiągalny)
3 - port unreachable (port nieosiągalny)
4 - fragmentation needed and DF set (w odpowiedzi na
pofragmentowany pakiet z ustawioną flagą don't fragment,
sytuacja taka może się zdażyć jeśli pakiet trafi na sieć z
mniejszym MTU, wtedy połowa pola unused zawiera MTU)
5 - source route failed (problem z rutingiem w routerze)
Destination Unreachable Message [cd]
6 destination network unknown (nieużywany,
zamieniony na kod 0)
7 destination host unknown
8 source host isolated (odpowiedz na pakiety których
router nie ma forwardować)
9 communication with destination network is
administratively prohibited
10 - communication with destination host is
administratively prohibited
11 network unreachable for type of service
12 - host unreachable for type of service
13 communication administratively prohibited
14 host precedence violation
15 precedence cutoff in effect
Source Quench
Source Quench: typ 4, kod 0
Komunikaty (tłumienia zródła) służą do zarządzania
pasmem.
Router generuje Source Quench gdy bufor kolejki jest
przepełniony lub dany host za szybko przysyła pakiety. W
takim przypadku serwer odrzuca nadmiar pakietów i
informuje hosta aby zwolnił.
Redirect Message
Redirect Message: typ 5, kod:
0 - Redirect datagrams for the Network.
1 - Redirect datagrams for the Host.
2 - Redirect datagrams for the Type of Service and
Network.
3 - Redirect datagrams for the Type of Service and
Host.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Code | Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Gateway Internet Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Internet Header + 64 bits of Original Data Datagram |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Redirect Message [cd]
* obrazek zapożyczony ze slajdu z wykładu
Redirect Message [cd]
Muszą być spełnione następujące warunki:
Interfejs którym pakiet trafia do rutera musi być tym
samym interfejsem przez który pakiet wychodzi
Podsieć/sieć adresu nadawcy musi być taka sama jak
podsieć/sieć następnego przeskoku
Time Exceeded
Time Exceeded: typ 11, kod:
0 - time to live exceeded in transit
komunikat zwracany w sytuacji gdy pole ttl w
datagramie osiągnie wartość 0
1 - fragment reassembly time exceeded
komunikat zwracany, gdy serwer nie jest wstanie
złożyć ponownie pofragmentowanego pakietu
(brak jakiejś części), nie jest wysyłany gdy
braknie części pierwszej (numer 0)
Parameter Problem
Parameter Problem: typ 12, kod 0
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Code | Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Pointer | unused |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Internet Header + 64 bits of Original Data Datagram |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Pointer identyfikuje oktet którego dotyczy błąd
Jeśli wystąpi problem z nagłówkiem datagramu, który
uniemożliwi poprawne przetworzenie go. Następuje
odrzucenie datagramu i poinformowanie o tym host
zródłowy.
Linki
Zastosowanie ICMP w skanowaniu
http://sys-security.com/index.php?page=icmp
Wszystkie typy ICMP wraz z numerami RFC je opisującymi
http://www.networksorcery.com/enp/default0704.htm
RFC 792
http://www.cse.ohio-state.edu/cgi-bin/rfc/rfc792.html
Wyszukiwarka
Podobne podstrony:
icmpUDP ICMP HeadersSpoof icmpWST icmp arp igmp pptprotokół ICMPIPV6 ICMP MIBicmp cProtokół ICMPicmpICMPicmp c (2)Sieci ICMPIcmp Htmx 087 2 issues icmpwięcej podobnych podstron