Spis treści
Fragmentacja IP
Fragmentacja datagramów IP – proces podziału pakietów protokołu internetowego na mniejsze części (nazywane fragmentami). Działanie to jest konieczne, aby pakiety mogły zostać przesłane przez łącze, którego maksymalna jednostka transmisji (MTU) jest mniejsza niż rozmiar oryginalnego pakietu. Fragmenty są następnie ponownie składane w całość przez hosta docelowego[1].
Szczegóły mechanizmu fragmentacji, a także ogólne podejście architektoniczne do tego procesu, różnią się w zależności od wersji protokołu IPv4 i IPv6.
Przebieg procesu
[edytuj | edytuj kod]Procedura fragmentacji, transmisji i ponownego składania pakietów IP została opisana w dokumencie RFC 791[2]. Uproszczony algorytm składania fragmentów przedstawiono natomiast w RFC 815[3]. Do prawidłowej fragmentacji i defragmentacji pakietów wykorzystywane są pola nagłówka IP: pole identyfikacyjne (Identification), adresy źródłowy i docelowy, identyfikator protokołu (Protocol), a także pole przesunięcia fragmentu (Fragment offset) oraz flagi Don't Fragment (DF) i More Fragments (MF)[2][3].
Host, który otrzymuje pofragmentowany pakiet IP, musi go złożyć z powrotem w całość, a następnie przekazać do warstwy wyższej. Proces ten z założenia odbywa się na hoście docelowym, jednak w praktyce może być również wykonywany przez router pośredniczący. Dzieje się tak na przykład w przypadku mechanizmu NAT, który może wymagać złożenia fragmentów w celu translacji strumieni danych[4].
Wpływ na przekazywanie pakietów w sieci
[edytuj | edytuj kod]Gdy w sieci istnieje wiele równoległych ścieżek, technologie takie jak agregacja łączy czy Cisco Express Forwarding rozdzielają ruch pomiędzy nimi przy użyciu funkcji haszującej. Jednym z celów takiego algorytmu jest zapewnienie, by wszystkie pakiety należące do tego samego przepływu były wysyłane tą samą ścieżką, co pozwala zminimalizować zjawisko zmiany kolejności pakietów.
Fragmentacja IP może prowadzić do nadmiernych retransmisji, gdy fragmenty napotkają na problem utraty pakietów. W takiej sytuacji protokoły niezawodne, takie jak TCP, muszą ponownie przesłać wszystkie fragmenty, aby odzyskać dane po utracie nawet jednego z nich[5]. Z tego powodu nadawcy zazwyczaj stosują jedną z dwóch metod do określania rozmiaru wysyłanych pakietów IP. Pierwsza polega na wysyłaniu przez hosta nadawczego pakietów o rozmiarze równym MTU dla pierwszego skoku na trasie do odbiorcy. Drugą metodą jest użycie algorytmu Path MTU Discovery[6], który pozwala na określenie MTU dla całej ścieżki (tzw. Path MTU) między dwoma hostami, co umożliwia uniknięcie fragmentacji.
Fragmentacja IP jest często uważana za mechanizm mało odporny na błędy i często niepożądany ze względu na negatywny wpływ na bezpieczeństwo[7].
Przypisy
[edytuj | edytuj kod]- ↑ Fragmentacja, odtwarzanie datagramów i MTU trasy, [w:] Douglas Comer, Marek Pałczyński, Sieci komputerowe i intersieci: kompendium wiedzy każdego administratora!, wyd. 5, Gliwice: Wydawnictwo Helion, 2012, s. 431–433, ISBN 978-83-246-3607-5 [dostęp 2025-09-14].
- ↑ a b Jon Postel, Internet Protocol, STD 5, RFC 791, IETF, wrzesień 1981, DOI: 10.17487/RFC0791, ISSN 2070-1721, OCLC 943595667 (ang.).
- ↑ a b David D. Clark, IP datagram reassembly algorithms, RFC 815, IETF, lipiec 1982, DOI: 10.17487/RFC0815, ISSN 2070-1721, OCLC 943595667 (ang.).
- ↑ T. Hain, Architectural Implications of NAT, RFC 2993, IETF, listopad 2000, DOI: 10.17487/RFC2993, ISSN 2070-1721, OCLC 943595667 (ang.).
- ↑ Christopher A. Kent, Jeffrey C. Mogul, Fragmentation Considered Harmful, grudzień 1987 [dostęp 2025-09-30] (pol.).
- ↑ J.C. Mogul, S.E. Deering, Path MTU discovery, RFC 1191, IETF, listopad 1990, DOI: 10.17487/RFC1191, ISSN 2070-1721, OCLC 943595667 (ang.).
- ↑ F. Baker, G. Huston, O. Troan, IP Fragmentation Considered Fragile, BCP 230, RFC 8900, IETF, wrzesień 2020, DOI: 10.17487/RFC8900, ISSN 2070-1721, OCLC 943595667 (ang.).









