Zum Hauptinhalt springen

1. Das IP-Paket

Das IP-Paket, genauer Internet Protocol Datagram, ist das Grundelement der Internet-Datenkommunikation. Das Internet-Protokoll dient der Übertragung von Datenblöcken von Quellen zu Zielen, wobei Quellen und Ziele Hosts sind, die durch Adressen fester Länge identifiziert werden. Das Internet-Protokoll erbringt die Funktionen, die notwendig sind, um ein Paket von Bits, ein IP-Paket, von einer Quelle zu einem Ziel über ein zusammenhängendes Netzwerk-System zu transferieren. Es ermöglicht ausserdem die Fragmentierung und Neuzusammenstellung langer Datensequenzen für die Übertragung in «kleinen Paketen».

Das IP-Paket besteht immer aus zwei Teilen: den Kopfdaten, welche Informationen über Quelle, Ziel, Status, Fragmentierung etc. enthalten, und den Nutzdaten, dem eigentlichen «Inhalt».

1.1 Kopfdaten (Header)

In der üblichen Version 4 des Protokolls (IPv4) umfasst der Kopfdatenbereich 20 Byte plus bis zu 40 Byte optionale Felder. Die Länge des Headers darf 60 Byte nicht überschreiten.

In der neueren Version 6 (IPv6) des Protokolls ist der Header 40 Byte lang, zusätzliche Optionen werden in Erweiterungsheadern dargestellt.

Version
IP-Version, 4 Bit gross. Momentan sind Version 4 (IPv4) oder Version 6 (IPv6) möglich, wobei Version 4 die meistgenutzte ist.

IHL (Internet Header Length)
4 Bit gross. Die gesamte Länge des IP-Kopfdatenbereiches wird in Vielfachen von 32 Bit angegeben. Steht hier eine 5, so ist der Kopfdatenbereich 5 × 32 Bit = 160 Bit oder 20 Byte lang, was die Minimallänge für den IP-Kopfdatenbereich ist (Options-Feld ist optional). Dadurch wird anzeigt, wo die Nutzdaten beginnen.

TOS (Type of Service)
8 Bit gross. Das Feld kann für die Priorisierung von IP-Datenpaketen gesetzt und ausgewertet werden (Quality of Service). Die Service-Qualität ist zum Beispiel bei der IP-Telefonie wichtig: der Datenstrom von VoIP-Paketen (Voice over IP) wird in der Regel priorisiert, da ein Auftreten von Latenzen oder das Abreissen des Datenstroms eine Beeinträchtigung der Verbindungs-/Gesprächsqualität nach sich ziehen würde.

Total Länge (Total Lenght)
16 Bit gross, gibt die Länge des gesamten Pakets (inkl. Kopfdaten) in Byte an. Daraus ergibt sich eine maximale Paketlänge von 65535 Byte (64KiB – 1B). Alle Hosts müssen Datagramme mit einer Länge von mindestens 576 Byte verarbeiten können.

Identifikation (Identification)
16 Bit gross. Dieses und die beiden folgenden Felder Flags und Fragment Offset steuern das Zusammensetzen von zuvor fragmentierten IP-Datenpaketen. Eindeutige Kennung eines Datagramms: Anhand dieses Feldes und der ‹Quell-Adresse› kann der Empfänger die Zusammengehörigkeit von Fragmenten feststellen und sie mit Hilfe des ‹Fragment Offset› wieder reassemblieren.

Flags
3 Bit gross. Die Bits haben folgende Bedeutung:

Bit 0 reserviert, muss 0 sein
Bit 1 – DF
(Don’t Fragment)
Wenn auf 1, zeigt es an, dass das Paket nicht in Fragmente zerlegt (fragmentiert) werden darf.
Bit 2 – MF
(More Fragments)
Wenn auf 1, zeigt es an, dass weitere Fragmente folgen.
Wenn auf 0, ist dieses Paket das letzte (bzw. einzige) Fragment.

Da die Nutzdaten in der Regel nicht in ein IP-Paket hineinpassen, werden die Daten zerlegt und in mehrere IP-Pakete verpackt und verschickt. Man spricht dann von Fragmentierung. Die Flags gehen näher darauf ein. Das erste Flag ist immer 0. Das zweite Flag (DF) verbietet die Fragmentierung des Datenpakets, wenn es gesetzt ist. Das dritte Flag (MF) gibt weitere Datenpaket-Fragmente an, wenn es gesetzt ist.

Fragment Offset
13 Bit gross. Eine Nummer, die bei fragmentierten Paketen besagt, ab welcher Position innerhalb des Paketes das Fragment anfängt. Die Nummerierung bezieht sich auf Daten-Blöcke von 64 Bit bzw. 8 Byte Grösse und ist unabhängig von der Fragmentierung. Ein Paket kann daher falls notwendig mehrmals hintereinander in immer kleinere Fragmente zerteilt werden. Dabei muss nur die Nummer des ersten enthaltenen Datenblocks (Offset) und das Total-Length-Feld an die Länge des Fragments angepasst werden. Das erste Fragment, oder ein nicht fragmentiertes Paket, enthält als Offset den Wert Null. Ist ein Paket mit 800 Byte Nutzdaten (Offset-Nummerierung von 0 bis 99) in zwei Fragmente zerteilt, ist der Offset des zweiten Fragments die Nummer 50. Da der Offset keinerlei Hinweis enthält, wie gross das ursprüngliche Paket ist, muss das allerletzte Fragment das MF-Flag auf Null setzen.

Time to Live (Lebenszeit)
8 Bit gross. Ein Wert, der die Lebensdauer des Pakets angibt. Hat dieses Feld den Wert null, so wird das Paket verworfen. Jede Station (Router) auf dem Weg des Pakets verringert diesen Wert um eins. Dies soll verhindern, dass Pakete ewig weitergeleitet werden (beispielsweise wenn das Paket fälschlicherweise im Kreis geleitet wird und somit das Netz überlasten würde).

Der Standard von 1981 sieht vor, dass jede Station den TTL-Wert um die Anzahl der Sekunden verringert, die das Paket an der Station verweilt, mindestens jedoch um eins. Heute wird dies als Hop-Count implementiert.

Protokoll
8 Bit gross. Dieses Feld bezeichnet das Folgeprotokoll, zu dem die im betreffenden IPv4-Paket transportierten Nutzdaten gehören. Enthält das IP-Paket zum Beispiel ein TCP-Paket, steht hier der Wert 6, für ein UDP-Paket 17. Diese Werte werden seit RFC 3232 von der IANA in einer Online-Datenbank für Protokoll-Nummern definiert.

Im IPv6-Header gibt es dieses Feld ebenfalls, allerdings heisst es dort Next Header. Die zulässigen Werte sind die gleichen wie bei IPv4.

Header Checksum
16 Bit gross. Eine Prüfsumme sichert ausschliesslich den Kopfdatenbereich. IP selbst hat keine Mechanismen zur Prüfung der Nutzlast auf Korrektheit, dies wird im TCP/IP-Referenzmodell durch die Transportschicht sichergestellt. Dieser Wert wird bei jeder Station neu verifiziert und – weil sich die TTL pro Hop verändert – neu berechnet. Dabei werden alle 16-Bit-Halbwörter des Kopfdatenbereichs nach den Regeln des Einerkomplements addiert (Übertrag auf das LSB addieren) und von der Summe das Einerkomplement gebildet. Das Ergebnis sollte 1111 1111 1111 1111 (Hex: 0xFFFF) sein, denn sonst ist ein Fehler im Header. Vorteil dabei ist, dass sich die Prüfsumme pro Hop nur um eins erhöht. Die Berechnung kann daher schnell in der Hardware ausgeführt werden. Bei einem zuverlässigeren Prüfverfahren wie CRC müsste dagegen die Prüfsumme bei jedem Hop neu berechnet werden. Trotzdem kostet das Prüfen der Prüfsumme verhältnismässig viel Zeit. Moderne Router überprüfen die Prüfsumme aus Gründen der Verarbeitungsgeschwindigkeit nicht und inkrementieren sie nur. Diese Umstände haben dazu geführt, dass dieses Feld bei IPv6 nicht mehr existiert.

Adresse Quelle
32 Bit gross. Enthält die Quelladresse des IP-Pakets in network byte order (Byte Order, erstes Byte ist das most significant Byte).

Adresse Ziel
Enthält die Zieladresse im gleichen Format wie die Quelladresse.

Optionen und Padding
Zusatzinformationen für das konkrete Paket. Die Optionen sind nur im Header optional, sie müssen aber von allen IP-Modulen unterstützt werden. Das Format der Optionen ist im RFC 791 beschrieben. Die maximale Anzahl der mit Optionen belegbaren Byte im konkreten Paket ergibt sich aus (IHL×4)-20. Da mit den 4 Bits in IHL ein Wertebereich von 0 bis 15 kodiert wird, können somit bis zu 40 Byte durch Optionen belegt werden. Die einzelnen Optionen selbst können unterschiedliche Länge haben, es gibt sowohl Optionen fester Länge als auch Optionen mit variabler Länge. Da die Gesamtlänge des IP-Headers durch das Feld IHL nur in Vielfachen von 4 Byte festgelegt wird, werden unbenutzte Byte mit Nullen aufgefüllt (Padding).

Strict Routing
Option gibt den gesamten Pfad an, welchen das Paket durchlaufen muss.

Free Routing
Option gibt eine Liste von Routern an, die vom Paket nicht verfehlt werden dürfen.

Record Route
Lässt die gesamte Route aufzeichnen; heute reicht die Grösse des Option-Feldes meist nicht mehr dafür aus.

Time Stamp
Zeitstempel

Security
Bezeichnet, wie «geheim» das Paket ist.

1.2 Nutzdaten

Ein IP-Paket muss mindestens 20 Byte Header und 8 Byte Nutzdaten bzw. Nutz- und Fülldaten enthalten. Die Gesamtlänge eines IP-Pakets darf 65'535 Byte nicht überschreiten.

IP hat die Aufgabe, Datenpakete für das darunterliegende System des Netzzugangs (Bitübertragung) auf die richtige Grösse zu teilen. Im Prinzip geht es darum zu grosse Datenpakete zu kürzen.
Jedes Übertragungssystem auf der Bitübertragungsschicht hat dabei seine eigene maximale Paketgrösse, die man als Maximum Transmission Unit, kurz MTU, bezeichnet. Zum Beispiel Ethernet mit 1500 Byte und DSL mit 1492 Byte. Wenn ein Datenpaket, das ursprünglich in einem lokalen Netzwerk per Ethernet übertragen wurde und somit 1500 Byte gross ist, per DSL mit 1492 Byte ins Internet soll, dann muss der DSL-Router auf IP-Ebene das ursprünglich 1500 Byte grosse Paket teilen und mit neuen IP-Headern versehen. Diesen Vorgang nennt man Fragmentierung. Die Fragmentierung setzt sich fort, wenn sich unterwegs Übertragungs­systeme befinden, die noch kleinere MTUs haben.

Wir benutzen Cookies
Wir nutzen Cookies auf unserer Website. Einige von ihnen sind essenziell für den Betrieb der Seite, während andere uns helfen, diese Website und die Nutzererfahrung zu verbessern. Du kannst selbst enscheiden, ob du Cookies zulassen möchtest. Bitte beachte, dass bei Ablehnung womöglich nicht mehr alle Funktionalitäten zur Verfügung stehen.