...
🧠 Bloggen är dedikerad till ämnet VPN och säkerhet, datasekretess på Internet. Vi pratar om aktuella trender och nyheter relaterade till skydd.

IP-fragmentering: Fullständigt förklarad

35

Varje nätverk baserat på IP-paket har en MTU-storlek (Maximum Transmission Unit). MTU, som termen antyder, är den maximala storleken på paketet som kan överföras på nätverket.

IP-paket som är större än MTU-storleken kräver att de delas upp i mindre fragment eller paket så att de kan färdas över nätverket.

Fortfarande förvirrad? Oroa dig inte. 

I den här guiden kommer vi att förklara allt om IP-fragmentering – vad det är, vad det gör, hur det används och dess nackdelar, i lekmannatermer för förståelse. Vi kommer vidare att svara på några specifika frågor från användare relaterade till ämnet. Så, utan vidare, låt oss komma igång!

Vad är IP-fragmentering?

Varje lokalt nätverk stöder en maximal storlek på IP-paket. Så när en värd använder nätverket för att överföra ett IP-paket, bör det inte vara större än storleken för maximal överföringsenhet (MTU). Annars är det uppdelat i små bitar – en process som kallas IP-fragmentering.

Denna storlek bestäms vanligtvis av MTU:erna och nätverkets datalänk som ofta är densamma. En modern arbetsplats, datacenter eller campusnätverk som erbjuds via Ethernet har MTU:er värda 1500 byte.

Däremot kan IP-paket som först överförs över ett nätverk som stöder en enda MCU kräva routning över VPN-tunnlar, WAN eller över andra nätverk med mindre maximala överföringsenheter. Om storleken på paketet överstiger den mindre MTU:n, skulle data i detta paket behöva fragmenteras.

Data skulle brytas upp i flera bitar och bäras i nya fragment (paket) som är mindre eller lika stora än den lägre MCU. Denna fragmenterade data kommer sedan att återsättas när den når sin destination.


IPv4

IPv4-huvudfälten som används

Fragmenteringen och återmonteringsprocessen har olika IP-huvudfält inblandade som sätts in i bitar/fragment.

(Bildkrediter: packetpushers.net)

Driften av fragmentering bygger på tre IP-huvudfält (totalt 32 bitar). Alla dessa fragment kommer att ha signifikant olika värden jämfört med det ursprungliga IP-paketet:

Identifieringsfältet (16 bitar) innehåller ett unikt ID-nummer som är en blandning av käll- och destinations-IP-adresser. Protokollfältet, som har det ursprungliga paketets värde, gör det möjligt för destinationen att skilja mellan de olika paketens fragment som kommer från samma källa.

Detta betyder helt enkelt att samma ID kan användas även när källan, protokollet och destinationen för de fragmenterade paketen inte är samma.

Precis som det ursprungliga IP-paketet kommer den första reserverade biten i Flags -fältet (totalt 3 bitar) och den andra, Don't Fragment (DF)  -biten båda att vara inställda (0).

Det slutliga fragmentet kommer dock att ha fältets tredje bit, dvs. Fler fragment (MF) inställd på 1. Alla bitar i detta fält av det senaste IP-paketet kommer att sättas till 0, precis som det ursprungliga IP-paketet (såvida det inte är ett fragment).

Om flaggan Don't Fragment är inställd i originalpaketet, skulle detta förhindra fragmentering och resultera i att paket måste kasseras. Fel ska skickas till avsändaren i det här fallet, som typ 3 ICMP-fel: ‘Destination Unreachable', kod 4: ‘Fragmentation required, and DF set.'

Fältet Fragment Offset  (totalt 13 bitar) används för att indikera den initiala datapositionen i fragmentet, i förhållande till startdata för det ursprungliga IP-paketet. Detta används sedan för att återsammansätta data från alla fragment (anlända eller inte).

Offseten i det första fragmentet är 0 eftersom data i detta fragmenterade paket och det ursprungliga paketet börjar på samma plats. I följande fragment är värdet förskjutet av fragmenterad data från början av data i det initiala fragmentet (0 offset), i 8-byte block (även kända som oktaord).

Om ett IP-paket som innehåller data värda 800 byte delas upp i två lika stora delar/fragment, som var och en bär 400 byte, då är fragmentoffset för det första fragmentet 0, medan det andra är 50 (400/8).

Offsetvärdet måste vara antalet 8-byte datablock. Detta innebär att det föregående fragmentet måste vara en multipel av 8 byte. Det sista fragmentet tillåts bära data som inte är en multipel av 8 byte eftersom det inte kommer att finnas några fler fragment.


IPv6

Även om de flesta rubrikfälten förblir desamma fungerar IP-fragmentering i IPv6 lite annorlunda än IPv4. I IPv6 kan data endast fragmenteras på källvärden. Detta innebär att fragmentering inte kan utföras på andra nätverk, förutom källan.

Det finns ingen Don't Fragment-flagga tillgänglig, så allt du behöver göra är att inte skapa fragment.

IP-fragmentering kan inte utföras om PMTUD inte används. Noder kan inte använda en MTU som är högre än 1280 byte, vilket är minimum av IPv6 om de inte implementerar Path MTU Discovery (PMUTD).

Medan Path MTU Discovery fungerar på samma sätt som IPv4, är meddelandet om ICMP-fel annorlunda:

(Bildkrediter: packetpushers.net)

Om IP-paketet är större än MCU:n måste IPv6-routern kassera det och skicka ett typ 2 ICMPv6-fel "Packet Too Big" – kod 0 till avsändaren.

Observera att att förlita sig på en bakkanal och ICMP-överföring till ursprungsvärden har flera brister – en viktig är att ICMP-meddelanden ofta blockeras vid olika tillfällen i ett nätverk på grund av säkerhetsfördelar.

På så sätt kommer den ursprunglige värden inte att ta emot meddelandena om Packet Too Big och kommer att återsända IP-paketen som kasserades flera gånger, som definitivt inte kommer att nå. Så småningom skulle anslutningen anses vara instabil och stängd. Även om en ny skulle etableras skulle problemet upprepas.

Rubrikfälten relaterade till fragmentering placeras i en tilläggshuvud som kallas Fragment Header. Detta specificeras med ett nästa rubrikfält (värde 44) i en standard IPv6 eller någon tidigare tilläggsrubrik.

Precis som alla tilläggshuvuden är den här 8 byte/64 bitar lång, tillsammans med en standardhuvud, vilket resulterar i en IPv6-fragmentering med en högre overhead än IPv4.

IPv6 Header-fälten som används

Kolla in fälten i tilläggshuvudet för IPv6-fragmentet:

(Bildkrediter: packetpushers.net)

Fältet som heter Next Header (8 bitar) anger rubriktypen, som en protokollrubrik för övre lager eller IPv6-tilläggshuvud. De nästa 8 bitarna reserveras sedan.

13-bitarsfältet Fragment Offset används på liknande sätt som IPv4. Efter detta reserveras nästa 2 bitar.

Fältets M – flagga sätts till 1, och det sista fragmentet kommer att ställas in som IPv4:s More Fragments (MF)  -fält.

32-bitars identifieringsfältet är detsamma som IPv4-fältet på 16 bitar som innehåller ett unikt ID-nummer för kombinationen av källadresser och destinationsadresser. Protokollfältet är inte tillgängligt i IPv6.


Nackdelarna med IP-fragmentering

Stacken av IP-protokoll anses ha en opålitlig mekanism på grund av vilken slutvärdarna inte kan räkna ut den maximala storleken på nyttolasten när de kommunicerar via en IPv4- och IPv6-värd.

Även om avsaknaden av en MTU-mekanism över nätverket är förståelig eftersom IP-paketen tar olika vägar, kan bristen på end-to-end-information leda till att mellanliggande routrar tar emot överdimensionerade paket och inte kan vidarebefordra dem.

IPv4-routrarna kan dela upp IP-paket i fragment under transitering, men samma funktion är inte tillgänglig i IPv6-routrar – där avsändaren måste utföra fragmenteringen.

Fragmentering resulterar i en spik i overhead av lager-3. Så, till exempel, om slutvärden tror att den kan använda IP-paket på 1500 byte, men står inför ett hopp i sin väg av MTU-storlek 1472, så skulle IP-paketet delas upp i två paket, vilket resulterar i en extra IPv6-rubrik med 40 byte och IPv4-huvud på 20 byte.

IP-fragment lägger en extra börda på det mottagande systemet eftersom det krävs för att återmontera fragmenten för att leverera dem till högre protokolllager. Denna aktivitet förvärras när routern avslutar IP-trafiken.

Om en router försöker sätta ihop de fragmenterade paketen, skulle paketen misslyckas med att återmontera i hårdvaran och minska plattformens prestanda drastiskt.


Vanliga frågor

IP-fragmentering är avgörande för överföring av data eftersom varje nätverk har olika storleksgränser för bearbetning av data. Denna gräns är också känd som MTU (maximal transmission unit).

Nej, routrar kan fragmentera IP-paket, men inte återmontera dem. Det är målenhetens uppgift att återmontera dessa paket för användaren.

Om enstaka eller flera fragment av ett datagram går förlorade, kasseras hela datagrammet efter timeoutperioden.


Slutsats

Detta avslutar vår detaljerade guide om IP-fragmentering.

För att ge dig en snabb överblick, om data som skickas över ett nätverk är större än MTU- storleken (Maximum Transmission Unit), då skulle data delas upp i flera fragment och skickas över till mottagaren.

Så snart IP-fragmenten når sin destination, skulle de återmonteras i rätt ordning så att data kan vara användbar för användarna. Mekanismen för fragmentering är olika mellan både IPv4- och IPv6-nätverk, vars detaljer nämns ovan.

Om du har några frågor om IP-adresser och fragmentering, vänligen kontakta oss med dem i kommentarerna.

Denna webbplats använder cookies för att förbättra din upplevelse. Vi antar att du är ok med detta, men du kan välja bort det om du vill. Jag accepterar Fler detaljer