Įvadas
Visi žinome IP klasifikavimo ir neklasifikavimo principus bei jų taikymą tinklo komunikacijoje. IP fragmentacija ir pakartotinis surinkimas yra pagrindinis paketų perdavimo proceso mechanizmas. Kai paketo dydis viršija maksimalų tinklo ryšio perdavimo vieneto (MTU) limitą, IP fragmentacija padalija paketą į kelis mažesnius fragmentus perdavimui. Šie fragmentai tinkle perduodami atskirai ir, atvykę į paskirties vietą, IP pakartotinio surinkimo mechanizmu jie vėl surenkami į pilnus paketus. Šis fragmentacijos ir pakartotinio surinkimo procesas užtikrina, kad tinkle būtų galima perduoti didelius paketus, kartu užtikrinant duomenų vientisumą ir patikimumą. Šiame skyriuje atidžiau panagrinėsime, kaip veikia IP fragmentacija ir pakartotinis surinkimas.
IP fragmentacija ir surinkimas iš naujo
Skirtingos duomenų jungtys turi skirtingus maksimalius perdavimo vienetus (MTU); pavyzdžiui, FDDI duomenų jungties MTU yra 4352 baitai, o Ethernet MTU – 1500 baitų. MTU reiškia maksimalų perdavimo vienetą ir nurodo maksimalų paketo dydį, kurį galima perduoti tinklu.
FDDI (Fiber Distributed Data Interface) yra didelės spartos vietinio tinklo (LAN) standartas, kuriame kaip perdavimo terpė naudojamas optinis pluoštas. Didžiausias perdavimo vienetas (MTU) yra didžiausias paketo dydis, kurį galima perduoti duomenų perdavimo sluoksnio protokolu. FDDI tinkluose MTU dydis yra 4352 baitai. Tai reiškia, kad didžiausias paketo dydis, kurį galima perduoti duomenų perdavimo sluoksnio protokolu FDDI tinkle, yra 4352 baitai. Jei perduodamas paketas viršija šį dydį, jį reikia suskaidyti, kad paketas būtų padalintas į kelis fragmentus, tinkamus MTU dydžiui perduoti ir surinkti imtuve.
Ethernet atveju MTU paprastai yra 1500 baitų dydžio. Tai reiškia, kad Ethernet gali perduoti iki 1500 baitų dydžio paketus. Jei paketo dydis viršija MTU ribą, paketas suskaidomas į mažesnius fragmentus perdavimui ir vėl surenkamas paskirties vietoje. Fragmentuotos IP datagramos pakartotinį surinkimą gali atlikti tik paskirties kompiuteris, o maršrutizatorius pakartotinio surinkimo operacijos neatliks.
Anksčiau taip pat kalbėjome apie TCP segmentus, tačiau MSS reiškia maksimalų segmento dydį ir atlieka svarbų vaidmenį TCP protokole. MSS reiškia maksimalų duomenų segmento, kurį leidžiama siųsti TCP ryšiu, dydį. Panašiai kaip MTU, MSS naudojamas paketų dydžiui riboti, tačiau tai daroma transportavimo sluoksnyje, TCP protokolo sluoksnyje. TCP protokolas perduoda taikomojo sluoksnio duomenis padalijęs duomenis į kelis duomenų segmentus, o kiekvieno duomenų segmento dydį riboja MSS.
Kiekvienos duomenų jungties MTU yra skirtingas, nes kiekvienas skirtingas duomenų jungties tipas naudojamas skirtingiems tikslams. Priklausomai nuo naudojimo tikslo, gali būti talpinami skirtingi MTU.
Tarkime, siuntėjas nori išsiųsti didelę 4000 baitų datagramą perdavimui Ethernet ryšiu, todėl datagramą reikia padalyti į tris mažesnes datagramas perdavimui. Taip yra todėl, kad kiekvienos mažos datagramos dydis negali viršyti MTU ribos, kuri yra 1500 baitų. Gavęs tris mažas datagramas, imtuvas jas surenka į pradinę 4000 baitų dydžio datagramą pagal kiekvienos datagramos sekos numerį ir poslinkį.
Fragmentuoto perdavimo metu fragmento praradimas anuliuoja visą IP duomenų diagramą. Siekdamas to išvengti, TCP įdiegė MSS, kur fragmentacija atliekama TCP sluoksnyje, o ne IP sluoksnyje. Šio metodo privalumas yra tas, kad TCP tiksliau kontroliuoja kiekvieno segmento dydį, todėl išvengiama problemų, susijusių su fragmentacija IP sluoksnyje.
UDP atveju stengiamės nesiųsti duomenų paketų, didesnių nei MTU. Taip yra todėl, kad UDP yra be ryšio pagrįstas perdavimo protokolas, kuris neužtikrina patikimumo ir pakartotinio perdavimo mechanizmų, tokių kaip TCP. Jei siunčiame UDP duomenų paketą, didesnį nei MTU, IP sluoksnis jį suskaidys perdavimui. Praradus vieną iš fragmentų, UDP protokolas negali jo pakartotinai perduoti, todėl prarandami duomenys. Todėl, norėdami užtikrinti patikimą duomenų perdavimą, turėtume stengtis kontroliuoti UDP duomenų paketų dydį MTU ir vengti suskaidyto perdavimo.
„Mylinking™“ tinklo paketų tarpininkasGali automatiškai atpažinti įvairius tunelio protokolus, tokius kaip VxLAN/NVGRE/IPoverIP/MPLS/GRE ir kt., kuriuos galima nustatyti pagal vartotojo profilį, atsižvelgiant į tunelio srauto išvestį, vidines arba išorines charakteristikas.
○ Gali atpažinti VLAN, QinQ ir MPLS etikečių paketus
○ Gali identifikuoti vidinį ir išorinį VLAN
○ Galima identifikuoti IPv4/IPv6 paketus
○ Gali atpažinti VxLAN, NVGRE, GRE, IPoverIP, GENEVE, MPLS tunelių paketus
○ Galima identifikuoti IP fragmentuotus paketus (palaiko IP fragmentacijos identifikavimą ir palaiko IP fragmentacijos pakartotinį surinkimą, kad būtų galima įdiegti L4 funkcijų filtravimą visiems IP fragmentacijos paketams. Įdiegti srauto išvesties politiką.)
Kodėl IP ir TCP yra fragmentuoti?
Kadangi tinklo perdavime IP sluoksnis automatiškai fragmentuoja duomenų paketą, net jei TCP sluoksnis nesegmentuoja duomenų, IP sluoksnis automatiškai fragmentuoja duomenų paketą ir perduoda jį normaliai. Tad kodėl TCP reikalingas fragmentavimas? Ar tai ne per daug?
Tarkime, kad yra didelis paketas, kuris nėra segmentuojamas TCP sluoksnyje ir prarandamas perdavimo metu; TCP jį perduos dar kartą, bet tik visą didelį paketą (nors IP sluoksnis suskirsto duomenis į mažesnius paketus, kurių kiekvienas turi MTU ilgį). Taip yra todėl, kad IP sluoksniui nerūpi patikimas duomenų perdavimas.
Kitaip tariant, įrenginio perdavimo į tinklą jungtyje, jei perdavimo sluoksnis fragmentuoja duomenis, IP sluoksnis jų nefragmentuoja. Jei fragmentacija neatliekama perdavimo sluoksnyje, fragmentacija IP sluoksnyje yra įmanoma.
Paprastai tariant, TCP segmentuoja duomenis taip, kad IP sluoksnis nebebūtų fragmentuotas, o pakartotinio perdavimo metu būtų perduotos tik nedidelės fragmentuotų duomenų dalys. Tokiu būdu galima pagerinti perdavimo efektyvumą ir patikimumą.
Jei TCP yra fragmentuotas, ar IP sluoksnis nėra fragmentuotas?
Aukščiau aptartoje diskusijoje minėjome, kad po TCP fragmentacijos siuntėjo pusėje, IP lygmenyje fragmentacijos nebūna. Tačiau visoje perdavimo jungtyje gali būti kitų tinklo lygmens įrenginių, kurių maksimalus perdavimo vienetas (MTU) gali būti mažesnis nei siuntėjo MTU. Todėl, nors paketas buvo fragmentuotas siuntėjo pusėje, jis vėl fragmentuojamas, kai praeina per šių įrenginių IP lygmenį. Galiausiai visos fragmentacijos bus surinktos imtuvo pusėje.
Jei galime nustatyti minimalų MTU visame ryšio kanale ir siųsti duomenis tokiu ilgiu, fragmentacija neįvyks, nesvarbu, į kurį mazgą duomenys perduodami. Šis minimalus MTU visame ryšio kanale vadinamas kelio MTU (PMTU). Kai IP paketas atkeliauja į maršrutizatorių, jei maršrutizatoriaus MTU yra mažesnis už paketo ilgį ir DF (nefragmentuoti) vėliavėlė yra nustatyta į 1, maršrutizatorius negalės fragmentuoti paketo ir gali jį tik atmesti. Tokiu atveju maršrutizatorius generuoja ICMP (interneto valdymo pranešimų protokolo) klaidos pranešimą pavadinimu „Reikalingas fragmentavimas, bet DF nustatytas“. Šis ICMP klaidos pranešimas bus išsiųstas atgal į šaltinio adresą su maršrutizatoriaus MTU reikšme. Kai siuntėjas gauna ICMP klaidos pranešimą, jis gali pakoreguoti paketo dydį pagal MTU reikšmę, kad vėl išvengtų draudžiamo fragmentavimo situacijos.
IP fragmentacija yra būtina ir jos reikėtų vengti IP lygmenyje, ypač tarpiniuose ryšio įrenginiuose. Todėl IPv6 protokole IP paketų fragmentacija tarpiniuose įrenginiuose yra uždrausta, o fragmentacija gali būti atliekama tik ryšio pradžioje ir pabaigoje.
Pagrindinis IPv6 supratimas
IPv6 yra 6-oji interneto protokolo versija, kuri yra IPv4 įpėdinis. IPv6 naudoja 128 bitų adresų ilgį, kuris gali suteikti daugiau IP adresų nei 32 bitų IPv4 adresų ilgis. Taip yra todėl, kad IPv4 adresų erdvė palaipsniui išeikvojama, o IPv6 adresų erdvė yra labai didelė ir gali patenkinti ateities interneto poreikius.
Kalbant apie IPv6, be didesnės adresų erdvės, jis taip pat suteikia geresnį saugumą ir mastelio keitimą, o tai reiškia, kad IPv6 gali suteikti geresnę tinklo patirtį, palyginti su IPv4.
Nors IPv6 egzistuoja jau seniai, jo diegimas visame pasaulyje vis dar vyksta gana lėtai. Taip yra daugiausia dėl to, kad IPv6 turi būti suderinamas su esamu IPv4 tinklu, todėl reikia pereiti prie naujo ir migruoti. Tačiau, išeikvojus IPv4 adresus ir didėjant IPv6 paklausai, vis daugiau interneto paslaugų teikėjų ir organizacijų pamažu diegia IPv6 ir pamažu įgyvendina dvigubo IPv6 ir IPv4 veikimo principą.
Santrauka
Šiame skyriuje atidžiau panagrinėjome, kaip veikia IP fragmentacija ir pakartotinis surinkimas. Skirtingos duomenų jungtys turi skirtingus maksimalius perdavimo vienetus (MTU). Kai paketo dydis viršija MTU ribą, IP fragmentacija padalija paketą į kelis mažesnius fragmentus perdavimui ir, pasiekusi paskirties vietą, juos vėl surenka į visą paketą, naudodama IP pakartotinio surinkimo mechanizmą. TCP fragmentacijos tikslas – užtikrinti, kad IP sluoksnis nebefragmentuotų ir pakartotinai perduotų tik tuos mažus duomenis, kurie buvo suskaidyti pakartotinio perdavimo metu, taip pagerinant perdavimo efektyvumą ir patikimumą. Tačiau visoje perdavimo jungtyje gali būti kitų tinklo sluoksnio įrenginių, kurių MTU gali būti mažesnis nei siuntėjo, todėl paketas vis tiek bus vėl fragmentuojamas šių įrenginių IP sluoksnyje. Reikėtų kiek įmanoma vengti fragmentacijos IP sluoksnyje, ypač tarpiniuose jungties įrenginiuose.
Įrašo laikas: 2025 m. rugpjūčio 7 d.