...
🧠 Blog poświęcony jest tematowi VPN i bezpieczeństwa, prywatności danych w Internecie. Rozmawiamy o aktualnych trendach i nowościach związanych z ochroną.

Fragmentacja IP: całkowicie wyjaśniona

286

Każda sieć oparta na pakietach IP ma rozmiar maksymalnej jednostki transmisji (MTU). MTU, jak sugeruje termin, to maksymalny rozmiar pakietu, który można przesłać w sieci.

Pakiety IP większe niż rozmiar MTU wymagają podzielenia na mniejsze fragmenty lub pakiety, aby mogły być przesyłane w sieci.

Nadal zdezorientowany? Nie martw się. 

W tym przewodniku wyjaśnimy wszystko na temat fragmentacji IP – co to jest, co robi, jak jest używane i jakie są jej wady, w sposób zrozumiały dla laika. Odpowiemy dalej na kilka konkretnych zapytań użytkowników związanych z tematem. Więc bez zbędnych ceregieli zacznijmy!

Co to jest fragmentacja IP?

Każda sieć lokalna obsługuje maksymalny rozmiar pakietu IP. Tak więc, gdy host używa sieci do przesyłania pakietu IP, nie powinien on być większy niż rozmiar maksymalnej jednostki transmisji (MTU). W przeciwnym razie jest dzielony na małe części – proces zwany fragmentacją IP.

Ten rozmiar jest zwykle określany przez jednostki MTU i łącze danych sieci, które często są takie same. Współczesne miejsce pracy, centrum danych lub sieć kampusowa oferowana przez Ethernet ma jednostki MTU o wartości 1500 bajtów.

Jednak pakiety IP przesłane najpierw przez sieć obsługującą pojedynczą jednostkę MCU mogą wymagać routingu przez tunele VPN, sieci WAN lub przez inne sieci o mniejszych jednostkach maksymalnej transmisji. W przypadku, gdy rozmiar pakietu przekracza mniejszą jednostkę MTU, dane w tym pakiecie musiałyby zostać pofragmentowane.

Dane byłyby dzielone na wiele części i przenoszone w nowych fragmentach (pakietach), które są mniejsze lub równe wielkości niż dolny MCU. Te pofragmentowane dane zostaną następnie ponownie zmontowane, gdy dotrą do miejsca docelowego.


IPv4

Użyte pola nagłówka IPv4

Fragmentacja i proces ponownego składania wymagają różnych pól nagłówka IP, które są ustawione na kawałki/fragmenty.

(Kredyty obrazkowe: packetpushers.net)

Operacja fragmentacji opiera się na trzech polach nagłówka IP (łącznie 32 bity). Wszystkie te fragmenty będą miały wartości znacznie różniące się od oryginalnego pakietu IP:

Pole Identyfikacja (16 bitów) zawiera unikalny numer ID będący kombinacją źródłowego i docelowego adresu IP. Pole Protocol, mające wartość oryginalnego pakietu, umożliwia odbiorcy rozróżnianie fragmentów różnych pakietów pochodzących z tego samego źródła.

Oznacza to po prostu, że ten sam identyfikator może być używany nawet wtedy, gdy źródło, protokół i miejsce docelowe pofragmentowanych pakietów nie są takie same.

Dokładnie tak jak w przypadku oryginalnego pakietu IP, pierwszy zarezerwowany bit  pola Flags (łącznie 3 bity), a drugi bit Nie fragmentuj (DF)  będą oba nieustawione (0).

Jednak końcowy fragment będzie miał trzeci bit tego pola, tj. Więcej fragmentów (MF) ustawiony na 1. Wszystkie bity w tym polu ostatniego pakietu IP zostaną ustawione na 0, dokładnie tak jak oryginalny pakiet IP (chyba że jest to fragment).

Jeśli w oryginalnym pakiecie ustawiona jest flaga Nie fragmentuj, zapobiegnie to fragmentacji i spowoduje, że pakiety będą musiały zostać odrzucone. W takim przypadku do nadawcy należy przesłać błędy, na przykład błąd ICMP typu 3: „Miejsce docelowe nieosiągalne", kod 4: „Wymagana fragmentacja i ustawiony DF”.

Pole Przesunięcie fragmentu  (łącznie 13 bitów) jest wykorzystywane do wskazania początkowej pozycji danych we fragmencie w odniesieniu do danych początkowych oryginalnego pakietu IP. Jest to następnie wykorzystywane do ponownego składania danych ze wszystkich fragmentów (przybyłych lub nie).

Przesunięcie w pierwszym fragmencie wynosi 0, ponieważ dane w tym pofragmentowanym pakiecie i oryginalnym zaczynają się w tym samym miejscu. W kolejnych fragmentach wartość jest przesunięciem pofragmentowanych danych od początku danych w początkowym fragmencie (przesunięcie 0), w 8-bajtowych blokach (znanych również jako ósemki).

Jeśli pakiet IP zawierający dane o wartości 800 bajtów jest podzielony na dwie równe części/fragmenty, z których każdy ma 400 bajtów, przesunięcie fragmentu pierwszego fragmentu wynosi 0, a drugiego 50 (400/8).

Wartość przesunięcia musi być liczbą 8-bajtowych bloków danych. Oznacza to, że poprzedni fragment musi być wielokrotnością 8 bajtów. Ostatni fragment może przenosić dane, które nie są wielokrotnością 8 bajtów, ponieważ nie będzie więcej fragmentów.


IPv6

Mimo że większość pól nagłówka pozostaje taka sama, fragmentacja IP w IPv6 działa nieco inaczej niż w IPv4. W IPv6 dane mogą być fragmentowane tylko na hoście źródłowym. Oznacza to, że fragmentacji nie można przeprowadzić w innych sieciach poza źródłem.

Nie ma dostępnej flagi Nie fragmentuj, więc wszystko, co musisz zrobić, to nie tworzyć fragmentów.

Nie można przeprowadzić fragmentacji IP, jeśli nie jest używany PMTUD. Węzły nie mogą używać MTU większej niż 1280 bajtów, czyli minimum IPv6, jeśli nie implementują Path MTU Discovery (PMUTD).

Chociaż Path MTU Discovery działa w taki sam sposób jak IPv4, komunikat o błędzie ICMP jest inny:

(Kredyty obrazkowe: packetpushers.net)

Jeśli pakiet IP ma większy rozmiar niż MCU, router IPv6 musi go odrzucić i wysłać błąd ICMPv6 typu 2 „Packet Too Big” – kod 0 do nadawcy.

Należy pamiętać, że poleganie na kanale zwrotnym i transmisji ICMP do hosta, z którego pochodzi, ma wiele wad – ważną z nich jest to, że wiadomości ICMP są często blokowane w różnych przypadkach w sieci ze względu na zalety bezpieczeństwa.

W ten sposób host inicjujący nie otrzyma wiadomości Packet Too Big i ponownie prześle pakiety IP, które były wielokrotnie odrzucane, które z pewnością nie dotrą. Ostatecznie połączenie zostanie uznane za niestabilne i zamknięte. Nawet gdyby powstał nowy, problem by się powtórzył.

Pola nagłówka związane z fragmentacją są umieszczane w nagłówku rozszerzenia zwanym nagłówkiem fragmentu. Jest to określone w polu Następny nagłówek (wartość 44) w standardowym IPv6 lub dowolnym poprzednim nagłówku rozszerzenia.

Podobnie jak wszystkie nagłówki rozszerzeń, ten ma długość 8 bajtów/64 bity, wraz ze standardowym nagłówkiem, co skutkuje fragmentacją IPv6 z większym obciążeniem niż IPv4.

Użyte pola nagłówka IPv6

Sprawdź pola w nagłówku rozszerzenia fragmentu IPv6:

(Kredyty obrazkowe: packetpushers.net)

Pole o nazwie Następny nagłówek (8 bitów) określa typ nagłówka, na przykład nagłówek protokołu wyższej warstwy lub nagłówek rozszerzenia IPv6. Następne 8 bitów jest wtedy zarezerwowanych.

13-bitowe pole Fragment Offset jest używane w podobny sposób jak IPv4. Następnie następne 2 bity są zarezerwowane.

Flaga pola M zostanie ustawiona na 1, a końcowy fragment zostanie ustawiony tak, jak w polu Więcej fragmentów (MF)  protokołu IPv4 .

32-bitowe pole Identyfikacja jest takie samo jak 16-bitowe pole IPv4 zawierające unikalny numer identyfikacyjny dla kombinacji adresów źródłowych i docelowych. Pole Protokół jest niedostępne w IPv6.


Wady fragmentacji IP

Uważa się, że stos protokołu IP ma zawodny mechanizm, w wyniku którego hosty końcowe nie mogą określić maksymalnego rozmiaru ładunku podczas komunikowania się za pośrednictwem hosta IPv4 i IPv6.

Mimo że brak mechanizmu MTU w sieci jest zrozumiały, ponieważ pakiety IP poruszają się różnymi trasami, brak informacji od końca do końca może spowodować, że routery pośredniczące będą otrzymywać pakiety o zbyt dużych rozmiarach i nie będą w stanie ich przesłać dalej.

Routery IPv4 mogą dzielić pakiety IP na fragmenty podczas tranzytu, ale ta sama funkcja nie jest dostępna w routerach IPv6 – gdzie nadawca musi wykonać fragmentację.

Fragmentacja powoduje skok w napowietrzeniu warstwy-3. Na przykład, jeśli host końcowy uważa, że ​​może używać pakietów IP o długości 1500 bajtów, ale napotyka na swojej ścieżce przeskok o rozmiarze MTU 1472, pakiet IP zostanie podzielony na dwa pakiety, co spowoduje dodanie nagłówka IPv6 40 bajtów i 20-bajtowy nagłówek IPv4.

Fragmenty IP stanowią dodatkowe obciążenie dla systemu odbierającego, ponieważ wymagane jest ponowne złożenie fragmentów w celu dostarczenia ich do wyższych warstw protokołu. Ta aktywność nasila się, gdy router przerywa ruch IP.

Jeśli router spróbuje połączyć pofragmentowane pakiety, pakiety nie zostaną ponownie połączone w sprzęcie i drastycznie zmniejszą wydajność platformy.


Często zadawane pytania

Fragmentacja IP ma kluczowe znaczenie dla transmisji danych, ponieważ każda sieć ma inny limit rozmiaru przetwarzania danych. Ten limit jest również znany jako MTU (maksymalna jednostka transmisji).

Nie, routery mogą fragmentować pakiety IP, ale nie mogą ich ponownie składać. Ponowne złożenie tych pakietów dla użytkownika jest zadaniem urządzenia docelowego.

W przypadku utraty jednego lub wielu fragmentów datagramu, po upływie limitu czasu cały datagram jest odrzucany.


Wniosek

Na tym kończy się nasz szczegółowy przewodnik dotyczący fragmentacji adresów IP.

Aby uzyskać szybki przegląd, jeśli dane przesyłane przez sieć są większe niż rozmiar maksymalnej jednostki transmisji (MTU), dane zostaną podzielone na wiele fragmentów i przesłane do odbiorcy.

Gdy tylko fragmenty IP dotrą do miejsca przeznaczenia, zostaną ponownie zmontowane we właściwej kolejności, dzięki czemu dane mogą być przydatne dla użytkowników. Mechanizm fragmentacji jest inny zarówno w sieciach IPv4, jak i IPv6, o których szczegóły wspomniano powyżej.

Jeśli masz jakiekolwiek pytania dotyczące adresów IP i fragmentacji, skontaktuj się z nami w komentarzach.

Ta strona korzysta z plików cookie, aby poprawić Twoje wrażenia. Zakładamy, że nie masz nic przeciwko, ale możesz zrezygnować, jeśli chcesz. Akceptuję Więcej szczegółów