Wstęp
Wszyscy znamy zasadę klasyfikacji i nieklasyfikacji protokołu IP oraz jej zastosowanie w komunikacji sieciowej. Fragmentacja i ponowne składanie protokołu IP to kluczowy mechanizm w procesie transmisji pakietów. Gdy rozmiar pakietu przekracza limit maksymalnej jednostki transmisji (MTU) łącza sieciowego, fragmentacja IP dzieli pakiet na wiele mniejszych fragmentów w celu transmisji. Fragmenty te są przesyłane niezależnie w sieci, a po dotarciu do miejsca docelowego są ponownie składane w kompletne pakiety za pomocą mechanizmu ponownego składania protokołu IP. Ten proces fragmentacji i ponownego składania zapewnia możliwość przesyłania pakietów o dużym rozmiarze w sieci, zapewniając jednocześnie integralność i niezawodność danych. W tej sekcji przyjrzymy się bliżej, jak działa fragmentacja i ponowne składanie protokołu IP.
Fragmentacja i ponowne składanie IP
Różne łącza danych mają różne maksymalne jednostki transmisji (MTU); na przykład łącze danych FDDI ma MTU wynoszące 4352 bajty, a łącze Ethernet MTU wynoszące 1500 bajtów. MTU to skrót od Maximum Transmission Unit (maksymalna jednostka transmisji) i odnosi się do maksymalnego rozmiaru pakietu, jaki można przesłać przez sieć.
FDDI (Fiber Distributed Data Interface) to standard szybkiej sieci lokalnej (LAN), który wykorzystuje światłowód jako medium transmisyjne. Maksymalna Jednostka Transmisji (MTU) to maksymalny rozmiar pakietu, jaki można przesłać za pomocą protokołu warstwy łącza danych. W sieciach FDDI rozmiar MTU wynosi 4352 bajty. Oznacza to, że maksymalny rozmiar pakietu, jaki można przesłać za pomocą protokołu warstwy łącza danych w sieci FDDI, wynosi 4352 bajty. Jeśli pakiet do przesłania przekracza ten rozmiar, należy go pofragmentować, aby podzielić go na fragmenty o rozmiarze odpowiednim do rozmiaru MTU, umożliwiające transmisję i ponowne złożenie w odbiorniku.
W przypadku Ethernetu rozmiar MTU wynosi zazwyczaj 1500 bajtów. Oznacza to, że Ethernet może przesyłać pakiety o rozmiarze do 1500 bajtów. Jeśli rozmiar pakietu przekracza limit MTU, jest on dzielony na mniejsze fragmenty w celu transmisji i ponownie składany w miejscu docelowym. Ponowne złożenie pofragmentowanego datagramu IP może zostać przeprowadzone tylko przez hosta docelowego, a router nie wykona operacji ponownego złożenia.
Wcześniej omawialiśmy również segmenty TCP, ale MSS oznacza Maksymalny Rozmiar Segmentu i odgrywa ważną rolę w protokole TCP. MSS odnosi się do rozmiaru maksymalnego segmentu danych, jaki można wysłać w połączeniu TCP. Podobnie jak MTU, MSS służy do ograniczania rozmiaru pakietów, ale robi to w warstwie transportowej, czyli warstwie protokołu TCP. Protokół TCP przesyła dane warstwy aplikacji, dzieląc je na wiele segmentów danych, a rozmiar każdego segmentu danych jest ograniczony przez MSS.
Wartość MTU każdego łącza danych jest inna, ponieważ każdy typ łącza danych służy do innych celów. W zależności od celu użytkowania, mogą być obsługiwane różne wartości MTU.
Załóżmy, że nadawca chce wysłać duży datagram o rozmiarze 4000 bajtów do transmisji przez łącze Ethernet, więc datagram musi zostać podzielony na trzy mniejsze datagramy do transmisji. Wynika to z faktu, że rozmiar każdego małego datagramu nie może przekroczyć limitu MTU, który wynosi 1500 bajtów. Po odebraniu trzech małych datagramów, odbiorca składa je ponownie w oryginalny, duży datagram o rozmiarze 4000 bajtów, na podstawie numeru sekwencji i przesunięcia każdego datagramu.
W transmisji fragmentarycznej utrata fragmentu unieważnia cały datagram IP. Aby temu zapobiec, protokół TCP wprowadził metodę MSS, w której fragmentacja jest przeprowadzana na poziomie protokołu TCP, a nie IP. Zaletą tego podejścia jest to, że protokół TCP ma bardziej precyzyjną kontrolę nad rozmiarem każdego segmentu, co pozwala uniknąć problemów związanych z fragmentacją na poziomie protokołu IP.
W przypadku protokołu UDP staramy się nie wysyłać pakietów danych większych niż MTU. Wynika to z faktu, że UDP jest protokołem transportowym zorientowanym na bezpołączeniowość, który nie zapewnia mechanizmów niezawodności i retransmisji, takich jak TCP. Jeśli wyślemy pakiet danych UDP większy niż MTU, zostanie on pofragmentowany przez warstwę IP w celu transmisji. Utrata jednego z fragmentów uniemożliwia retransmisję protokołu UDP, co skutkuje utratą danych. Dlatego, aby zapewnić niezawodną transmisję danych, powinniśmy starać się kontrolować rozmiar pakietów danych UDP w ramach MTU i unikać fragmentacji transmisji.
Broker pakietów sieciowych Mylinking™może automatycznie identyfikować różne rodzaje protokołów tunelowania VxLAN/NVGRE/IPoverIP/MPLS/GRE itp., może być określany zgodnie z profilem użytkownika w oparciu o wyjście przepływu tunelu o charakterystyce wewnętrznej lub zewnętrznej.
○ Potrafi rozpoznawać pakiety etykiet VLAN, QinQ i MPLS
○ Potrafi zidentyfikować wewnętrzną i zewnętrzną sieć VLAN
○ Możliwość identyfikacji pakietów IPv4/IPv6
○ Możliwość identyfikacji pakietów tunelowych VxLAN, NVGRE, GRE, IPoverIP, GENEVE, MPLS
○ Możliwość identyfikacji pofragmentowanych pakietów IP (obsługa identyfikacji fragmentacji IP i obsługa ponownego składania fragmentacji IP w celu wdrożenia filtrowania funkcji L4 we wszystkich pofragmentowanych pakietach IP. Implementacja zasad dotyczących wyprowadzania ruchu).
Dlaczego protokół IP jest fragmentowany, a protokół TCP fragmentowany?
Ponieważ w transmisji sieciowej warstwa IP automatycznie fragmentuje pakiet danych, nawet jeśli warstwa TCP nie segmentuje danych, pakiet danych zostanie automatycznie fragmentowany przez warstwę IP i przesłany normalnie. Dlaczego więc TCP potrzebuje fragmentacji? Czy to nie przesada?
Załóżmy, że istnieje duży pakiet, który nie jest segmentowany na warstwie TCP i zostaje utracony w trakcie transmisji; TCP prześle go ponownie, ale tylko w całości (chociaż warstwa IP dzieli dane na mniejsze pakiety, z których każdy ma długość MTU). Dzieje się tak, ponieważ warstwa IP nie dba o niezawodną transmisję danych.
Innymi słowy, na łączu transportowym maszyny do sieci, jeśli warstwa transportowa fragmentuje dane, warstwa IP ich nie fragmentuje. Jeśli fragmentacja nie jest przeprowadzana na warstwie transportowej, fragmentacja jest możliwa na warstwie IP.
Mówiąc prościej, protokół TCP segmentuje dane, dzięki czemu warstwa IP nie jest już fragmentaryzowana, a w przypadku retransmisji retransmitowane są tylko niewielkie fragmenty danych, które uległy fragmentacji. W ten sposób można poprawić wydajność i niezawodność transmisji.
Czy jeśli protokół TCP jest pofragmentowany, warstwa IP nie jest pofragmentowana?
W powyższej dyskusji wspomnieliśmy, że po fragmentacji TCP u nadawcy, fragmentacja w warstwie IP nie występuje. Mogą jednak istnieć inne urządzenia warstwy sieciowej w całym łączu transportowym, których maksymalna jednostka transmisji (MTU) może być mniejsza niż MTU u nadawcy. W związku z tym, nawet jeśli pakiet został pofragmentowany u nadawcy, jest on ponownie fragmentowany podczas przechodzenia przez warstwę IP tych urządzeń. Ostatecznie wszystkie fragmenty zostaną złożone u odbiorcy.
Jeśli uda nam się określić minimalne MTU dla całego łącza i przesłać dane na taką długość, fragmentacja nie wystąpi niezależnie od węzła, do którego dane są przesyłane. To minimalne MTU dla całego łącza nazywa się ścieżką MTU (PMTU). Gdy pakiet IP dotrze do routera, jeśli MTU routera jest mniejsze niż długość pakietu, a flaga DF (Do not Fragment) jest ustawiona na 1, router nie będzie mógł fragmentować pakietu i może go jedynie odrzucić. W takim przypadku router generuje komunikat o błędzie ICMP (Internet Control Message Protocol) o nazwie „Fragmentation Needed But DF Set” (Wymagana fragmentacja, ale flaga DF ustawiona). Ten komunikat o błędzie ICMP zostanie odesłany na adres źródłowy wraz z wartością MTU routera. Po odebraniu komunikatu o błędzie ICMP nadawca może dostosować rozmiar pakietu na podstawie wartości MTU, aby uniknąć ponownej sytuacji niedozwolonej fragmentacji.
Fragmentacja IP jest koniecznością i należy jej unikać na poziomie IP, zwłaszcza na urządzeniach pośredniczących w łączu. Dlatego w IPv6 fragmentacja pakietów IP przez urządzenia pośredniczące jest zabroniona i może być przeprowadzana jedynie na początku i na końcu łącza.
Podstawowa wiedza na temat protokołu IPv6
IPv6 to szósta wersja protokołu internetowego, następca IPv4. IPv6 wykorzystuje 128-bitową długość adresu, co pozwala na uzyskanie większej liczby adresów IP niż 32-bitowa długość adresu IPv4. Wynika to z faktu, że przestrzeń adresowa IPv4 stopniowo się wyczerpuje, podczas gdy przestrzeń adresowa IPv6 jest bardzo duża i może zaspokoić potrzeby przyszłego Internetu.
Jeśli chodzi o protokół IPv6, oprócz większej przestrzeni adresowej, zapewnia on również lepsze bezpieczeństwo i skalowalność, co oznacza, że IPv6 może zapewnić lepsze działanie sieci w porównaniu z IPv4.
Chociaż IPv6 istnieje już od dawna, jego globalne wdrożenie jest wciąż stosunkowo powolne. Wynika to głównie z faktu, że IPv6 musi być kompatybilny z istniejącą siecią IPv4, co wymaga transformacji i migracji. Jednak wraz z wyczerpywaniem się adresów IPv4 i rosnącym zapotrzebowaniem na IPv6, coraz więcej dostawców usług internetowych i organizacji stopniowo wdraża IPv6, stopniowo wdrażając dwutorową obsługę IPv6 i IPv4.
Streszczenie
W tym rozdziale przyjrzeliśmy się bliżej, jak działa fragmentacja i ponowne składanie IP. Różne łącza danych mają różne maksymalne jednostki transmisji (MTU). Gdy rozmiar pakietu przekracza limit MTU, fragmentacja IP dzieli pakiet na wiele mniejszych fragmentów do transmisji, a następnie ponownie składa je w kompletny pakiet za pomocą mechanizmu ponownego składania IP po dotarciu do miejsca docelowego. Celem fragmentacji TCP jest powstrzymanie fragmentacji warstwy IP i retransmisja tylko małych, pofragmentowanych danych w momencie retransmisji, co poprawia wydajność i niezawodność transmisji. Jednak w całym łączu transportowym mogą znajdować się inne urządzenia warstwy sieciowej, których MTU może być mniejsze niż MTU nadawcy, więc pakiet nadal będzie ponownie fragmentowany w warstwie IP tych urządzeń. Fragmentacji w warstwie IP należy unikać w miarę możliwości, szczególnie w przypadku urządzeń pośredniczących w łączu.
Czas publikacji: 07-08-2025