ICMP

Transkrypt

ICMP
Sieci Komputerowe
Protokół ICMP - Internet Control Message Protocol
Protokół ICMP version 6
dr Zbigniew Lipiński
Instytut Matematyki i Informatyki
ul. Oleska 48
50-204 Opole
[email protected]
Zagadnienia
Funkcje protokołu ICMP
Typy wiadomości ICMP
Format wiadomości ICMP z parametrami datagramu IP
Komunikaty o błędach w transmisji wiadomości ICMP
Przykład: datagram ICMP ECHO Response
Narzedzia ping, tracert
Protokołu ICMP ver.6
2
Protokół ICMP. Wstęp
ICMP, ang. Internet Control Message Protocol. RFC 792
Protokół ICMP jest protokołem warstwy sieci modelu OSI.
Protokół IP jest protokołem bezpołączeniowym, bez mechanizmów kontroli błędów.
Protokół ICMP został opracowany do obsługi błędów w transmisji datagramów IP.
Protokół ICMP wykorzystywany jest do:
•
przesyłania informacji do nadawcy o błędach w transmisji
•
generowania pakietów do testowania sieci.
Po odebraniu komunikatu ICMP nadawca datagramu IP może:
•
zidentyfikować datagram z którym pojawiły się problemy
•
zidentyfikować rodzaj błędu.
3
Protokół ICMP. Wstęp
Wiadomości ICMP są kapsułkowane w datagram IP i są traktowane przez routery tak, jak
datagramy IP.
Wiadomości ICMP są generowane gdy:
• datagram IP nie dotrze do odbiorcy (np. ze względu na wartość pola TTL=0)
• szybkość transmisji jest zbyt duża i odbiorca nie może odebrać nadchodzących pakietów
(pole 'Window' w nagłówku TCP)
• odbiorca chce aby datagramy były przesyłane inna trasą (pole 'Opcje' w datagramie IP)
• nastąpiło uszkodzenie datagramu (błędna wartość w polu 'Header Checksum').
W datagramie ICMP przesyłany jest
• Nagłówek,
• pierwsze 8 bajtów danych datagramu IP w którym wystąpił błąd.
4
Struktura datagramu ICMP
Każdy pakiet ICMP składa się z:
•
nagłówka IP
•
danych wiadomości ICMP
•
•
pola: typ wiadomości
•
pola: kod
•
pola: suma kontrolna.
innych pól w zależności od typu wiadomości ICMP.
Wszystkie pola ze statusem 'nieużywane' mają wartość 0.
Wiadomości ICMP zawarte są w polu 'Dane' datagramu IP.
Pierwszy bajt danych datagramu IP zawiera pole 'Type' (typ wiadomości).
Wartość pola 'Type' określa format pozostałej części datagramu.
5
Nagłówek IP wiadomości ICMP
Nagłówek IP wiadomości ICMP ma strukturę standardowego nagłówka IP:
Pole:
Wersja, (Version). Wielkość: 4 bity.
Pole określa wersje protokołu IP. Wartość pola Version = 4.
Pole:
Długość nagłówka (IHL, Internet header length). Wielkość: 4 bity.
Pole zgodne ze specyfikacja protokołu IP.
Pole określa liczbę 32 bitowych slow nagłówku IP.
Pole:
Typ usługi, (Type of Service). Wielkość: 8 bitów.
Wartość pola Type of Service = 0.
Pole:
Długość całkowita, (Total Length). Wielkość: 16 bitów.
Pole zgodne ze specyfikacja protokołu IP.
Pole określa liczbę bajtów w nagłówku IP i danych datagramu ICMP.
Pole:
Identyfikator, (Identification). Wielkość: 16 bitów.
Pole:
Flagi, (Flags). Wielkość: 3 bity.
Pole:
Przesuniecie fragmentu, (Fragment Offset). Wielkość: 13 bitów.
Pole zgodne ze specyfikacja protokołu IP.
6
Nagłówek IP wiadomości ICMP
Pole:
Czas życia, (Time to Live). Wielkość: 8 bitów.
Pole zgodne ze specyfikacja protokołu IP.
Czas życia datagramu liczony jest w sekundach.
Pole:
Typ protokołu, (Protocol). Wielkość: 8 bitów.
Typ protokołu w datagramie IP.
Dla protokołu ICMP wartość pola Protocol = 1.
Pole:
Suma kontrolna nagłówka, (Header Checksum). Wielkość:16 bitów.
Pole zgodne ze specyfikacja protokołu IP.
Pole:
Adres IP nadawcy, (Source Address). Wielkość: 32 bity.
Pole zgodne ze specyfikacja protokołu IP.
Pole zawiera adres nadawcy wiadomości ICMP.
Pole:
Adres IP odbiorcy, (Destination Address). Wielkość: 32 bity.
Pole zgodne ze specyfikacja protokołu IP.
Pole zawiera adres odbiorcy wiadomości ICMP.
7
Nagłówek IP wiadomości ICMP
1
2
3
4
5
6
7
4
8
W ersja
D lugo sc
na glo wk a
12
B ity
16
Typ uslu gi
20
24
28
32
C alko wita d lu go sc d atagramu
Id en tyfik ato r
F lagi
P rzesu n iecie fragmen tu
C zas zycia
Typ pro to ko lu
S u ma k o ntro ln a n aglo wk a
Ad res IP n ad awcy
Ad res IP o d b io rcy
O p cje IP
Uzup eln ien ie
D an e
N aglo wek d atagram IP v4
8
Format danych wiadomości ICMP
Ogólny format wiadomości ICMP:
Pole:
Typ, (Type). Wielkość: 8 bitów.
Pole określa rodzaj wiadomości ICMP.
Pole:
Bajty
Kod, (Code). Wielkość: 32 bity.
1
2
1
Typ ICMP
Kod
2
Wskaznik
3
Naglowek datagramu IP + 64 bity z pola Dane datagramu IP
Pole określa kod błędu.
Pole:
3
4
Suma kontrolna
Pole nieuzywane
Wiadomosc ICMP
Suma kontrolna, (Checksum). Wielkość: 16 bity.
Suma kontrolna jest ilością 16-bitowych słów w wiadomości ICMP, liczonej od pola 'Type'.
Przy liczeniu sumy kontrolnej pole 'Checksum' ma długość zero.
Pole:
Wskaźnik, (Pointer). Wielkość: 8 bitów.
Pole określa numer bajtu, w którym wystąpił błąd.
Pole 'Code' musi mieć wartość 0 (komunikat o błędzie).
Pole:
Pole nieużywane, (unused). Wielkość: 32 bity.
Pole:
Informacje o błędnym datagramie.
Informacja zawiera nagłówek i pierwsze 64 bity danych datagramu IP w którym wykryto błąd.
W pierwszych 8 bajtach danych zawarte może być np. typ i numer portu nadawcy.
9
Wartości pola 'Typ wiadomości' w komunikacie ICMP
Pole 'Type'
Opis pola
0
Odpowiedz Echo
3
Cel nieosiagalny (Destination Unreachable).
4
Wygasniecie zrodla (Source Quench).
5
Przekierowanie (Redirect).
8
Zadanie Echo (Echo Request).
11
Parametr TTL =0 (Time To Live Exceeded)
12
Niewlasciwy parametr (Parameter Problem).
13
Zadanie znacznika czasu (Timestamp).
14
Odpowiedz ze znacznikiem czasu
(Timestamp Reply).
15
Zadanie informacji (Information Request).
16
Odpowiedz z informacja (Information Reply).
Wartosci pola 'Typ wiadomosci'
10
Wiadomość: Destination Unreachable
Wiadomość: Destination Unreachable.
Pole: Typ = 3, (typ wiadomości: Destination Unreachable).
Pole: Kod
0 = net unreachable (kod generowany przez gateway)
1 = host unreachable (kod generowany przez gateway)
2 = protocol unreachable (kod może być generowany przez hosta)
3 = port unreachable (kod może być generowany przez hosta)
4 = fragmentation needed and DFset (kod generowany przez gateway)
5 = source route failed (kod generowany przez gateway)
Pole: Suma kontrolna
Pole: Nagłówek IP + 64 bitów danych z zgubionego datagramu.
Wiadomość destination unreachable służy do informowania nadawcy ze odbiorca datagramu IP jest nieosiągalnych.
Wiadomość jest wysyłana jest przez router w przypadku gdy:
•
adres docelowy IP nie istnieje (host docelowy jest wyłączony, ma odłączona siec, źle ustawioną maskę), występuje
wtedy typ wiadomości 'host unreachable'
•
router nie może dostarczyć datagramu do danej sieci, występuje wtedy typ 'network unreachable'.
11
Wiadomość: Destination Unreachable
Gdy wiadomość 'destination unreachable' jest wysyłana przez hosta oznacza to, że:
•
dany host nie obsługuje któregoś z protokołów, występuje wtedy komunikat 'protocol unreachable'
•
port protokołu TCP jest nieosiągalny, występuje wtedy typ 'port unreachable'.
Typ=3
Kod
Suma kontr.
Pole niewykorzystane
Naglowek IP + 64 bity danych z dat agramu IP
Wiadomosc ICMP: Destination Unreachable
12
Wiadomość: Time Exceeded
Wiadomość: Time Exceeded.
Router wysyła do nadawcy datagramu wiadomość typu 'time exceeded' (typ 11) jeśli pole 'czas życia' (pole TTL)
osiągnie wartość 0.
Pole: Typ = 11, (typ wiadomości: Time Exceeded).
Pole: Kod
0, time to live exceeded in transit (kod może być generowany przez gateway)
1, fragment reassembly time exceeded (kod może być generowany przez hosta)
Pole: Suma kontrolna
Pole: Nagłówek datagramu IP + 64 bitów danych z datagramu.
T yp=11
Kod
S u m a k o ntr.
P o le nie w y k o rzy s ta ne
N a glo w e k IP + 6 4 b ity d a ny c h z d a t a gra m u IP
W ia d o m o s c IC M P : T im e E xc e e d e d
13
Wiadomość: Parameter Problem
Wiadomość: Parameter Problem.
Pole: Typ = 12, (typ wiadomości: Parameter Problem).
Pole: Kod = 0, (wskazuje na błąd).
Pole: Wskaźnik, (Pointer). Wielkość: 8 bitów.
Numer bajtu w którym wykryto błąd.
Pole: Suma kontrolna.
Pole: Nagłówek datagramu IP + 64 bitów danych z datagramu.
Wiadomość: parameter problem, typ12, używane jest gdy wystąpi błąd w nagłówku IP.
Gdy wiadomości 'parameter problem' jest wysalana do nadawcy datagramu, dodawana jest informacja o numerze bajtu w
nagłówku datagramu w którym wystąpił błąd.
T yp=12
W s ka znik
Kod=0
Suma kontr.
Pole nie wykorzystane
N aglowek IP + 64 bity danyc h z da t a gramu IP
W ia domos c IC M P: Pa rame te r Proble m
14
Wiadomość: Source Quench
Wiadomość: Source Quench (wygaśniecie źródła).
Pole: Typ =4, (typ wiadomości: Source Quench)
Pole: Kod =0.
Pole: Suma kontrolna
Pole: Nagłówek datagramu IP + 64 bitów danych z datagramu.
Wiadomość: source quench, typ wiadomości 4, używana jest do kontroli szybkości wysyłania datagramów.
Gdy odbiorca nie nadąża z odbiorem datagramów IP, odbiorca wysyła wiadomości ICMP 'source quench', po którym
nadawca wstrzymuje transmisje do czasu ponownego pojawienia się wiadomości 'source quench'.
Wiadomość 'source quench' może być wysłana przez router lub hosta odbierającego datagramy, np. z powodu
przepełnionego bufora.
T y p =4
K o d =0
S u m a k o ntr.
Po le nie w y k o rzy s ta ne
N a glo w e k IP + 6 4 b ity d a ny c h z d a t a gra m u IP
W ia d o m o s c IC M P : S o u rc e Q u e nc h
15
Wiadomość: Redirect
Wiadomość: Redirect.
Pole: Typ = 5, (typ wiadomości: Redirect).
Pole: 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.
Pole: Suma kontrolna
Pole: Adres IP gatewaya
Pole: Nagłówek datagramu IP + 64 bitów danych z datagramu.
Wiadomość: redirect (typ 5) jest wysyłana gdy odbiorca datagramu IP, chce zmienić gateway przez który są przesyłane
datagramy.
Wiadomość zawiera adres nowego gatewaya.
Gateway musi znajdować sie w tej samej sieci.
Po otrzymaniu wiadomości 'redirect' nadawca aktualizuje swoja tablice routingu.
Wiadomość typu 'redirect' wysyłana jest do gateway’a w przypadku gdy została znaleziona lepsza trasa przesyłania
datagramow.
16
Wiadomość: Redirect
W polu code, wiadomości 'redirect' wpisany zostaje parametr określający warunki przekierowania datagramow:
•
0 oznacza, ze datagram musi być przekierowany
•
1 oznacza, ze tylko datagramy kierowane do konkretnego węzła powinny być przekierowane
•
2 oznacza, ze powinny być przekierowane datagramy z tym samym polem 'type of service' (pole w nagłówku
datagram IP)
•
3 oznacza, ze powinny być przekierowne tylko datagramy kierowane do konkretnego węzła z tym samym polem 'type
of service'.
Typ=5
Kod
Suma kontr.
Adres IP gateway'a
Naglowek IP + 64 bity danych z datagramu IP
Wiadomosc ICMP: Redirect
17
Wiadomość: Echo, Echo Reply
Wiadomość: Echo, Echo Reply.
Pole: Typ = 8 (typ wiadomości: echo).
0 (typ wiadomości: echo reply).
Typ=8, 0
Kod=0
Identyfikator
Pole: Kod = 0.
Suma kontr.
Kolejny numer
Dane
Pole: Suma kontrolna.
Pole: Identyfikator
Wiadomosci ICMP: Echo, Echo Reply
Pole: Kolejny numer
Pole: Dane
Dane zwarte w wiadomości 'Echo' musza być zwrócone w wiadomości 'Echo Replay'.
Wiadomości: echo, echo reply (typ 8, 0) są używane do sprawdzania jakości łączy i stanu urządzeń w sieci.
Sprawdzanie komunikacji ze zdalnym hostem odbywa się poprzez wysalanie ‘żądanie Echa', jeżeli host jest dostępny
odpowiada komunikatem 'echo reply'.
Narzędzia korzystające wiadomości ICMP 'echo': ping, tracert.
18
Wiadomość: Timestamp, Timestamp Reply (znacznik czasu)
Wiadomość: Timestamp, Timestamp Reply (znacznik czasu).
Pole: Typ = 13 (typ wiadomości: timestamp).
14 (typ wiadomości: timestamp reply).
Pole: Kod = 0.
Pole: Suma kontrolna.
Pole: Identyfikator (identifier).
Pole: Kolejny numer (sequence number).
Pole: Znacznik czasu źródła.
Pole: Znacznik czasu otrzymany.
Typ=13, 14
Kod=0
Identyfikator
Suma kontr.
Kolejny numer
Znacznik czasu zrodla
Znacznik czasu otrzymany
Znacznik czasu wyslany
Wiadomosci ICMP: Timestamp, Timestamp Reply
Pole: Znacznik czasu wysłany.
Pola Identyfikator (identifier) i Kolejny numer (sequence number) mogą być użyte przez nadawcę do identyfikacji
odpowiedzi na wysłane zapytanie (matching replies with requests).
Znacznik czasu jest 32 bitowa liczba określająca liczbę milisekund jaki upłynął od początku dnia (od godz. 0.00) czasu
Universal Time do chwili wysłania wiadomości ICMP.
Czas odbioru (timestamp) zawarty w wiadomości jest zwracany w widomości 'timestamp reply' z dodatkowym
znacznikiem.
19
Wiadomość: Timestamp, Timestamp Reply (znacznik czasu)
Znacznik czasu źródła (timestamp source) określa moment (czas jaki upłynął od godz. 0.00 czasu UT) ostatniej
modyfikacji wiadomość przez nadawcę.
Znacznik czasu otrzymany (receive timestamp) określa czas w którym urządzenie odpowiadające (echoer) odebrało
zapytanie (first touched it on receipt).
Znacznik czasu wysłany (transmit timestamp) jest czasem w którym 'echoer' wysłał odpowiedz (last touched message on
sending it).
Wiadomości: timestamp requests i tmestamp replies umożliwiają monitorowanie czasu transmisji wiadomości.
Typ=13, 14
Kod=0
Identyfikator
Suma kontr.
Kolejny numer
Znacznik czasu zrodla
Znacznik czasu otrzymany
Znacznik czasu wyslany
Wiadomosci ICMP: Timestamp, Timestamp Reply
20
Wiadomość: Information Request, Information Reply
Wiadomość: Information Request, Information Reply.
Pole: Typ = 15, (typ wiadomości: Information Request)
16, (typ wiadomości: Information Reply)
Pole: Kod = 0.
Pole: Suma kontrolna.
Pole: Identyfikator (identifier).
Pole: Kolejny numer (sequence number).
Wiadomość może być wysłana przez hosta do wszystkich hostów w danej sieci, pola 'source address' i 'destination
address' w nagłówku datagramu IP są wypełnione zerami (co oznacza 'ta siec') w celu zidentyfikowania adresu sieci.
Pole 'identyfikator' w zapytaniu musi być wypełnione w celu identyfikacji i skojarzenia odpowiedzi z odpowiednim
zapytaniem.
T yp=15, 16
Identyfikator
Kod=0
Suma kontr.
Kolejny numer
Wiadomosci IC MP:
Information Request, Information Reply
21
Funkcje protokołu ICMP
Wiadomości:
•
address mask requests (typ 17)
•
address mask replies (typ 18)
są używane do testowania stanu sieci.
Błędy w transmisji komunikatów ICMP
Trasy datagramów z wiadomościami ICMP sa wyznaczane tak, jak dla datagramów IP z danymi aplikacji,
tzn. nie mają dodatkowych priorytetów i zabezpieczeń.
Wiadomości ICMP o błędach mogą zostać zagubione lub zniszczone.
Dla wiadomości ICMP stworzono wyjątek w procedurach obsługi błędów:
komunikat o błędach nie jest tworzony w przypadku gdy błąd został spowodowany przez datagram
IP zawierający wiadomości ICMP.
22
Przykład: datagram ICMP ECHO Response
# ----- Nagłówek Ethernetowy -----
Protocol = 1 (ICMP)
Packet 2 arrived at 17:37:12.02
Header checksum = fa30
Packet size = 98 bytes
Destination = 8:0:20:86:35:4b, Sun
Source address = 150.168.233.2,
server.math.edu.pl
Source
Destination address = 150.168.217.110, client
= 0:e0:f7:26:3f:e9, CISCO Router
Ethertype = 0800 (IP)
# ----- Nagłówek IP -----
No options
# ----- Naglowek ICMP -----
Version = 4
Type = 0 (Echo reply)
Header length = 20 bytes
Code = 0 (net unreachable)
Type of service = 0x00 (normal)
Checksum = 45da
Total length = 84 bytes
Payload Data
Identification = 43771
Flags = 0x4
.1.. .... = do not fragment
..0. .... = last fragment
Fragment offset = 0 bytes
Time to live = 252 seconds/hops
23
Narzędzie: ping
Narzędzie ping, (ang.) Packet InterNet Groper, służy do sprawdzenia stanu łączy i dostępności węzła sieci.
Ping korzysta z protokołu ICMP, komunikatów ICMP 'Echo Request' i 'Echo Reply'.
RFC 2151, 'A Primer On Internet and TCP/IP Tools and Utilities', 1997.
Składnia polecenia:
ping [-t] [-a] [-n count] [-l size] [-f] [-i TTL] [-v TOS] [-r count] [-s count] [[-j host-list] | [-k host-list]] [-w timeout] destination-list
Opcje:
-t
Ping the specified host until stopped.
To see statistics and continue - type Control-Break; To stop - type Control-C.
-a
Resolve addresses to hostnames.
-n wartosc
Liczba komunikatow typu 'echo requests' do wyslania.
-l wielkosc Wielkość wysylanych zaytan typu 'echo requests'
-f
ustaw parametr 'don't Fragment' w pakiecie
-i TTL
ustawia wartosc TTL
-v TOS
Type Of Service.
-r count
Record route for count hops.
-s count
Timestamp for count hops.
-j host-list
Loose source route along host-list.
-k host-list Strict source route along host-list.
-w timeout Timeout in milliseconds to wait for each reply.
24
Narzędzie: tracert
Narzędzie tracert służy do sprawdzenia stanu łączy, dostępności węzła sieci, zwraca nazwę kolejnych routerów przez
które przechodzi zapytanie tracert.
Narzędzie tracert wykorzystuje protokół ICMP.
Składnia polecenia:
tracert [-d] [-h maximum_hops] [-j host-list] [-w timeout] target_name
Opcje:
-d
Do not resolve addresses to hostnames.
-h maximum_hops Maximum number of hops to search for target.
-j host-list
Loose source route along host-list.
-w timeout
Wait timeout milliseconds for each reply.
25
Protokół ICMPv6. Wstęp
ICMPv6, (ang.) Internet Control Message Protocol version 6.
Protokół ICMP dla protokołu IPv6.
RFC 2463,Internet Control Message Protocol (ICMPv6) for the Internet Protocol Version 6 (IPv6),1998.
Wiadomości ICMPv6 są przesyłane w datagramie IPv6 z wartością pola Next Header = 58.
4
1
2
Wersja
8
Bity
16
12
Klasa ruchu
20
24
28
32
Etykieta protokolu
Dlugosc danych
Nastepny naglowek
3
Adres IP nadawcy (4 x 32 bity = 128 bitow)
4
Adres IP odbiorcy (4 x 32 bity = 128 bitow)
Ilosc Etapow
Naglowek datagramu IPv6
26
Typy wiadomości ICMPv6
Wiadomości związane z obsługą błędów (wartość pola 'type' 0-127):
•
Destination Unreachable (pole Type = 1)
•
Packet Too Big (pole Type = 2)
•
Time Exceeded (pole Type = 3)
•
Parameter Problem (pole Type = 4).
W wiadomościach związanych z obsługą błędów (error messages) pierwszy bit w polu 'type' ma wartość 0.
Wiadomości informacyjne (wartość pola 'type' 128 - 255):
•
Echo Request (pole Type = 128)
•
Echo Reply (pole Type = 129).
27
Struktura wiadomości ICMPv6
Struktura wiadomości ICMPv6:
Pole:
Typ, (Type). Wielkość: 8 bitów.
Pole:
Kod, (Code). Wielkość: 8 bitów.
Wartość pola 'Code' jest określona dla każdego typu wiadomości ICMPv6.
Pole:
Suma kontrolna, (Checksum). Wielkość: 16 bitów.
Liczba 16-bitowych slow w wiadomości ICMPv6, liczona od pola 'Type' z uwzględnieniem
pseudonagłówka IPv6, tzn. pseudonagłówka IP dla TCPv6 i UDPv6.
Pole:
Dane, (Message Body). Wielkość: zmienna.
Pseudonagłówek IPv6 (dla TCpv6 i UDPv6) składa sie z następujących pól:
Pole:
Source Address. Wielkość: 128 bitów.
Pole:
Destination Address. Wielkość: 128 bitów.
Pole:
Upper-Layer Packet Length. Wielkość: 8 bitów.
Długość nagłówka i pola 'dane' pakietu z 'zapakowanego' w datagram IPv6.
Pole:
Zero. Wielkość: 120 bitów.
Pole:
Next Header. Wielkość: 8 bitów.
Pole określa typ następnego nagłówka, np. wartość pola 6 dla TCP, 17 dla UDP.
28