...
🧠 Blogi on omistettu VPN: n ja turvallisuuden, internetin tietosuojan aiheelle. Puhumme ajankohtaisista trendeistä ja uutisista, jotka liittyvät suojeluun.

IP-fragmentointi: Täysin selitetty

24

Jokaisella IP-paketteihin perustuvalla verkolla on enimmäissiirtoyksikön (MTU) koko. MTU, kuten termi ehdottaa, on verkossa lähetettävän paketin enimmäiskoko .

MTU-kokoa suuremmat IP-paketit on jaettava pienemmiksi fragmenteiksi tai paketeiksi, jotta ne voidaan kuljettaa verkon yli.

Vieläkin hämmentynyt? Älä huoli. 

Tässä oppaassa selitämme kaiken IP-osien pirstoutumisesta – mitä se on, mitä se tekee, miten sitä käytetään ja sen haittoja, maallikkojen ymmärtämisen kannalta. Vastaamme edelleen joihinkin tiettyihin aiheeseen liittyviin käyttäjien kysymyksiin. Joten, ilman pitkiä puheita, aloitetaan!

Mikä on IP-fragmentointi?

Jokainen paikallinen verkko tukee IP-paketin enimmäiskokoa. Joten kun isäntä käyttää verkkoa IP-paketin lähettämiseen, sen ei pitäisi olla suurempi kuin enimmäissiirtoyksikön (MTU) koko. Muuten se on jaettu pieniin osiin – prosessia kutsutaan IP-fragmentoimiseksi.

Tämän koon määräävät yleensä MTU:t ja verkon datalinkki, joka on usein sama. Ethernetin kautta tarjottavan nykyaikaisen työpaikan, datakeskuksen tai kampusverkon MTU:t ovat 1500 tavua.

IP-paketit, jotka siirretään ensin yhtä MCU:ta tukevan verkon kautta, saattavat kuitenkin edellyttää reititystä VPN-tunneleiden, WAN-verkkojen tai muiden verkkojen kautta, joissa on pienempi enimmäissiirtoyksikkö. Mikäli paketin koko ylittää pienemmän MTU:n, tämän paketin tiedot on pirstaloitava.

Tiedot hajotettaisiin useisiin osiin ja kuljetettaisiin uusina fragmentteina (paketteina), jotka ovat pienempiä tai yhtä suuria kuin alempi MCU. Tämä pirstoutunut data kootaan sitten uudelleen, kun se saavuttaa määränpäänsä.


IPv4

Käytetyt IPv4-otsikkokentät

Fragmentointi- ja uudelleenkokoonpanoprosessiin liittyy useita IP-otsikkokenttiä, jotka on jaettu osiin/fragmentteihin.

(Kuvan tekijät: packetpushers.net)

Fragmentoinnin toiminta perustuu kolmeen IP-otsikkokenttään (yhteensä 32 bittiä). Kaikkien näiden fragmenttien arvot eroavat merkittävästi alkuperäisestä IP-paketista:

Tunnistuskenttä (16 bittiä) sisältää yksilöllisen ID-numeron, joka on sekoitus lähde- ja kohde-IP-osoitteita. Protokolla – kenttä, jolla on alkuperäisen paketin arvo, mahdollistaa kohteen erottamisen samasta lähteestä tulevien eri pakettien fragmenttien välillä.

Tämä tarkoittaa yksinkertaisesti sitä, että samaa tunnusta voidaan käyttää, vaikka pirstoutuneiden pakettien lähde, protokolla ja kohde eivät ole samat.

Täsmälleen kuten alkuperäisessä IP-paketissa, Flags – kentän ensimmäinen varattu bitti (yhteensä 3 bittiä) ja toinen, Don't Fragment (DF)  -bitti, kumpikin poistetaan asetuksesta (0).

Lopullisen fragmentin kentän kolmas bitti eli More Fragments (MF) on kuitenkin asetettu arvoon 1. Kaikki viimeisen IP-paketin tämän kentän bitit asetetaan arvoon 0, aivan kuten alkuperäinen IP-paketti (ellei se ole fragmentti).

Jos alkuperäisessä paketissa Don't Fragment -lippu on asetettu, tämä estäisi pirstoutumisen ja johtaisi pakettien hylkäämiseen. Virheet tulee lähettää tässä tapauksessa lähettäjälle, kuten tyypin 3 ICMP-virhe: "Kohde tavoittamaton", koodi 4: "Vaadittu fragmentointi ja DF asetettu".

Kenttää Fragment Offset  (yhteensä 13 bittiä) käytetään osoittamaan alkudatan sijainti fragmentissa suhteessa alkuperäisen IP-paketin aloitusdataan. Tätä käytetään sitten tietojen uudelleen kokoamiseen kaikista fragmenteista (saapuivatko vai eivät).

Ensimmäisen fragmentin siirtymä on 0, koska tämän fragmentoidun paketin ja alkuperäisen paketin tiedot alkavat samasta paikasta. Seuraavissa fragmenteissa fragmentoituneen datan arvo on offset datan alusta alkuperäisessä fragmentissa (0 offset), 8-tavuisissa lohkoissa (tunnetaan myös oktasanaina).

Jos 800 tavun arvoista dataa sisältävä IP-paketti jaetaan kahdeksi yhtä suureksi osaksi/fragmentiksi, joista kumpikin kantaa 400 tavua, ensimmäisen fragmentin fragmenttisiirtymä on 0, kun taas toisen fragmentin fragmentti on 50 (400/8).

Offset-arvon on oltava 8-tavuisten tietolohkojen määrä. Tämä tarkoittaa, että edellisen fragmentin on oltava 8 tavun kerrannainen. Viimeinen fragmentti saa kuljettaa dataa, joka ei ole 8 tavun kerrannainen, koska fragmentteja ei enää ole.


IPv6

Vaikka useimmat otsikkokentät pysyvät samoina, IPv6:n IP-fragmentointi toimii hieman eri tavalla kuin IPv4. IPv6:ssa tiedot voidaan pilkkoa vain lähdeisännässä. Tämä tarkoittaa, että pirstoutumista ei voida suorittaa muissa verkoissa, paitsi lähteessä.

Ei ole saatavilla Don't Fragment -lippua, joten sinun ei tarvitse tehdä muuta kuin luoda fragmentteja.

IP-fragmentointia ei voida suorittaa, jos PMTUD:tä ei käytetä. Solmut eivät voi käyttää MTU:ta, joka on suurempi kuin 1280 tavua, mikä on IPv6:n vähimmäismäärä, jos ne eivät toteuta Path MTU Discoveryä (PMUTD).

Vaikka Path MTU Discovery toimii samalla tavalla kuin IPv4, ICMP-virhesanoma on erilainen:

(Kuvan tekijät: packetpushers.net)

Jos IP-paketti on kooltaan suurempi kuin MCU, IPv6-reitittimen on hylättävä se ja lähetettävä lähettäjälle tyypin 2 ICMPv6-virhe "Paketti liian suuri" – koodi 0.

Huomaa, että luottamisessa takakanavaan ja ICMP-lähetykseen alkuperäiselle isännälle on useita puutteita – yksi tärkeä niistä on se, että ICMP-viestit estetään usein verkon eri tapauksissa tietoturvaetujen vuoksi.

Näin lähettävä isäntä ei vastaanota Packet Too Big -viestejä ja lähettää uudelleen useaan otteeseen hylätyt IP-paketit, jotka eivät varmasti tavoita. Lopulta yhteys katsottaisiin epävakaaksi ja suljetuksi. Vaikka uusi perustettaisiin, ongelma toistuisi.

Sirpaloitumiseen liittyvät otsikkokentät sijoitetaan laajennusotsikkoon, jota kutsutaan Fragment Headeriksi. Tämä määritetään seuraavan otsikon kentällä (arvo 44) vakio-IPv6:ssa tai missä tahansa aikaisemmassa laajennusotsikossa.

Kuten kaikki laajennusotsikot, tämäkin on 8 tavua/64 bittiä pitkä, ja siinä on vakiootsikko, mikä johtaa IPv6:n pirstoutumiseen, jolla on korkeampi yleisrasite kuin IPv4:llä.

Käytetyt IPv6-otsikkokentät

Tarkista IPv6-fragmentin laajennusotsikon kentät:

(Kuvan tekijät: packetpushers.net)

Kenttä nimeltä Next Header (8 bittiä) määrittää otsikkotyypin, kuten ylemmän kerroksen protokollan otsikko tai IPv6-laajennuksen otsikko. Seuraavat 8 bittiä varataan.

13-bittistä Fragment Offset -kenttää käytetään samalla tavalla kuin IPv4:ää. Tämän jälkeen varataan seuraavat 2 bittiä.

Kentän M lippu asetetaan arvoon 1, ja lopullinen fragmentti asetetaan kuten IPv4:n More Fragments (MF)  -kenttä.

32-bittinen tunnistuskenttä on sama kuin 16-bittinen IPv4-kenttä, joka sisältää yksilöllisen ID-numeron lähde- ja kohdeosoitteiden yhdistelmää varten. Protokolla-kenttä ei ole käytettävissä IPv6:ssa.


IP-fragmentoinnin haitat

IP-protokollapinossa katsotaan olevan epäluotettava mekanismi, jonka vuoksi pääpalvelimet eivät pysty selvittämään hyötykuorman enimmäiskokoa kommunikoidessaan IPv4- ja IPv6-isäntäkoneen kautta.

Vaikka MTU-mekanismin puuttuminen verkossa on ymmärrettävää, koska IP-paketit kulkevat eri reittejä, päästä päähän -tiedon puute voi johtaa siihen, että välittäjäreitittimet vastaanottavat ylisuuria paketteja eivätkä pysty välittämään niitä eteenpäin.

IPv4-reitittimet voivat jakaa IP-paketit osiin siirron aikana, mutta sama toiminto ei ole käytettävissä IPv6-reitittimissä, joissa lähettäjän on suoritettava fragmentointi.

Sirpaloituminen johtaa piikkiin kerroksen 3 yläpuolella. Jos esimerkiksi pääteisäntä uskoo, että se voi käyttää 1500 tavun IP-paketteja, mutta kohtaa hypyn polullaan MTU-koon 1472, IP-paketti jaetaan kahdeksi paketiksi, mikä johtaisi lisättyyn IPv6-otsikkoon. 40 tavua ja IPv4-otsikko 20 tavua.

IP-fragmentit lisäävät taakkaa vastaanottavalle järjestelmälle, koska fragmentit on koottava uudelleen toimittamaan ne korkeammille protokollakerroille. Tämä toiminta pahenee, kun reititin lopettaa IP-liikenteen.

Jos reititin yrittää koota pirstoutuneita paketteja, paketit eivät koota uudelleen laitteistossa ja heikentävät alustan suorituskykyä rajusti.


UKK

IP-osien pirstoutuminen on elintärkeää tiedonsiirron kannalta, koska jokaisessa verkossa on eri kokoraja tietojen käsittelylle. Tämä raja tunnetaan myös nimellä MTU (maksimi lähetysyksikkö).

Ei, reitittimet voivat pilkkoa IP-paketteja, mutta eivät koota niitä uudelleen. Kohdelaitteen tehtävä on koota nämä paketit uudelleen käyttäjää varten.

Jos yksi tai useampi datagrammin fragmentti katoaa, koko datagrammi hylätään aikakatkaisujakson jälkeen.


Johtopäätös

Tämä lopettaa yksityiskohtaisen oppaamme IP-osien pirstoutumisesta.

Jotta saat nopean yleiskatsauksen, jos verkon kautta lähetettävä data on suurempi kuin enimmäissiirtoyksikön (MTU) koko, tiedot jaetaan useisiin fragmentteihin ja lähetetään vastaanottajalle.

Heti kun IP-fragmentit saapuvat määränpäähänsä, ne koottaisiin uudelleen oikeassa järjestyksessä, jotta tiedoista voi olla hyötyä käyttäjille. Pirstoutumisen mekanismi on erilainen sekä IPv4- että IPv6-verkkojen välillä, joiden yksityiskohdat on mainittu edellä.

Jos sinulla on kysyttävää IP-osoitteista ja pirstoutumisesta, ota meihin yhteyttä kommenteissa.

Tämä verkkosivusto käyttää evästeitä parantaakseen käyttökokemustasi. Oletamme, että olet kunnossa, mutta voit halutessasi kieltäytyä. Hyväksyä Lisätietoja