Zusammenfassung

  • RFC 791 definiert Total Length als Länge des vollständigen IPv4-Datagramms einschließlich Header und Daten.
  • RFC 894 stellt klar, dass Ethernet-Padding zum Erreichen von 46 Oktetten nicht zum IP-Paket gehört.

Ein kurzes Datagramm zeigt, warum die äußere Hülle nicht die Grenze einer inneren Schicht bestimmen darf. Ethernet benötigt in seinem Datenfeld mindestens 46 Oktette. Ist ein IPv4-Datagramm kleiner, folgen Nullen als Padding. Der Frame enthält dann mehr Oktette als das IP-Paket selbst.

IPv4 trägt die maßgebliche Angabe im eigenen Header. Total Length ist ein 16-Bit-Feld und zählt Header und Daten gemeinsam. Der Frame sorgt für den Transport; das Datagramm erklärt seine eigene Ausdehnung.

IHL und die vollständige Länge

IHL gibt die Headerlänge in 32-Bit-Wörtern an. Der kleinste gültige Wert ist fünf, also 20 Oktette. Total Length misst das gesamte Datagramm in Oktetten. Die Datenlänge ergibt sich daher aus der Differenz zwischen Total Length und der aus IHL berechneten Headerlänge. Optionen können den Header verlängern, ändern aber nicht die Aufgabe von Total Length.

Das Feld zählt weder Ethernet-Adressen noch Steuerfelder, Präambel, Frame-Prüfung oder Padding. Es sagt, welche Oktette innerhalb der an IPv4 übergebenen Nutzlast zum Datagramm gehören.

Darstellungsgrenze und Zustellbarkeit

Darstellbar sind Werte bis 65.535 Oktette. RFC 791 bezeichnet derart lange Datagramme für die meisten Hosts und Netze als unpraktisch. Hosts müssen Datagramme bis 576 Oktette akzeptieren, vollständig oder fragmentiert; größere sollen nur mit ausreichender Gewissheit über die Empfängerkapazität gesendet werden. Für ein IP-Datagramm im Ethernet-Datenfeld nennt RFC 894 1.500 Oktette als Maximum. Die 16-Bit-Grenze ist somit weder eine Pfad-MTU noch eine Empfangsgarantie.

Dieselbe Regel bei Fragmentierung

Jedes Fragment besitzt einen eigenen Header und Total Length für seinen Header samt Fragmentdaten. Identification, Fragment Offset und More Fragments erfüllen andere Aufgaben. Total Length begrenzt das aktuelle Fragment, nicht eine Anwendungsmeldung und nicht zwingend das ursprüngliche Datagramm.

Eine Längenangabe kann fehlerhaft sein, und eine Aufzeichnung kann abgeschnitten sein. Daher müssen Total Length, IHL, verfügbare Oktette, Padding und Herkunft der Aufzeichnung gemeinsam geprüft werden. Das Feld ist eine Interpretationsregel, kein Integritäts- oder Zustellnachweis.

Quellen