Nagłówek Pakietu IPv4
Analiza pól w nagłówku pakietu IPv4, włączając fragmentację i TTL.
„Koperta” Internetu: Czym Jest Pakiet i Nagłówek?
Wyobraź sobie wysyłanie listu za pośrednictwem poczty. Sam list zawiera Twoją wiadomość, ale sam nigdzie nie dotrze. Umieszczasz go w kopercie, na której zapisujesz kluczowe informacje: adres odbiorcy, swój adres zwrotny i być może znaczek wskazujący na priorytet usługi.
W świecie cyfrowym dane podróżują w bardzo podobny sposób. Informacja, którą wysyłasz (czy to część strony internetowej, e-mail czy fragment strumienia wideo), nazywana jest ładunkiem (list). Ten ładunek umieszczany jest w cyfrowym kontenerze zwanym pakietem. Nagłówek IPv4 to cyfrowa „koperta” dla tego pakietu. Jest to blok metadanych zawierający wszystkie niezbędne instrukcje dla routerów i komputerów, aby dostarczyć pakiet przez internet do właściwego miejsca docelowego.
Ogólna Struktura Nagłówka IPv4
Nagłóvek IPv4 ma dobrze zdefiniowaną i 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 efektywne przetwarzanie przez sprzęt sieciowy.
Eksplorator nagłówka IPv4
Kliknij pole, aby zobaczyć jego funkcję i przykładowe wartości.
Pole Opcje/Wypełnienie pojawia się tylko gdy IHL > 5 (nagłówek > 20 bajtów).
Informuje o wersji protokołu IP. W praktyce zawsze 4.
Przykładowe pakiety
Standardowy pakiet 60-bajtowy z opcjami TCP dołączonymi do segmentu SYN.
Przeanalizujmy każde pole w kolejności, w jakiej występuje, aby zrozumieć jego cel i znaczenie w podróży pakietu. Pierwsze 20 bajtów (5 wierszy) jest obowiązkowe w każdym pakiecie IPv4.
Pola 1-4: Kluczowa Tożsamość Pakietu
1. Wersja (Ver) - 4 bity
To pierwsze pole identyfikuje wersję używanego Protokołu Internetowego. Dla każdego pakietu IPv4, to pole ma zawsze wartość binarną 0100, co w systemie dziesiętnym oznacza 4. Pozwala to urządzeniom sieciowym natychmiast odróżnić pakiet IPv4 od pakietu IPv6 (który miałby wartość 6, czyli 0110). To sposób, w jaki pakiet mówi: „Cześć, jestem pakietem IPv4”.
2. Długość Nagłówka Internetowego (IHL) - 4 bity
To pole określa całkowitą długość samego nagłówka. Jest to kluczowe, ponieważ nagłówek może mieć zmienny rozmiar ze względu na opcjonalne pole "Opcje". Wartość ta nie jest jednak 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 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 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 (jak rozmowa wideo) czy mniej pilnej (jak e-mail).
- Historycznie (ToS): Pole było podzielone na podpola "pierwszeństwa", "opóźnienia", "przepustowości" i "niezawodności".
- Nowoczesne Użycie (DSCP): Dziś pierwsze 6 bitów jest zwykle używane jako wartość Differentiated Services Code Point (DSCP), co pozwala na bardziej szczegółową klasyfikację i priorytetyzację ruchu. Na przykład router może być skonfigurowany tak, aby nadać pakietom z określonym DSCP (np. 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 . Zatem maksymalny rozmiar pakietu IPv4 wynosi 65 535 bajtów.
Jednak większość sieci ma znacznie mniejszą , na przykład 1500 bajtów dla Ethernetu. To pole jest kluczowe dla hosta docelowego, aby wiedział, ile danych powinien oczekiwać dla tego pakietu, zwłaszcza jeśli pakiet został sfragmentowany.
Pola 5-7: Obsługa Fragmentacji
Gdy pakiet jest większy niż MTU sieci, przez którą musi przejść, musi zostać podzielony na mniejsze części. Ten proces nazywa się fragmentacją. Poniższe trzy pola współpracują ze sobą, aby zarządzać tym procesem.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 unikalny numer, który jest taki sam dla wszystkich fragmentów należących do pierwotnego, jednego pakietu. Gdy fragmenty dotrą do celu, host odbiorczy używa tego wspólnego ID, aby wiedzieć, które części należą do siebie, co pozwala na ponowne złożenie oryginalnego pakietu.
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, a flaga DF jest ustawiona, router musi odrzucić pakiet i odesłać komunikat o błędzie do źródła. Działa to jak naklejka „Nie zginać” na dużej fotografii wysyłanej pocztą.
- 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 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
To jedno z najważniejszych pól dla utrzymania stabilności internetu. TTL jest w istocie licznikiem czasu, który 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, powodując ogólnoświatowy zator.
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 Kluczowa 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.
- Ważne: 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, „list” wewnątrz „koperty”. Jego zawartość jest przekazywana z protokołu wyższej warstwy (jak TCP czy UDP) i nie jest interpretowana przez warstwę IP. Długość tego ładunku można obliczyć, odejmując długość nagłówka (IHL * 4) od Całkowitej Długości Pakietu.