Sieci Komputerowe Protokół IPv4 - Internet Protocol ver.4 Protokół IP ver.6 dr Zbigniew Lipiński Instytut Matematyki i Informatyki ul. Oleska 48 50-204 Opole zlipinski@math.uni.opole.pl
Protokół IPv4. Wstęp Protokół IP, (ang.) Internet Protocol. RFC 791. Protokół IP jest protokołem warstwy Sieci modelu OSI. Pakiety IP nazywamy datagramami. Protokół IP jest protokołem bezpołączeniowym, tzn. nadawca i odbiorca nie budują połączenia. Protokół IP nie ma mechanizmów sprawdzania poprawności przesyłanych datagramów. 2
Protokół IPv4. Wstęp Datagramy mogą być adresowane do: pojedynczego hosta, transmisja w trybie unicast, do grupy hostów, transmisja w trybie multicast, do wszystkich hostów w danej sieci - transmisja w trybie broadcast. W sieciach internetowych datagramy IP przesyłane są przez routery. Routery modyfikują nagłówki przesyłanych datagramów IP, np. zmieniają wartość w polu TTL, wyliczają sumę kontrolną dla nagłówka IP. Routery wyznaczają trasy przesyłania datagramów i zajmują się obsługą błędów transmisji. 3
Fragmentacja datagramów - Maximum Transfer Unit Protokoły w warstwie transportowej nie mają ograniczeń na wielkość segmentów TCP, pakietów UDP. Wielkość datagramów IP określana jest przez aplikację sieciową która wysyła dane. Maksymalna wielkość datagramu IP w sieciach internetowych może wynosić 65 535 bajtów (64 kb), RFC 1191. W rożnych typach sieci, np. Toke Ring, FDDI, ATM, Frame Relay, urządzenia transmisyjne pracujące w warstwie Łączą Danych mogą transmitować ramki o określonej maksymalnej wielkości (sieci mają rożne MTU), dlatego w warstwie Sieci datagramy mogą być dzielone, tzn. podlegać fragmentacji. MTU, Maximum Transfer Unit, określa maksymalną wielkość pakietu dla danego typu sieci, RFC1122. MTU, maksymalna wielkość danych jaka może być transmitowana w danym rodzaju sieci, RFC 1191, czyli wartość w pou dane dla danego typu ramki, wielkość datagramu IP. Wartość MTU może się zmieniać od 68 bajtów do 64 kb w zależności od typu sieci (RFC 1191). Uwaga: W sieciach Novell'a protokół IPX nie ma mechanizmów fragmentacji pakietów. 4
Maximum Transfer Unit (MTU) Przykłady. MTU, maksymalna wielkość danych jaka może być transmitowana w danym rodzaju sieci, RFC 1191. sieć Ethernet MTU 1 500 bajtów sieć Token Ring 4Mb/16Mb MTU 4 464/17 914 bajtów sieć FDDI MTU 4 352 bajtów X.25 MTU 576 bajtów Frame Relay MTU 8 000 bajtów ATM MTU 9 180 bajtów (RFC 1577). Kontrole fragmentacji, fragmentacje, defragmentacje datagramów IP wykonują urządzenia warstwy Sieci, np. routery. Aby wykryć maksymalną wielkość ramki jaka może być przesłana router wysyła duży pakiet danych z flagą 'don't fragment=1'. Jeżeli router odbierający ma MTU mniejsze niż wielkość odebranego datagramu porzuca go i wysyła do nadawcy wiadomości ICMP, z kodem informującym, że datagram został porzucony. Po odebraniu komunikatu ICMP router nadający ustawia parametr PATH-MTU (P-MTU) na odpowiednią wielkość i podczas tworzenia pakietów nie przekracza zapisanej w P-MTU wielkości. Routery przechowują w P-MTU wartości MTU i adresy IP z których pochodzą. 5
Zadanie. Fragmentacja datagramów. Wyznaczanie liczby fragmentów datagramu IP gdy nadawca wysyła pakiet o wielkości 3000 bajtów z sieci A do sieci C poprzez ruter B, gdy MTU(sieć A) = 4000 bajtów MTU(sieć B) = 508 bajtów MTU(sieć C) = 1500 bajtów. Sieć A: Fragmentacja nie jest wymagana. Wielkość początkowego PDU = 3000 bajtów + 20 bajtów (PCI). PDU=3020 bajty. MTU 4000 bajtów > 3020 bajty. Sieć B: Fragmentacja jest wymagana. MTU 508 bajtów < 3020 bajty. Wielkość fragmentacji = 508-20 bajtów = 488 bajtów. Całkowita liczba pakietów wysłana przez się B = round(3000/488) = 7 pakietów. Pierwsze 6 pakietów po 508 bajtów, ostatni, 7 pakiet 72 + 20 bajtów = 92 bajty. Sieć C: Fragmentacja nie jest wymagana. Router C otrzymuje 7 pakietów, 6 o wielkości 488 bajtów, 1 o wielkości 92 bajty. MTU 1500 bajtów > 508 bajtów. 6
Dokumentacja o Maximum Transfer Unit Zasady określania wielkości MTU dla danej trasy są opisane w RFC 1191, 'Path MTU Discovery'. RFC 1791, 'TCP And UDP Over IPX Networks With Fixed Path MTU'. RFC 1981, 'Path MTU Discovery for IP version 6'. RFC 2225, 'Classical IP and ARP over ATM'. 7
Struktura nagłówka datagramu IPv4. RFC 791 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 +-++-++-++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Version IHL Type of Service Total Length +-+-+-+-+-+-++-++-++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Identification Flags Fragment Offset +-+-+-+-+-+-+-+-+-+-+-++-++-++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Time to Live Protocol Header Checksum +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-++-++-++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Source Address +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-++-++-++-+-+-+-+-+-+-+-+-+-+-+-+ Destination Address +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-++-++-++-+-+-+-+-+-+-+ Options Padding +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-++-++-++-+-+ 8
Struktura nagłówka datagramu IPv4 Wersja, (Version). Wielkość: 4 bity. Pole zawiera numer wersji protokołu IP, wartości: 4 lub 6. Długość nagłówka, (IHL). Wielkość: 4 bity. Pole długość nagłówka, IHL, ang. Internet Header Length, określa liczbę 32-bitowych słów z których składa się nagłówek datagramu. Minimalna długość nagłówka wynosi 5. Typ obsługi, (Type of Service). Wielkość: 8 bitów. Pole określa typ wyboru trasy, np. trasa z min. opóźnieniem, z maks. przepustowością. Znaczenie bitów pola 'Type of Service': (*) Pierwsze trzy bity określają priorytet (Precedence): 000 - oznacza datagram zwykły (Routine) 001 - priorytetowy (Priority) 010 - natychmiastowy (Immediate) 011 - błyskawiczny (Flash) 100 - datagram super błyskawiczny (Flash Override) 101 CRITIC/ECP 110 sterowanie siecią zewnętrzna (Internetwork Control) 111 sterowanie siecią (Network Control) 9
Struktura nagłówka datagramu IPv4 Znaczenie bitów pola 'Type of Service' (cd.): (*) Czwarty bit D określa opóźnienie (D=0 normalne, D=1 małe opóźnienie). (*) Piąty bit T określa przepustowość (T=0 normalna, T=1 duża przepustowość). (*) Szósty bit R określa niezawodność dostarczenia datagramu (R=0 normalna, R=1 duża niezawodność). (*) Ostatnie dwa bity mają wartości 00, są zarezerwowane dla przyszłych zastosowań. Długość całkowita, (Total Length). Wielkość: 16 bitów. Pole zawiera informacje o liczby bajtów (8-bitowe słowa) z których składa się datagram (nagłówek i dane). Max. długość datagramu IP to 65 535 bajtów (datagram IP nie może być większy niż 64 KB). Pola Identyfikator, Flagi, Przesuniecie fragmentu używane są w procesie fragmentacji i defragmentacji pakietów. Identyfikator, (Identification). Wielkość: 16 bitów. Pole służy do oznaczenia datagramu który podlega fragmentacji. Identyfikator danego datagramu jest powtarzany we wszystkich fragmentach a jakie został podzielony dany datagram. 10
Struktura nagłówka datagramu IPv4 Flagi, (Flags). Wielkość; 3 bity. Pole flagi składa się z 3 bitów: pierwszy bit, wartość: 0 drugi bit określa czy datagram może (1), nie może (0) być fragmentowany trzeci bit - oznaczenie ostatniego fragmentu podzielonego datagramu (0 -ostatni, 1-kolejny fragment). Przesuniecie fragmentu, (Fragment Offset). Wielkość: 13 bitów. Pole określa położenie fragmentu w dzielonym datagramie. Przesuniecie fragmentacji jest mierzone w 8- bajtowych słowach (jednostka to 8 bajtów = 64 bity). Pierwszy fragment ma przesuniecie równe zeru. Czas życia, (Time to Live, TTL). Wielkość: 8 bitów. Pole określa ile czasu datagram może przebywać w sieci. Czas życia datagramu ustala nadawca umieszczając w polu liczbę 1-255. Przy przejściu przez router wartość TTL jest zmniejszana co najmniej o 1 (1 oznacza 1 sekundę). Gdy TTL=0, router porzuca datagram i wysyła komunikat o błędzie. Maksymalny czas życia datagramu wynosi 255 sekund. czyli 4 minuty 15 sek.. Typ protokółu, (Protocol). Wielkość: 8 bitów. Pole określa rodzaj protokołu który jest 'zapakowany' w datagram IP. Wartości: 6 protokół TCP, 17 (Hex 11) UDP, 1 protokół ICMP, szczegóły w RFC 790. 11
Struktura nagłówka datagramu IPv4 Suma kontrolna nagłówka, (Header Checksum). Wielkość: 16 bitów. Pole suma kontrolna nagłówka służy do sprawdzania poprawności nagłówka datagramu. Pole określa liczba 16-bitowych słów w nagłówku datagramu IP (jeżeli wyliczona suma nie zajmuje 16 bitów wartość jest uzupełniana jedynkami). Przy obliczaniu sumy kontrolnej przyjmuje się, że pole Header Checksum zawiera same zera. Wartość sumy podlega modyfikacji każdym węźle sieci, np. po zmianie wartości pola TTL. Specyfikacja RFC 791 dopuszcza stosowania w tym polu liczenia sumy kontrolnej innymi metodami, np, algorytmem CRC. Adres IP nadawcy, (Source Address). Wielkość: 32 bity. Pole zawiera adres IP nadawcy datagramu. Adres IP odbiorcy, (Destination Address). Wielkość: 32 bity. Pole zawiera adres IP odbiorcy datagramu. Opcje, (Options). Wielkość: zmienna, (max. 11 bajtów). Jeżeli pole 'Opcje' jest puste, pole 'Długość nagłówka' ma wartość 5 (20 bajtów). Pole 'Opcje' jest wykorzystywane do określenia dodatkowych wymagań dotyczących sposobu przesyłania datagramu, np. do rejestrowania przebytej trasy lub do zapamiętania trasy zdefiniowanej przez nadawcę. Pole jest opcjonalne. 12
Struktura nagłówka datagramu IPv4. Opcje Warianty formatu pola 'Opcje': Pojedynczy bajt 'option-type'. Zawiera informacje o typie opcji. Ciąg bajtów: option-type, option-length, option-data. Bajt 'option-length' zawiera informacje o liczbie bajtów w polu 'Opcje'. Bajty 'option-data' zawiera dane opcji. Bajt 'option-type' składa się z: bit pierwszy - znacznik 'skopiowane', (copied flag). Wartość 1, znacznika 'skopiowane' oznacza, że opcja ma być przekopiowana do wszystkich fragmentów. bity drugi, trzeci - bity określają klasę opcji (option class). bity od czwartego do ósmego - określają numer opcji (option number). Wartości klasy opcji (option class): 0, oznacza: kontrola datagramów (control) 1, zarezerwowane do przyszłego użytku 2, oznacza: poprawianie błędów i pomiary (debugging and measurement) 3, zarezerwowane do przyszłego użytku 13
Struktura nagłówka datagramu IPv4. Opcje Wartości bitów numer opcji (option number): Klasa: 0. Nr. Opcji: 0. Koniec listy opcji (End of Option List). Klasa: 0. Nr. Opcji: 1. Brak działania (no operation). Bajt może być użyty między opcjami do oznaczenia np. początku opcji. Klasa: 0. Nr. Opcji: 2. Bezpieczeństwo (security). Określa sposób przesłania parametrów związanych z bezpieczeństwem. Klasa: 0. Nr. Opcji: 3. Zgub źródło routingu, LSRR (loose source and record route). Oznacza żądanie nie korzystania przez gateway z informacji o routingu wysłanej przez nadawcę i śledzenia trasy datagramu. Routery magą wybrać dowolną trasę do odbiorcy. Klasa: 0. Nr. Opcji: 9. Strict source and record route (SSRR). Oznacza żądanie korzystania z informacji o routingu wysłanej przez nadawcę i śledzenia trasy datagramu. Routery muszą korzystać z trasy zawartej w polu dane opcji. Klasa: 0. Nr. Opcji: 7. Record route. Oznacza żądanie śledzenia trasy datagramu. Klasa: 0. Nr. Opcji: 8. Identyfikator danych (stream ID). Klasa: 2. Nr. Opcji: 4. Znacznik czasu (Internet Timestamp). Przykład: Opcja typu 0, (Type=0). Wielkość: 8 bitów. Wartość pola option-type = 00000000. Opcja typu 1, (Type=1). Wielkość : 8 bitów. Wartość pola option-type = 00000001, tzn. copied flag =0, option class = 00, option number = 00001. 14
Struktura nagłówka datagramu IPv4. Opcje Opcja: Security. Option number = 2. Typ, (option-type). Wielkość: 8 bitów. Wartość pola option-type=130, (1 00 00010), tzn. copied flag =1, option class = 00, option number = 00010. Długość opcji, (option-length). Wielkość: 8 bitów. Wartość pola option-length=11, (00001011). S, (Security). Wielkość: 16 bitów. 16 poziomów bezpieczeństwa z czego 8 jest nie używanych (zarezerwowanych). 00000000 00000000 - Unclassified 11110001 00110101 - Confidential 01111000 10011010 EFTO (Encrypt for Transmission Only) 10111100 01001101 MMMM 01011110 00100110 - PROG 10101111 00010011 - Restricted 11010111 10001000 - Secret 01101011 11000101 - Top Secret C, (Compartments). Wielkość: 16 bitów. H, (Handling Restrictions). Wielkość: 16 bitów. Instrukcja DIAM 65-19, "Standard Security Markings Intelligence Agency. TCC, (Transmission Control Code). Wielkość: 24 bity. Pole służy do znakowania transmisji do poszczególnych odbiorców. Opcja: Loose Source and Record Route. Option number = 3. Typ, (option-type). Wielkość: 8 bitów. Wartość option-type=131, (10000011), tzn. copied flag =1, option class = 00, option number = 00011. Długość, (option-length). Wielkość: 16 bitów. Wskaźnik, (pointer). Wielkość: 16 bitów. Dane o routingu, (route data). Wielkość: 32 bity. 15
Struktura nagłówka datagramu IPv4. Opcje Opcja: Strict Source and Record Route. Option number = 9. Typ, (option-type). Wielkość: 8 bitów. Wartość pola option-type=137, (10001001), tzn. copied flag =1, option class = 00, option number = 01001. Długość, (option-length). Wielkość: 16 bitów. Wskaźnik, (pointer). Wielkość: 16 bitów. Dane o routingu, (route data). Wielkość: 32 bity. Opcja: Stream Identifier. Option number = 8. Typ, (option-type). Wielkość: 8 bitów. Wartość pola option-type=136, (10001000), tzn. copied flag =1, option class = 00, option number = 01000. Długość, (option-length). Wielkość: 8 bitów. Wartość pola option-length = 00000100. Identyfikator danych, (Stream ID). Wielkość: 16 bitowy. 16
Struktura nagłówka datagramu IPv4 Uzupełnienie. Wielkość: zmienna. Pole jest jedynkowym uzupełnieniem pola Opcje tak, aby długości nagłówka była wielokrotnością 32 bitów (jednostka w polu długość nagłówka). Dane. wielkość: zmienna. Pole dane zawiera dane aplikacji. Bity 1-4 5-8 9-12 13-16 17-19 20 21-24 25-28 29-32 Version IHL Type of Service Total Length Identification Flags Fragment Offset Time to Live Protocol Header Checksum Source Address Destination Address Options (max. 11 bajtów) Padding Data Struktura datagramu IPv4 17
Protokół IPv6. Wstęp IPv6, ang. Internet Protocol version 6. RFC 2460 W początkowej fazie prac zwany protokołem IPng, (ang.) Internet Protocol: Next Generation. IPv6 jest następcą protokołu IPv4. Jedna z głównych przyczyn wprowadzenia protokołu IPv6 jest brak wolnej przestrzeni adresowej. Za pomocą 32-bitowego adresu w IPv4 można zaadresować 2 32-1 (4 294 967 295) urządzeń sieciowych. W tej chwili większość 32-bitowych adresów IP jest wykorzystana lub zarezerwowana. Linki: http://www.ipv6forum.com/ 18
Cechy protokołu IPv6 Cechy protokołu IPv6: Długość adresu 128-bity. Adres zapisuje się za pomocą ośmiu 16-bitowych liczb oddzielonych dwukropkami. Przykład: 2FF3 : 5A48 : BC66 : 7895 : AAAB : DEF7 : FFFF : 9898 Brak podziału na klasy adresowe A, B, C, D, E. Wprowadzono trzy typy adresów: unicast, multicast, anycast. Nowa struktura nagłówka IP z rozszerzeniem na dane o aplikacjach i opcje. Brak pola z suma kontrolna w nagłówku (pole checksum w IPv4). Wprowadzono pole Flow label dla kontroli jakości transmisji. Wprowadzono mechanizm ochrony przed fragmentacja datagramów w trakcie przesyłania. Dla ewentualnej fragmentacji datagramu wprowadzono możliwość dodania nagłówka określającego rozszerzenia (pola header extensions). Wbudowano mechanizm identyfikacji datagramów i szyfrowania danych w datagramie. 19
Typy adresów IPv6 IPv6 rozróżnia trzy typy adresów: unicast (połączenie adresów 1-1), multicast (połączenie adresów 1 - wielu), anycast (połączenie adresów 1 1 ale wiele hostów). Rodzina adresów typu unicast. Adresy identyfikujące pojedyncze hosty. Rodzina adresów typu multicast Adresy określające grupę hostów zdolnych do odbioru tego samego pakietu. Adres multicastowy pełni funkcje takie jak broadcast w IPv4 ale ma większą elastyczność w definiowaniu grup multicastowych (np. dany host może należeć do kilku grup multicastowych). Rodzina adresów typu anycast Adresy identyfikujące grupy interfejsów w pojedynczym adresie multicastowym. 20
Struktura nagłówka datagramu IPv6 Wersja, (IP Version number). Wielkość: 4 bity. Pole w określa wersje protokołu IP, wartość pola 'IP Version number' = 6. Klasa ruchu, (Traffic class). Wielkość: 8 bitów. Wartość pola określa priorytet przesyłania datagramu. Priorytet określa kolejność przesyłania datagramów. Bity 1-4 5-8 9-12 13-16 17-20 21-24 25-28 29-32 Version Traffic Class Flow Label Payload Length Next Header Hop Limit Source Address (128 bits) Destination Address (128 bits) Data Struktura datagramu IPv6 Pole Traffic class klasyfikuje i dzieli datagramy na dwie kategorie: z kontrolą przeciążenia (congestion controlled) bez kontroli przeciążenia (noncongestion controlled.) Datagramy bez kontroli przeciążenia zawsze są rutowane z określonym priorytetem w stosunku do datagramów z kontrolą przeciążenia. Datagramy z bez kontroli przeciążenia mają priorytety od 8 do 15 (priorytety nia są zdefiniowane). Datagramy z kontrolą przeciążenia podlegają ochronie przed problemami z przeciążeniem sieci. Gdy występuje przeciążenie szybkość przesyłania datagramów może być spowolniona a datagramy mogą być cache'wane do czasu usunięcia problemów. Datagramy z kontrolą przeciążenia są podzielone na kategorie określające priorytety datagramów. 21
Struktura nagłówka datagramu IPv6 Bity 1-4 5-8 9-12 13-16 17-20 21-24 25-28 29-32 Priorytety dla datagramów z kontrolą przeciążenia: Wartość: 0. Znaczenie: nie określono priorytetu (No priority specified). Wartość: 1. Znaczenie: Background traffic. Wartość: 2. Znaczenie: Unattended data transfer. Wartość: 3. Znaczenie: nieokreślone (Unassigned). Wartość: 4. Znaczenie: Attended bulk transfer. Wartość: 5. Znaczenie: nieokreślone (Unassigned). Wartość: 6. Znaczenie: Interactive traffic. Wartość: 7. Znaczenie: kontrola ruchu (Control traffic). Version Traffic Class Flow Label Payload Length Next Header Source Address (128 bits) Destination Address (128 bits) Data Struktura datagramu IPv6 Hop Limit Transmisje związane z routingiem i zarządzaniem siecią mają najwyższy priorytet 7 (category 7). Aplikacje takie, jak telnet mają przypisany priorytet 6 (category 6). Transmisje które nie są 'time-critical' i są kontrolowane przez takie aplikacje, jak np. FTP mają priorytet 4 (category 4). E-mail ma przypisany priorytet 2. 22
Struktura nagłówka datagramu IPv6 Etykieta Potoku, (Flow Label). Wielkość: 20 bitów. Służy do określenia typu hosta biorącego udział w komunikacji (np. czy host jest z systemem Unix czy Windows). Informacje o typie węzła pozwala lepiej wykorzystać parametry transmisji danych. Długość danych, (Payload Length). Wielkość: 16 bitów. Pole określa całkowitą długość danych (wyrażoną w bajtach) datagramu IP (bez nagłówka datagramu). 16-bitowa długość pola ogranicza max. długość datagramu do 65 535 bajtów. Istniej możliwość przesłania dłuższego datagramu korzystając z rozszerzonego nagłówka datagramu IP Następny nagłówek, (Next Header). Wielkość: 8 bitów. Pole 'Następny nagłówek' służy do określania następnego nagłówka, typu 'extensions', jaki następuje po nagłówku IP. Protokół IPv6 umożliwia doklejanie dodatkowych nagłówków 'header extensions' umieszczanych nad nagłówkiem datagramu IP, tzn. między nagłówkiem TCP (UDP) a IP. Dodawanie dodatkowych nagłówków jest niezbędne gdy np. droga routowania jest skomplikowana lub wprowadzone są dodatkowe usługi takie, jak autoryzacja datagramów. 23
Wartości pola 'Następny nagłówek ' Wartości pola 'Następny nagłówek ': Wartość: 0. Znaczenie: Hop-by-hop options Wartość: 4. Znaczenie: IP Wartość: 6. Znaczenie: TCP Wartość: 17. Znaczenie: UDP Wartość: 43. Znaczenie: Routimg Wartość: 44. Znaczenie: Fragment Wartość: 45. Znaczenie: Interdomain Routine Wartość: 46. Znaczenie: Resource Reservation Wartość: 50. Znaczenie: Encapsulating Security Wartość: 51. Znaczenie: Authentication Wartość: 58. Znaczenie: ICMP Wartość: 59. Znaczenie: No Next Header Wartość: 60. Znaczenie: Destination Options Bity 1-4 5-8 9-12 13-16 17-20 21-24 25-28 29-32 Version Traffic Class Flow Label Payload Length Next Header Hop Limit Source Address (128 bits) Destination Address (128 bits) Data Struktura datagramu IPv6 24
Struktura nagłówka datagramu IPv6 Rekomendowana kolejność nagłówków typu 'header extension': Nagłówki wyższych warstw Destination Options header Encapsulating Security Payload header Authentication header Fragment header Routing header Destination Options header Hop-by-Hop Options header IPv6 header Pole 'Opcje' występuje w dwóch nagłówkach: Hop-by-Hop Options Destination Options Bity 1-4 5-8 9-12 13-16 17-20 21-24 25-28 29-32 Version Traffic Class Flow Label Payload Length Next Header Hop Limit Source Address (128 bits) Destination Address (128 bits) Data Struktura datagramu IPv6 Pole 'Opcje' składa się z: Option Type. Wielkość: 8 bitów. Opt Data Len. Wielkość: 8 bitów. Option Data. Wielkość: zmiana. 25
Struktura nagłówka datagramu IPv6 Nagłówek: Hop-by-Hop Extension. Next Header. Wielkość: 8 bitów. Pole określa typ następnego nagłówka. Hdr Ext Len. Wielkość: 8 bitów. Pole określa długość nagłówka 'Hop-by-Hop Extension' w bajtach, włączając bajt 'Next Header'. Options. Wielkość: zmienna. Nagłówek: Routing Extension Nagłówek jest dodawany do nagłówka IP gdy host wysyłający datagaramy chce kontrolować trasę datagramu. Informacja w zawarta w 'routing extension' zawiera pola dla każdego adresu IP rutera na trasie przesyłania datagramu. Next Header. Wielkość: 8 bitów. Pole określa typ następnego nagłówka. Hdr Ext Len. Wielkość: 8 bitów. Routing Type. Wielkość: 8 bitów. Segments Left. Wielkość: 8 bitów. Routing Data. Wielkość: zmienna. 26
Struktura nagłówka datagramu IPv6 Nagłówek: Fragment. Ten typ nagłówka dodaje się gdy zachodzi konieczność fragmentacji datagramu. Next Header. Wielkość: 8 bitów. Pole określa typ następnego nagłówka. Reserved. Wielkość: 8 bitów. Fragment Offset. Wielkość: 13 bitów. Res. Wielkość: 2 bity. M flag. Wielkość: 1 bit. Identification. Wielkość: 32 bitów. Nagłówek: Authentication. Typ nagłówka dodawany jest gdy używany jest mechanizm ochrony danych zawartych w datagramie (zapewnienia ze dane przesyłane w datagramie nie zostały zmienione) i identyfikacji hosta z której pochodzi datagram. Standardowo IPv6 używa algorytmu Message Digest 5 (MD5) do identyfikacji datagramów. Pole w nagłówku Authentication zawiera parametry SPI (Security Parameters Index) które wraz z adresem IP hosta odbierającego datagram używane są przez MD5 do identyfikacji datagramu. Parametry SPI są zapisane za danymi identyfikacyjnymi, które z MD5 tworzą 16 bajtowy string. Algorytm MD5 generuje 128-bitowa wartość i umieszcza ją w nagłówku identyfikacyjnym (authentication header). Odbiorca datagramu generuje klucz identyfikacyjny który musi być taki sam jak klucz nadawcy. Przed generowaniem kluczy identyfikacyjnych, zawartość datagramu może być zaszyfrowana przy użyciu schematu szyfrowania DES (Data Encryption Standard) w formie CBC (Cipher Block Chaining). 27
Struktura nagłówka datagramu IPv6 Przykład: Kolejność 'doklejania' nagłówków typu 'extension headres'. Next Header = Routing Routing header Next Header = Fragment Fragment header Next Header = TCP fragment of TCP header + data Kolejność nagłówków w IPv6 fragment of TCP header + data Fragment header Next Header = TCP Routing header Next Header = Fragment IPv6 header Next Header = Routing IPv6 header Kolejnosc naglowkow w IPv6 28
Struktura nagłówka datagramu IPv6 Liczba skoków, (Hop Limit). Wielkość: 8 bitów. Pole określa max. liczbę skoków (liczbę routerów) przez które może przejeść datagram. Po każdym skoku (hopie) wartość pola jest zmniejszana o 1, po osiągnięciu wartości 0 datagram jest gubiony. Adres IP nadawcy. Wielkość: 128 bitów. Adres IP odbiorcy. Wielkość: 128 bitów. Bity 1-4 5-8 9-12 13-16 17-20 21-24 25-28 29-32 Version Traffic Class Payload Length Flow Label Next Header Hop Limit Source Address (128 bits) Destination Address (128 bits) Data Struktura datagramu IPv6 29
Cechy adresu IPv6 (zmiany) Zera w adresie IPv6 mogą być pominięte: 2FF3 : 0000 : BC66 : 0000 : AAAB : DEF7 : FFFF : 9898 2FF3 : : BC66 : : AAAB : DEF7 : FFFF : 9898 Dla IPv4 96 bitów 0 na początku adresu 0000 : 0000 : 0000 :0000 : 0000 : 0000 : FFFF : 9898 Więcej podziałów na cześć określającą adres sieci i adres węzłów. Adres anycast oznacza adres jednego węzła, multicast adres grupy węzłów (grupy multicastowej). Brak sum kontrolnych w nagłówku (szybsza transmisja). Zastosowanie w telefonii bezprzewodowej (GSM, UMTS). Do fragmentowanego datagramu dodaje się specjalny nagłówek. Routery nie fragmentują datagramów. 30