Fragmentierung: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
 
(10 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
=Identification=
+
== Fragmentierung ==
Über das Identifikationsfeld kann der Zielhost feststellen, zu welchem
 
Datengramm ein neu angekommenes Fragment gehört. Alle
 
Fragmente eines Datengramms enthalten die gleiche
 
=Flags=
 
Das Flags-Feld ist drei Bit lang. Die Flags bestehen aus zwei Bits
 
namens DF - Don't Fragment und MF - More Fragments. Das erste Bit
 
des Flags-Feldes ist ungenutzt bzw. reserviert. Die beiden Bits DF und
 
MF steuern die Behandlung eines Pakets im Falle einer
 
Fragmentierung. Mit dem DF-Bit wird signalisiert, daß das
 
Datengramm nicht fragmentiert werden darf. Auch dann nicht, wenn
 
das Paket dann evtl. nicht mehr weiter transportiert werden kann und
 
verworfen werden muß. Alle Hosts müssen, wie schon gesagt
 
Fragemente bzw. Datengramme mit einer Größe von 576 Bytes oder
 
weniger verarbeiten können. Mit dem MF-Bit wird angezeigt, ob einem
 
IP-Paket weitere Teilpakete nachfolgen. Diese Bit ist bei allen
 
Fragmenten außer dem letzten gesetzt.
 
=Fragment Offset=
 
Der Fragmentabstand bezeichnet, an welcher Stelle relativ zum
 
Beginn des gesamten Datengramms ein Fragment gehört. Mit Hilfe
 
dieser Angabe kann der Zielhost das Originalpaket wieder aus den
 
Fragmenten zusammensetzen. Da dieses Feld nur 13 Bit groß ist,
 
können maximal 8192 Fragmente pro Datengramm erstellt werden.
 
Alle Fragmente, außer dem letzten, müssen ein Vielfaches von 8 Byte
 
sein. Dies ist die elementare Fragmenteinheit.
 
  
[[Datei:fragment.gif]]
+
Die IP-Fragmentierung ermöglicht den Transport von Datagrammen über Netzabschnitte, deren maximale Übertragungseinheit (MTU) kleiner ist als die ursprüngliche Paketgröße.
 +
 
 +
== Identification ==
 +
* Über das Identifikationsfeld kann der Zielhost feststellen, zu welchem Datengramm ein neu angekommenes Fragment gehört.
 +
* Alle Fragmente eines Datengramms enthalten die gleiche Identifikation.
 +
 
 +
== Flags ==
 +
* Das Flags-Feld ist drei Bit lang. Die Flags bestehen aus zwei Bits namens '''DF''' (Don't Fragment) und '''MF''' (More Fragments).
 +
* Das erste Bit des Flags-Feldes ist ungenutzt bzw. reserviert.
 +
* Die beiden Bits DF und MF steuern die Behandlung eines Pakets im Falle einer Fragmentierung.
 +
* Mit dem '''DF-Bit''' wird signalisiert, dass das Datengramm nicht fragmentiert werden darf.
 +
** Dies gilt auch dann, wenn das Paket dann eventuell nicht mehr weiter transportiert werden kann und verworfen werden muss.
 +
** Alle Hosts müssen Fragmente bzw. Datengramme mit einer Größe von 576 Bytes oder weniger verarbeiten können.
 +
* Mit dem '''MF-Bit''' wird angezeigt, ob einem IP-Paket weitere Teilpakete nachfolgen.
 +
** Dieses Bit ist bei allen Fragmenten außer dem letzten gesetzt.
 +
 
 +
== Fragment Offset ==
 +
* Der Fragmentabstand (Fragment Offset) bezeichnet, an welcher Stelle relativ zum Beginn des gesamten Datengramms ein Fragment gehört.
 +
* Mit Hilfe dieser Angabe kann der Zielhost das Originalpaket wieder aus den Fragmenten zusammensetzen.
 +
* Da dieses Feld nur 13 Bit groß ist, können maximal 8192 Fragmente pro Datengramm erstellt werden.
 +
* Alle Fragmente, außer dem letzten, müssen ein Vielfaches von 8 Byte sein.
 +
* Dies ist die elementare Fragmenteinheit.
 +
 
 +
 
 +
 
 +
== Routing ==
 +
{{#drawio:fragmentierung-routing}}
 +
 
 +
== Fragmentierung ==
 +
{{#drawio:fragmentierung}}
 +
 
 +
== Realität der Fragmentierung in modernen Netzen ==
 +
 
 +
In der heutigen Netzwerkpraxis ist die IP-Fragmentierung nahezu vollständig verdrängt worden. Das liegt vor allem daran, dass moderne Betriebssysteme das '''DF-Bit''' (Don't Fragment) im IP-Header standardmäßig auf '''1''' setzen.
 +
 
 +
* '''Das DF-Bit-Dilemma:''' Da fast alle Pakete mit gesetztem DF-Bit versendet werden, darf ein Router sie nicht fragmentieren, selbst wenn die MTU des nächsten Hops zu klein ist. Er verwirft das Paket stattdessen.
 +
* '''ICMP "Fragmentation Needed":''' Wenn ein Router ein Paket wegen des DF-Bits verwirft, sendet er eine ICMP-Nachricht (Type 3, Code 4) an den Absender zurück. Diese enthält die maximal erlaubte MTU für diesen Abschnitt.
 +
* '''Path MTU Discovery (PMTUD):''' Der sendende Host nutzt diese ICMP-Rückmeldungen, um seine Paketgröße dynamisch nach unten zu korrigieren. Erst wenn dieser Mechanismus (z. B. durch Firewalls, die ICMP blockieren) scheitert, entstehen die typischen "MTU-Black-Holes" (Verbindungsaufbau klappt, aber Datenübertragung stockt).
 +
 
 +
 
 +
 
 +
== Alternativen zur Vermeidung ==
 +
 
 +
Um sicherzustellen, dass Pakete gar nicht erst fragmentiert werden müssen, kommen zwei Techniken zum Einsatz:
 +
 
 +
* '''MSS Clamping:''' Vor allem bei DSL-Verbindungen (PPPoE) reduzieren Router den MSS-Wert (Maximum Segment Size) im TCP-Handshake künstlich. Dadurch "denken" die Endgeräte, sie müssten kleinere Pakete schicken, und die MTU-Grenze wird nie erreicht.
 +
* '''IPv6-Standard:''' In IPv6 wurde die Fragmentierung durch Router komplett abgeschafft. Hier ist PMTUD zwingend vorgeschrieben; Router leiten zu große Pakete niemals fragmentiert weiter, sondern verwerfen sie immer mit einer entsprechenden Fehlermeldung.

Aktuelle Version vom 29. März 2026, 10:01 Uhr

Fragmentierung

Die IP-Fragmentierung ermöglicht den Transport von Datagrammen über Netzabschnitte, deren maximale Übertragungseinheit (MTU) kleiner ist als die ursprüngliche Paketgröße.

Identification

  • Über das Identifikationsfeld kann der Zielhost feststellen, zu welchem Datengramm ein neu angekommenes Fragment gehört.
  • Alle Fragmente eines Datengramms enthalten die gleiche Identifikation.

Flags

  • Das Flags-Feld ist drei Bit lang. Die Flags bestehen aus zwei Bits namens DF (Don't Fragment) und MF (More Fragments).
  • Das erste Bit des Flags-Feldes ist ungenutzt bzw. reserviert.
  • Die beiden Bits DF und MF steuern die Behandlung eines Pakets im Falle einer Fragmentierung.
  • Mit dem DF-Bit wird signalisiert, dass das Datengramm nicht fragmentiert werden darf.
    • Dies gilt auch dann, wenn das Paket dann eventuell nicht mehr weiter transportiert werden kann und verworfen werden muss.
    • Alle Hosts müssen Fragmente bzw. Datengramme mit einer Größe von 576 Bytes oder weniger verarbeiten können.
  • Mit dem MF-Bit wird angezeigt, ob einem IP-Paket weitere Teilpakete nachfolgen.
    • Dieses Bit ist bei allen Fragmenten außer dem letzten gesetzt.

Fragment Offset

  • Der Fragmentabstand (Fragment Offset) bezeichnet, an welcher Stelle relativ zum Beginn des gesamten Datengramms ein Fragment gehört.
  • Mit Hilfe dieser Angabe kann der Zielhost das Originalpaket wieder aus den Fragmenten zusammensetzen.
  • Da dieses Feld nur 13 Bit groß ist, können maximal 8192 Fragmente pro Datengramm erstellt werden.
  • Alle Fragmente, außer dem letzten, müssen ein Vielfaches von 8 Byte sein.
  • Dies ist die elementare Fragmenteinheit.


Routing

Fragmentierung

Realität der Fragmentierung in modernen Netzen

In der heutigen Netzwerkpraxis ist die IP-Fragmentierung nahezu vollständig verdrängt worden. Das liegt vor allem daran, dass moderne Betriebssysteme das DF-Bit (Don't Fragment) im IP-Header standardmäßig auf 1 setzen.

  • Das DF-Bit-Dilemma: Da fast alle Pakete mit gesetztem DF-Bit versendet werden, darf ein Router sie nicht fragmentieren, selbst wenn die MTU des nächsten Hops zu klein ist. Er verwirft das Paket stattdessen.
  • ICMP "Fragmentation Needed": Wenn ein Router ein Paket wegen des DF-Bits verwirft, sendet er eine ICMP-Nachricht (Type 3, Code 4) an den Absender zurück. Diese enthält die maximal erlaubte MTU für diesen Abschnitt.
  • Path MTU Discovery (PMTUD): Der sendende Host nutzt diese ICMP-Rückmeldungen, um seine Paketgröße dynamisch nach unten zu korrigieren. Erst wenn dieser Mechanismus (z. B. durch Firewalls, die ICMP blockieren) scheitert, entstehen die typischen "MTU-Black-Holes" (Verbindungsaufbau klappt, aber Datenübertragung stockt).


Alternativen zur Vermeidung

Um sicherzustellen, dass Pakete gar nicht erst fragmentiert werden müssen, kommen zwei Techniken zum Einsatz:

  • MSS Clamping: Vor allem bei DSL-Verbindungen (PPPoE) reduzieren Router den MSS-Wert (Maximum Segment Size) im TCP-Handshake künstlich. Dadurch "denken" die Endgeräte, sie müssten kleinere Pakete schicken, und die MTU-Grenze wird nie erreicht.
  • IPv6-Standard: In IPv6 wurde die Fragmentierung durch Router komplett abgeschafft. Hier ist PMTUD zwingend vorgeschrieben; Router leiten zu große Pakete niemals fragmentiert weiter, sondern verwerfen sie immer mit einer entsprechenden Fehlermeldung.