IP (Internet Protocol)

ITpedia

IP jest najważniejszym protokołem usług bezpołączeniowych, określającym w pierwszym rzędzie podstawową jednostkę przesyłania danych w sieciach TCP/IP – datagram i schemat adresowania. Protokół ten określa również reguły przetwarzania i przenoszenia datagramów oraz metodykę generowania komunikatów o błędach. Inne funkcje wynikną z analizy pól nagłówka. Protokół IP nie zajmuje się kontrolą pakietów, ustawianiem kolejności czy potwierdzaniem odbioru. Błędy wynikające z transmisji mogą być korygowane przez warstwy wyższe. Datagram jest często nazywany pakietem, w tym np. przez grupy IETF.

IP jest w istocie powszechną nazwą protokołu IPv4 (IP wersja 4). Od stycznia 1996 jest on stopniowo zastępowany protokołem nowej generacji – IPv6.

IPv4 (Internet Protocol v4) (RFC 791, 2474)

Nagłówek IPv4 zawiera przynajmniej 12 pól i zajmuje ok. 20 bajtów, co w połączeniu z 20-bajtowym nagłówkiem TCP zwiększa ryzyko przeciążenia protokołów.

Znaczenia pól:

  • Wersja – zawiera liczbę 4, odróżniającą IPv4 od IPv6;
  • Długość nagłówka – długość wyrażana liczbą 32-bitowych słów, nie mniejsza niż 5;
  • Typ usługi – ToS (Type of Service), pole predefiniowane w RFC 2474 Definition of the Differentiated Services Field (DS Field) in the IPv4 and IPv6 Headers. Nosi ono nazwę DS, identyczną jak ośmiobitowe pole Traffic Class w poszerzeniu nagłówka IPv6, i składa się z sześciu bitów DSCP oraz dwu bitów CU rezerwy;
  • Całkowita długość datagramu – liczba bajtów z przedziału 576–65 535;
  • Identyfikator – umożliwia scalenie datagramu poddanego fragmentacji. IP może dzielić datagramy na mniejsze porcje danych – fragmenty;
  • 3 Flagi jednobitowe (b0, b1, b2); b0 = 0 (zarezerwowana), dwie kolejne flagi przenoszą następujące informacje: b1 = 0: (fragmentowanie), b1 = 1: (nie można fragmentować), b2 = 0: (ostatni fragment), bit drugi = 1: (więcej fragmentów);
  • Umiejscowienie fragmentu względem początku datagramu (Fragment offset) – pozycja fragmentu względem początku datagramu określana liczbą przyrostów 64-bitowych w 13-bitowym polu. Przesunięcie pierwszego fragmentu równa się zero;
  • Czas życia – TTL (Time To Live), czas przebywania datagramu w sieci, wyrażany w sekundach. Jeśli ruter przetwarza nagłówek w czasie poniżej 1 s, odejmuje całą sekundę, a jeśli dłużej – odejmuje rzeczywistą wartość. Przy TTL = 0 s pakiet jest kasowany przez ruter, a nadawca otrzymuje stosowny komunikat;
  • Protokół – identyfikator liczbowy protokołu, którego dane są przenoszone w ostatnim polu datagramu IP, zwykle numer ICMP (1) lub TCP (6). W IPv6 numery tych protokołów są inne;
  • Suma kontrolna – umożliwia odbiorcy sprawdzenie poprawności nagłówka. Każde przetwarzanie nagłówka przez węzeł na trasie pakietu musi być odzwierciedlone w tej sumie, np. po zmniejszeniu przez ruter wartości TTL;
  • Opcje – pole występujące w niektórych datagramach – ma różne długości, zależne od dodatkowych wymagań. Pole to składa się z kodu o długości 1 bajta i ciągu pełnych bajtów przenoszących na przykład trasę przebytą przez pakiet.

Słabością IP jest 32-bitowa architektura adresowa z niewygodną hierarchią dwupoziomową typu sieć-komputer i czterema klasami adresowymi. Zawęża ona możliwości adresowania urządzeń i poważnie utrudnia trasowanie. Ponadto IP ma już prawie ćwierć wieku, a Internet przeszedł w tym czasie wiele zmian.

IPv6 (Internet Protocol v6)

W 1993 r. IETF utworzyła grupę roboczą Ipng (Internet Protocol next generation) i powierzyła jej rozwiązanie problemu adresowania IP. Po kilku latach powstał protokół znacznie przewyższający swojego poprzednika. Jego najsilniejszą stroną jest elastyczność i łatwość dostosowania się do zmian oprogramowania i sprzętu sieciowego. Upowszechnianie tego protokołu – pod nazwą IPv6 – miało początek w styczniu 1996.

Nowa wersja ma przede wszystkim poszerzone pola adresowe z 32 do 128 bitów – były one głównym powodem zmian systemu adresowania. Ponadto nagłówek IPv6 jest prostszy.

Zmiany w odniesieniu do IPv4 wyglądają następująco:

  • Pole Typ usługi z IPv4 nosiło w IPv6 najpierw nazwę Priorytet (RFC 1883), a teraz Klasa ruchu (RFC 2460);
  • Usunięto pole Długość nagłówka. W efekcie datagram może być dłuższy;
  • Pola Typ usługi i Całkowita długość zostały zastąpione polami Klasa ruchu i Etykieta przepływu. IPv6 ma dzięki temu mechanizm rezerwowania zasobów, nieodzowny dla aplikacji multimedialnych. Klasa ruchu jest ważna dla różnicowania prostych usług, a Etykieta dla implementowania QoS;
  • Wprowadzono 16-bitowe pole dla zmiennej Długość zawartości datagramu, wyrażanej w bajtach. Zero bajtów oznacza, że długość użytkowa została określona w opcji Jumbo Payload, dzięki której długość datagramu można zwiększać ponad 65 536 bajtów. Jumbogramami (jumbograms) są w IPv6 określane pakiety, których zawartość mieści się w przedziale długości 65 536 – 4 294 967 295 bajtów. Jambogramy w IPv6 są opisane w RFC 2675, a ich użycie w TCP i UDP – w RFC 2147;
  • Pola zawierające informacje o fragmentacji zostały zmodyfikowane i przeniesione do nagłówka dodatkowego;
  • W miejsce pola Protokół wprowadzono pole Następny nagłówek. Wpisanie np. numeru 44 do tego nagłówka będzie sygnalizowało obecność nagłówka fragmentacji IPv6 Fragment Header. Znajdzie się on między polami Adres docelowy a Dane. Z kolei dla bezpieczeństwa ważny jest nagłówek sygnalizowany numerem 50 – ESP (Encapsulating Security Payload) i 51 – IPv6 AH (Authentication Header) itd.;
  • Pole Czas życia (TTL) zostało zastąpione polem Liczba przeskoków (liczba przejść przez rutery, przez węzły wpływające na trasę pakietu). Znaczenie tego pola jest podobne do TTL, chociaż nie przenosi ono liczby sekund – czas jednego przeskoku datagramu IP jest teraz znacznie krótszy od 1s. Liczba przeskoków jest zmniejszana o 1 przez węzeł kierujący ruchem (ruter, przełącznik). Kiedy zmniejszy się do zera, pakiet zostanie skasowany. Największa liczba przeskoków, jaką może wpisać nadawca pakietu, jest bardzo duża – 255.

Nagłówek IPv6 ma stałą długość (40 bajtów) i stałą liczbę pól – 8. Ale dzięki polu Następny nagłówek w pakiecie może się znaleźć więcej nagłówków dodatkowych.

Są one sygnowane następującymi numerami:

  • 0 – Hop-by-Hop Option Header (RFC 2460);
  • 43 – IPv6 Routing Header (RFC 2460);
  • 44 – IPv6 Fragment Header (RFC 2460);
  • 50 – Encapsulating Security Payload (RFC 2406);
  • 51 – IPv6 Authentication Header (RFC 2402);
  • 59 – No Next Header (RFC 2460);
  • 60 – Destination Options Header (RFC 2460);

Nagłówki występują w określonej kolejności. Na przykład: jeśli występuje nagłówek „0”, to musi być pierwszy spośród dodatkowych. Wtedy jest czytany przez wszystkie rutery czy przełączniki na trasie pakietu, a więc staje się szczególnie użyteczny w przenoszeniu informacji ważnych dla RSVP, w zarządzeniu ruchem itp. Z kolei nagłówek „60” może się pojawić przed lub za nagłówkiem „43” (nagłówek trasowania). W pierwszym ustawieniu wymusza przetwarzanie nagłówka „43” przez każdy wyszczególniony węzeł, a w drugim – przez węzeł docelowy.

W IPv6 nie maju już klas adresów dla różnych rozmiarów sieci – możliwości adresowania są teraz tak ogromne (teoretycznie 2128–1), że każdy z użytkowników Internetu mógłby mieć własną sieć globalną. Mają natomiast swoje odpowiedniki w IPv6 formaty adresowania Unicast i Multicast, a ponadto doszedł nowy – Anycast – umożliwiający komunikowanie się z urządzeniem najbliższym z grupy. Jednak Multicast w IPv6 ma o wiele większe znaczenie z uwagi na poszerzone pole adresowe i rezygnację z adresów rozgłaszania w stylu IPv4. Wprowadzono wiele opcji, w tym zapewniających bezpieczeństwo na całej długości trasy pakietu. Ponadto IPv6 nie jest kłopotliwy dla użytkowników komputerów przenośnych.

Adresy IPv6

W IPv6 pola adresowe (nadawcy i odbiorcy) zawierają po 128 bitów i mają postać ośmiu bloków 16-bitowych, oddzielanych dwukropkiem: x : x : x : x : x : x : x : x, gdzie x = yyyy yyyy yyyy yyyy Każdy ciąg binarny yyyy jest przedstawiany w kodzie szesnastkowym. W efekcie przykładowy adres IPv6 może mieć postać: 0111: FACB : 1001 : AC16 : 0000 : 0000 : 0012 : EECD Grupę czterech zer zastępuje się jednym zerem, a ponadto pomija się zera z lewej strony pozostałych grup, dzięki czemu zapis staje się krótszy: 111 : FACB : 1001 : AC16 : 0 : 0 : 12 : EECD Zera rozdzielone pojedynczym dwukropkiem można zastąpić dwoma dwukropkami, wobec czego zapis skraca się jeszcze bardziej: 111 : FACB : 1001 : AC16 :: 12 : EECD Podwójny dwukropek może jednak wystąpić tylko jeden raz w jednym zapisie. Zwraca uwagę fakt, że nawet w tej uproszczonej formie adres jest nie tylko trudny do zapamiętania, ale także do bezbłędnego zanotowania. W tym kontekście DNS nabiera niezwykle ważnego znaczenia. W szesnastkowym systemie liczbowym jest 16 symboli: 10 cyfrowych (0–9) i 6 literowych (A, B, C, D, E, F). Każdemu z symboli 0–F zostały przyporządkowane kolejne kombinacje czterobitowe z naturalnego kodu binarnego: 0=0000,..., 6=0110,..., 9=1001, A=1010, B=1011, C=1100, D=1101, E=1110, F=1111.

-
-