IPv4: IP-Paket

Das Internet Protocol Version 4 (IPv4) ist im RFC-791 definiert. Es ist ein paketorientiertes Layer3-Protokoll. Ein IPv4-Paket sieht wie folgt aus:

Paket

Die einzelnen Felder sind:

Version (4 Bits) - Die Protokoll-Version (= 4).

IHL (4 Bits) - Internet Header Length gibt die Länge des Headers in 32-Bit-langen Worten an. Die Mindestlänge ist 5.

TOS (8 Bits) - Type Of Service legt QoS-Parameter fest:

Die ersten 3 Bits werden für QoS bzw. DiffServ genutzt:

Total Length (16 Bits) - Die Gesamtlänge des Pakets inkl. Header und Daten in Oktets (= Bytes). Die Maximalgröße ist 65535 Oktets (= 64KByte).

Indentification (16 Bits) - ID zur Kennzeichnung des Pakets, um das Zusammenfügen von Fragmenten zu ermögichen. Wird vom Sender vergeben.

Flags (3 Bits) - Kontroll-Flags:

Fragment Offset (13 Bits) - Der Offset gibt bei einem Fragment an, an welche Position es gehört. Der Wert wird in 8-Oktet-Worte (= 64 Bits) angegeben. Das erste Fragment hat einen Offset von 0.

TTL (8 Bits) - Time to Live definiert die Lebensdauer des Pakets in Sekunden. Jeder Router (Hop) soll die TTL um mindestens eins verkleinern. Tatsächlich reduziert jeder Router die TTL um genau eins, unabhängig von der Zeit. Daher wäre Maximum Hop Count eine bessere Bezeichnung. Ist die TTL 0, wird das Paket verworfen.

Protocol (8 Bits) - Die ID des Protokolls im Datenbereich. Die IDs sind in den "Assigned Numbers" definiert, z.B. 1 für ICMP.

Header Checksum (16 Bits) - Prüfsumme über den Paketheader. Bei der Berechnung wird das Feld "Header Checksum" mit dem Wert 0 angenommen.

Source Address (32 Bits) - Die Senderadresse.

Destination Address (32 Bits) - Die Empfängeradresse.

Options & Padding (optional, variabel, 32-Bit-Worte) - Die Optionen steuern Details bzw. liefern Debugging-Informationen. Folgende Optionen sind definiert:

Im Wesentlichen wird nur Record Route genutzt, um den Weg eines Pakets zum Debugging aufzuzeichnen. Source Routing ist meist aus Sicherheitsgründen abgeschaltet.

Da die Länge der Optionen nicht unbedingt Vielfache von 32 Bit sind, wird der unbenutzte Platz bis zum nächsten 32-Bit-Wort mit Nullen aufgefüllt.

Data (optional, variabel) - Die Daten des nächst höheren Protokolls, z.B. TCP.

PS: Die Pakete werden auch oft Datagramme genannt.