Zum Inhalt springen

IP-Fragmentierung

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 24. März 2004 um 11:09 Uhr durch Swing (Diskussion | Beiträge) (typo). Sie kann sich erheblich von der aktuellen Version unterscheiden.

Die IP-Fragmentierung bezeichnet die Aufteilung eines IP Datenpaketes auf mehrere physikalische Frames, falls die Gesamtlänge des Datenpaketes größer als die maximale MTU des Netzwerkinterfaces ist.

Hintergrund

Im einfachsten Fall passt das gesamte IP-Datagram in einen physikalischen Frame und erreicht somit die höchste Effizienz. Es gibt jedoch keine festen Vorgaben bzgl. einer festen Paketgröße von IP-Datenpaketen. Des weiteren ist die maximal mögliche Paketgröße abhänging von den verwendeten Infrastukturkomponenten, da jede Paket-Switching Technik unterschiedliche maximale Paketgrößen aufweisst.

Zielsetzung

Ziel bei der Einführung der Fragmentierung im IP-Protokoll war es, die zugrundeligenden Netzwerkstruktur für den Benutzer zu Verstecken (Schichtenmodell) und somit die Protokollimplementierung von der Hardware unabhängig zu gestalten.

Arbeitsweise

Sobald der IP-Stack (vgl. auch OSI-Modell oder TCP/IP-Referenzmodell) ein Datenpaket zum Versenden enthält, prüft dieser, ob die Paketgröße eine Aufteilung andhand der für die zu verwendende Netzwerkschnittstelle gegebene MTU notwendig macht. Ist dies nötig, so Teilt dieser das vorhandene Datenpaket in mehrere Datenpakete auf. Dieser Vorgang wird als Fragmentierung bezeichnet. Diese Fragmentierung kann sowohl beim ursprünlichen Sender stattfinden oder auch auf Routern, die zwischen Sender und Empfänger liegen. Wird ein IP-Datagramm fragmentiert, so wird es erst beim Empfänger wieder zusammen gsetzt (Ausnahme: ggf. zwischengschaltete Firewalls, die speziell angewiesen wurden ein sog. Reassembly durch zu führen, bevor die Daten weiter geleitet werden). Sollte es nötig sein, kann auch ein bereits fragmentiertes Paket weiter fragmentiert werden (etwa bei einem Wechsel der Übertragungstechnik).

Jedes Datagramm, das fragmentiert wurde, erhält eine Kennzeichnung (Fragment-Flag, siehe IPv4) und enthält statt des Datagramm-Headers des Originalpaketes einen sog. Fragmentheader, der u.a. den sog. Offset der in diesem Paket versendeten Datenportion in Relation zum Originalpaket angibt.

Per Definition kann die IP-Schicht keine Angaben darüber machen, ob ein Paket im Verlauf seiner Übertragung fragmentiert wird oder nicht. Einzige Ausnahme: Der Sender kann das sog. Don´t Fragment Flag setzen, welches alle beteiligten Kommunikationsysteme (Router, Gateways, etc) anweisst keine Fragmentierung vor zu nehemen. Für den Fall, dass eine Fragmenteriung doch notwendig wäre, wird das Paket verworfen und dem Sender eine ICMP Fehlermeldung gesendet, dass das Ziel nicht erreichbar sei "fragmentation required but don't fragment bit set".

Da jedes einzelne Fragment ein eigenständiges Paket darstellt, kann es auch vorkommen, das diese Einzelteile nicht geordnet ankommen. Hierbei ist es dann die Aufgabe des Empfängers, das Orginal, aus den in den Paketheadern vorhandenen Informationen, wieder zusammen zu setzen.

Auswirkungen

Obwohl die Zielsetzung eine für höhere Schichten (z.B. TCP/UDP) transparente Implementierung ist, gibt es zwei Punkte in denen dieses nicht ganz erreicht wird:

  • Die Fragmentierung kann großen Einfluss au die Performance und den Datendurchsatz haben und beeinflusst diesen im allgemeinen negativ.
  • Geht ein Fragmentiertes Paket des Originial Paketes verloren, so muß das gesamte Original erneut übertragen werden. IP hat jedoch keine Sicherungs- bzw. Timeoutmechanismen und ist hierbei auf die Sicherungsfunktionen höherer Schichten wie die des TCP angewiesen.

Aus genannten Gründen wird versucht Fragmentierung immer so weit als möglich zu vermeiden.