Fragmentace IP datagramů

Technology
12 hours ago
8
4
2
Avatar
Author
Albert Flores

Fragmentace IP datagramů je proces, kterým se datagramy, které jsou větší než maximální velikost přenosné jednotky (MTU), rozdělují na menší části nazývané fragmenty. Tento proces je nezbytný při přenosu datagramů přes sítě s různými MTU hodnotami. Fragmentace IP datagramů je implementována v síťové vrstvě protokolu IP. Při fragmentaci je původní datagram rozdělen na fragmenty, které jsou přenášeny samostatně po síti. Přijímací strana poté tyto fragmenty spojí a obnoví původní datagram. Fragmentace je prováděna pouze v případě, že je to nezbytně nutné. Když je síťové rozhraní nastaveno na menší MTU, než je velikost datagramu, datagram je rozdělen na fragmenty, které mají velikost rovnou MTU. Každý fragment obsahuje údaje o svém pořadí a zdrojové adrese datagramu. Přijímací strana pak používá tyto údaje k nalezení a spojení fragmentů. Fragmentace a sestavování fragmentů mohou vést k zvýšené zátěži sítě, zvýšenému zpoždění a dalším problémům. Proto se obecně doporučuje minimalizovat fragmentaci a navrhovat síťové protokoly tak, aby dokázaly efektivně pracovat s různě velkými MTU hodnotami. Fragmentace IP datagramů je důležitý koncept v síťových komunikacích a je široce používán v současných počítačových sítích. Je nezbytné porozumět tomuto procesu pro úspěšný přenos dat přes sítě s různými MTU hodnotami.

Fragmentace IP datagramů je v informatice rozdělování IP datagramů na menší části, aby mohly být přeneseny další částí počítačové sítě. Každá část přenosové trasy v počítačové síti má totiž definovanou svoji maximální MTU , která určuje maximální velikost IP datagramu, který je možné přenést. Současná obvyklá velikost MTU je 1500 bajtů (tj. maximální délka Ethernetového rámce), avšak vysokorychlostní sítě používají kvůli nižší režii větší délky (tzv. jumbogramy) a naopak tunelované spoje MTU kvůli vlastní režii snižují.

Fragmentace je při přenosu dovolena pouze v IPv4, nová verze IPv6 ji povoluje jen odesilateli datagramu. Obecně je snahou fragmentaci se vyhýbat, protože způsobuje řadu problémů.

Popis funkce

RFC 791 popisuje postup pro fragmentaci IP datagramů, jejich přenos a zpětné sestavení. RFC 815 popisuje zjednodušený algoritmus, který lze u síťových zařízení snadno realizovat. +more Pro řízení fragmentace jsou v hlavičce IP datagramu položky:.

* Identification - identifikace fragmentu * Fragment offset - pozice fragmentu v originálním paketu (počet osmic bytů dat od počátku původního datagramu k počátku tohoto fragmentu) * Don't Fragment (DF) - zákaz fragmentace (bitový příznak) * More Fragments - následují další fragmenty (bitový příznak)

V IPv4router při obdržení PDU (Protocol data unit, zde tedy IP datagram) větší velikosti, než je MTU následující trasy (příštího skoku) dvě možnosti. Buď PDU zahodí a odešle ICMP zprávu Packet too Big (paket příliš velký), nebo může PDU fragmentovat na menší části, které projdou linkou s menším MTU (pouze v případě, že fragmentace není zakázána pomocí příznaku Don't Fragment). +more V IPv6 má jen první možnost - pošle odesilateli ICMP zprávu a ten provede fragmentaci nebo datagram zmenší jiným způsobem.

Při defragmentaci se předpokládá, že původní datagram sestaví z fragmentů až příjemce, který výsledek předává do vyšší síťové vrstvy (např. aplikaci). +more V praxi však může být nutné sestavovat fragmenty již dříve - například na routeru, který provádí NAT (Network address translation), protože je nutné analyzovat obsah datagramů nebo je modifikovat a přepočítávat jejich kontrolní součty (viz FTP a NAT). V tomto případě je nutné, aby skrze takový router procházel veškerý síťový provoz k cílovému síťovému rozhraní, protože jinak by některé fragmenty mohly putovat jinou cestou a absence fragmentu by vyžadovala nový přenos celého původního velkého datagramu bez záruky toho, že příště projdou žádoucím uzlem.

Rozdíly v IPv4 a IPv6

Mechanismus fragmentace se v IPv4 (první a v současné době nejvíce používané verzi) a v novější verzi IPv6 liší v tom, která zařízení fragmentaci provádějí. V IPv4 datagramy může fragmentovat kterékoli zařízení, jímž během přepravy procházejí.

V IPv6 (a stejně tak i v IPv4 v případě použití příznaku DF - nefragmentovat) smí fragmentovat pouze odesilatel. Pokud router na trase zjistí, že datagram neprojde linkou, zahodí jej a informuje o tomto odesílatele ICMP zprávou. +more Ten může následně přenos datagramu zopakovat s menšími (jemněji fragmentovanými) pakety.

Přestože jsou formáty hlavičky pro IPv4 a IPv6 různé, jsou pro fragmentaci používána pole s obdobným významem, takže se k fragmentaci i opětovnému sestavení datagramů lze použít stejný algoritmus pro oba protokoly. V IPv4 jsou fragmentační údaje trvalou součástí hlavičky datagramu, v IPv6 se vkládají, jen pokud je datagram skutečně fragmentován. +more Slouží k tomu rozšiřující hlavička Fragment.

Problémy fragmentace

Zkušenosti z Internetu odhalily řadu problémů, které fragmentace vyvolává. Může například způsobovat nadměrné přenosy, pokud dojde ke ztrátě jednotlivých fragmentů, protože protokoly se zárukami (např. +more TCP) si vyžádají přenos celého původního datagramu, i když chybí jediný fragment.

Řada prvků přenosové infrastruktury současného Internetu využívá ke své činnosti také informace transportní vrstvy (typicky čísla portů TCP nebo UDP). Patří mezi ně například firewally nebo zařízení rozkládající příchozí provoz mezi skupinu serverů. +more Transportní hlavička se nachází na začátku přenášených dat a po fragmentaci je nesena prvním fragmentem, v ostatních nejsou transportní údaje k dispozici. Důsledkem může být, že pokračovací fragmenty jsou daným zařízením zahozeny nebo doručeny jinému stroji. Původní datagram pak nelze složit a spojení se jeví jako nefunkční, přestože malé datagramy (např. při testování programem ping) procházejí bez problémů.

Objevila se také celá řada fragmentačních útoků. Jelikož IP nezaručuje zachování pořadí, příjemce skládá fragmenty bez ohledu na to, v jakém pořadí přišly. +more Pokud útočník dokáže předpovědět identifikační číslo fragmentovaného datagramu, může adresátovi poslat falešné pokračovací fragmenty předem. Jakmile pak dorazí první fragment skutečného datagramu, adresát si složí falsum. Tímto způsobem lze buď blokovat komunikaci, kdy útočník posílá zjevně nesmyslné fragmenty, nebo se snažit podvrhovat do probíhající komunikace vlastní data.

Vyskytly se také zahlcovací útoky, kdy útočník posílá oběti velký počet úmyslně nekompletních datagramů, aby došlo k vyčerpání datových struktur určených pro skládání.

Důsledkem je, že fragmentace je v současném Internetu vnímána jako nežádoucí a prosazují se mechanismy, jak jí předcházet. Tím základním je algoritmus objevování MTU cesty (Path MTU discovery) popsaný v RFC 1191, RFC 1981 a RFC 4821, který umožňuje zjistit maximální velikost MTU pro celou cestu a posílat co největší pakety, které není třeba fragmentovat.

Literatura

5 min read
Share this post:
Like it 8

Leave a Comment

Please, enter your name.
Please, provide a valid email address.
Please, enter your comment.
Enjoy this post? Join Cesko.wiki
Don’t forget to share it
Top