IP

Nagłówek Pakietu IPv4

Analiza pól w nagłówku pakietu IPv4, włączając fragmentację i TTL.

Pakiet IPv4 i jego nagłówek

Pakiet IPv4 składa się z nagłówka i przenoszonego ładunku. Nagłówek zawiera między innymi adres źródłowy, adres docelowy oraz pola sterujące, które umożliwiają przekazywanie pakietu i obsługę fragmentacji.

Ładunkiem może być część strony internetowej, wiadomość e-mail lub fragment strumienia wideo. Nagłówek IPv4 jest blokiem metadanych odczytywanym przez routery i hosty, aby dostarczyć pakiet do właściwego miejsca docelowego.

Ogólna Struktura Nagłówka IPv4

Nagłówek IPv4 ma zdefiniowaną, standardową strukturę. Jego standardowy rozmiar to 20 bajtów (160 bitów), choć może być większy, jeśli używane są pola opcjonalne. Nagłówek jest zorganizowany w wiersze po 32 bity (4 bajty) każdy, co ułatwia jego przetwarzanie przez sprzęt sieciowy.

Kolejne pola omówiono w kolejności występowania. Pierwsze 20 bajtów (5 wierszy) jest obowiązkowe w każdym pakiecie IPv4.

Pola 1-4: identyfikacja pakietu

1. Wersja (Ver) - 4 bity

To pierwsze pole identyfikuje wersję używanego Protokołu Internetowego. Dla każdego pakietu IPv4 pole ma wartość binarną 0100, co w systemie dziesiętnym oznacza 4. Pozwala to urządzeniom sieciowym odróżnić pakiet IPv4 od pakietu IPv6, który miałby wartość 6, czyli 0110.

2. Długość Nagłówka Internetowego (IHL) - 4 bity

To pole określa całkowitą długość samego nagłówka. Nagłówek może mieć zmienny rozmiar ze względu na opcjonalne pole "Opcje". Wartość nie jest mierzona w bajtach. Jest to 4-bitowa liczba, która reprezentuje liczbę 32-bitowych słów (bloków 4-bajtowych) w nagłówku.

  • Wartość Minimalna: 0101 (dziesiętnie 5). Odpowiada to długości nagłówka 5×4=205 \times 4 = 20 bajtów, co jest minimalnym możliwym rozmiarem ważnego nagłówka IPv4 (bez opcji).
  • Wartość Maksymalna: 1111 (dziesiętnie 15). Odpowiada to długości nagłówka 15×4=6015 \times 4 = 60 bajtów.

Router używa wartości IHL, aby wiedzieć, gdzie dokładnie kończy się nagłówek, a zaczyna właściwy ładunek danych.

3. Typ Usługi (ToS) / Differentiated Services Code Point (DSCP) - 8 bitów

To pole służy do określania, jak pakiet powinien być traktowany pod względem priorytetu i Jakości Usługi (QoS). Informuje routery, czy pakiet jest częścią aplikacji wrażliwej na czas, takiej jak rozmowa wideo, czy ruchu o mniejszej presji czasowej, takiego jak e-mail.

  • Historycznie (ToS): Pole było podzielone na podpola "pierwszeństwa", "opóźnienia", "przepustowości" i "niezawodności".
  • Nowoczesne użycie: Pierwsze 6 bitów pola jest używane jako wartość Differentiated Services Code Point (DSCP), co pozwala na klasyfikację i priorytetyzację ruchu. Ostatnie 2 bity tworzą pole Explicit Congestion Notification (ECN), które może oznaczać przeciążenie bez odrzucania pakietu. Router może nadać pakietom z określonym DSCP, na przykład dla VoIP, pierwszeństwo podczas zatorów sieciowych.

4. Całkowita Długość Pakietu - 16 bitów

To 16-bitowe pole określa całkowitą długość całego pakietu IP (nagłówek + ładunek danych) w bajtach.

  • Minimalny Rozmiar: 20 bajtów (dla pakietu z nagłówkiem 20-bajtowym i bez danych).
  • Maksymalny Rozmiar: Maksymalna wartość 16-bitowej liczby to 216−1=65,5352^{16} - 1 = 65,535. Zatem maksymalny rozmiar pakietu IPv4 wynosi 65 535 bajtów.

Jednak większość sieci ma mniejszą , na przykład 1500 bajtów dla Ethernetu. Host docelowy używa tego pola do ustalenia, ile danych powinien oczekiwać dla tego pakietu, zwłaszcza po fragmentacji.

Pola 5-7: Obsługa Fragmentacji

Gdy pakiet jest większy niż MTU sieci, przez którą musi przejść, może zostać podzielony na mniejsze części, jeśli DF ma wartość 0. Przy DF równym 1 router odrzuca pakiet zamiast go fragmentować. Ten proces nazywa się fragmentacją, a poniższe trzy pola współpracują ze sobą, aby nim zarządzać.Uwaga: Szczegółowa mechanika fragmentacji jest osobnym tematem, ale te pola dostarczają niezbędnych informacji kontrolnych.

5. Identyfikator (ID) - 16 bitów

Jeśli pakiet zostanie podzielony na wiele fragmentów, każdy fragment jest wysyłany jako osobny pakiet. Pole Identyfikator zawiera wartość wspólną dla fragmentów jednego datagramu w kontekście adresu źródłowego, docelowego i protokołu. Host odbiorczy używa tego pola razem z przesunięciem i flagą MF, aby rozpoznać części należące do siebie i złożyć datagram. Dla atomowego datagramu z ustawionym DF, wyzerowanym MF i przesunięciem równym 0 implementacja może użyć dowolnej wartości, w tym 0, zgodnie z nowszą specyfikacją pola ID.

6. Flagi - 3 bity

Te trzy jednobitowe flagi kontrolują proces fragmentacji:

  • Bit 0: Zarezerwowany i zawsze musi być ustawiony na 0.
  • Bit 1: Nie Fragmentuj (DF): Jeśli ten bit jest ustawiony na 1, zabrania routerom fragmentowania pakietu. Jeśli pakiet jest zbyt duży dla MTU sieci, router odrzuca go i wysyła do źródła komunikat ICMP Destination Unreachable z informacją „fragmentation needed and DF set”.
  • Bit 2: Więcej Fragmentów (MF): Ta flaga działa jako sygnał do ponownego składania. Jeśli MF jest ustawione na 1, oznacza to, że jest to fragment większego pakietu i kolejne fragmenty jeszcze nadejdą. Jeśli jest ustawione na 0, oznacza to, że jest to albo ostatni fragment serii, albo pakiet nigdy nie był fragmentowany.

7. Przesunięcie Fragmentu - 13 bitów

Gdy pakiet jest fragmentowany, dane są dzielone na części. Pole Przesunięcie Fragmentu informuje hosta odbiorczego, gdzie dokładnie w ładunku oryginalnego pakietu należą dane tego konkretnego fragmentu. Jest ono mierzone w jednostkach 8-bajtowych bloków. Na przykład, jeśli fragment ma przesunięcie 100, jego dane zaczynają się od bajtu 100×8=800100 \times 8 = 800 w oryginalnym, niefragmentowanym ładunku. Pozwala to hostowi docelowemu na ponowne złożenie fragmentów w prawidłowej kolejności, nawet jeśli dotrą one poza kolejnością.

Pola 8-9: Czas Życia i Typ Ładunku

8. Czas Życia (TTL) - 8 bitów

TTL ogranicza czas życia datagramu i zapobiega niekończącemu się krążeniu pakietów w sieci w przypadku błędu routingu.

  • Host wysyłający ustawia początkową wartość TTL (np. 64 lub 128).
  • Każdy router, który przetwarza pakiet, musi zmniejszyć wartość TTL o co najmniej jeden.
  • Jeśli router otrzyma pakiet i po zmniejszeniu wartość TTL wyniesie zero, router odrzuca pakiet i wysyła komunikat o błędzie (ICMP „Przekroczono czas”) z powrotem do źródła.

Bez TTL pojedyncza pętla routingu mogłaby w nieskończoność zużywać zasoby sieciowe i zwiększać obciążenie sieci.

9. Protokół - 8 bitów

Zadaniem IP jest dostarczenie pakietu z hosta źródłowego do hosta docelowego. Gdy pakiet dotrze, system operacyjny hosta docelowego musi wiedzieć, który program lub usługa powinien otrzymać ładunek danych. Pole Protokół to określa. Zawiera ono liczbę, która identyfikuje , do którego dane powinny zostać przekazane.

  • Wartość 6 oznacza, że ładunek to segment TCP.
  • Wartość 17 oznacza datagram UDP.
  • Wartość 1 oznacza komunikat ICMP, używany do kontroli i raportowania błędów.

Pola 10-12: integralność i adresacja

10. Suma Kontrolna Nagłówka - 16 bitów

To pole zapewnia podstawową formę wykrywania błędów dla nagłówka IP. Host wysyłający oblicza sumę kontrolną na podstawie wartości we wszystkich polach nagłówka i umieszcza tu wynik. Każdy router po drodze weryfikuje sumę kontrolną.

  • Jeśli router wykryje niezgodność, oznacza to, że nagłówek został uszkodzony podczas transmisji, a pakiet jest odrzucany.
  • Ponieważ pole TTL zmienia się w każdym routerze, suma kontrolna musi być ponownie obliczana przez każdy router.
  • Suma kontrolna: Obejmuje tylko nagłówek. Nie chroni ładunku danych, co jest zadaniem protokołów wyższej warstwy, takich jak TCP czy UDP.

11. Adres Źródłowy - 32 bity

To 32-bitowy adres IPv4 hosta, który pierwotnie wysłał pakiet.

12. Adres Docelowy - 32 bity

To 32-bitowy adres IPv4 zamierzonego odbiorcy. To pole jest podstawową informacją, której routery używają do podejmowania decyzji o przekierowaniu pakietu, prowadząc go krok po kroku przez internet.

Końcowe Pola: Opcje i Właściwe Dane

13. Opcje (jeśli istnieją) - Zmienna długość (0 do 40 bajtów)

Jest to opcjonalne pole o zmiennej długości, które może być używane do specjalnego traktowania pakietu, testowania lub debugowania. Przykłady obejmują opcje rejestrowania trasy, jaką pokonuje pakiet, lub dodawania znaczników czasu. W nowoczesnym internecie pole Opcje jest rzadko używane, ponieważ jego przetwarzanie wymaga dodatkowej pracy od routerów, co może spowalniać wydajność. Jeśli opcje są obecne, pole IHL będzie miało wartość większą niż 5.

14. Dane (Ładunek) - Zmienna długość

Po nagłówku (i ewentualnych opcjach) znajdują się właściwe dane, które pakiet przenosi. To jest ładunek przekazany przez protokół wyższej warstwy, taki jak TCP czy UDP. Warstwa IP nie interpretuje jego zawartości. Długość ładunku można obliczyć, odejmując długość nagłówka (IHL * 4) od Całkowitej Długości Pakietu.

Powiązane artykuły