Das Internet Protocol (IP) ist das grundlegende Protokoll für die Übertragung von Datenpaketen im Internet.
Es ist im Layer 3 des OSI Modells aufgehangen, den Network Layer. Der IP-Header ist ein entscheidender Bestandteil jedes IP-Pakets und enthält alle wichtigen Informationen, die für die Zustellung des Pakets von einem Gerät zu einem anderen erforderlich sind. Der Header ist sozusagen die „Adresse und Beschreibung“ des Pakets und gibt den Routern und anderen Netzwerkgeräten die nötigen Anweisungen zur Handhabung.
Der „Version„-Teil des IP-Headers ist ein kleines Feld, das angibt, welche Version des IP-Protokolls verwendet wird. Es ist wie eine Kennzeichnung, die dem Netzwerk hilft, die Nachricht richtig zu verstehen und zu verarbeiten.
Es gibt zwei Hauptversionen des IP-Protokolls:
- IPv4 (Version 4) – das ältere, weit verbreitete Protokoll. Die Version wird als „4“ im Header angegeben.
- IPv6 (Version 6) – das neuere Protokoll, das mehr Adressen bereitstellt und für die Zukunft besser geeignet ist. Hier wird „6“ als Versionsnummer angegeben.
Das Netzwerk liest dieses Feld im Header, um zu wissen, ob es die Nachricht wie eine IPv4- oder IPv6-Nachricht behandeln soll.
Der Begriff IHL beschreibt die Länge des IP-Headers in einem IPv4-Paket. Einfach gesagt, gibt das IHL-Feld an, wie viele 4-Byte-Blöcke (32 Bits) der Header des Pakets umfasst.
Da der IP-Header zusätzliche optionale Informationen enthalten kann, ist seine Länge nicht immer gleich. Das IHL-Feld ermöglicht es Routern und anderen Netzwerkgeräten, zu wissen, wo der Header endet und wo die eigentlichen Daten (der Inhalt) des Pakets beginnen.
- Der Wert im IHL-Feld gibt die Länge des Headers in 4-Byte-Einheiten an.
- Ein Mindestwert von 5 bedeutet, dass der Header mindestens 20 Bytes lang ist (5 x 4 Bytes).
- Der Wert kann maximal 15 sein, was einer Header-Länge von 60 Bytes entspricht (15 x 4 Bytes).
Zusammengefasst: Das IHL-Feld hilft Netzwerkgeräten, die Länge des IP-Headers zu verstehen, damit sie das Paket korrekt lesen und verarbeiten können.
Das ToS-Feld (Type of Service) im IP-Header gibt an, wie ein Netzwerkpaket priorisiert und behandelt werden soll. Dieses Feld wird verwendet, um bestimmten Datenverkehrstypen Vorzug zu geben und die Qualität der Datenübertragung zu beeinflussen – zum Beispiel, wenn Videoanrufe schneller oder stabiler übertragen werden sollen als normale Daten wie E-Mails.
Einfach erklärt: Das ToS-Feld ist wie ein „Behandlungshinweis“ für das Netzwerk. Es sagt den Routern und anderen Geräten, ob das Paket besonders schnell, zuverlässig oder mit wenig Verzögerung transportiert werden soll. Damit können bestimmte Datenpakete (z. B. für Video, Sprache oder Spiele) bevorzugt oder speziell behandelt werden, um eine bessere Leistung zu gewährleisten.
Unterteilung des ToS-Felds:
Ursprünglich bestand das ToS-Feld aus verschiedenen Bits, die für bestimmte Merkmale standen, wie z. B.:
-
- Minimale Verzögerung (für Echtzeit-Anwendungen wie VoIP).
- Maximale Zuverlässigkeit (für Daten, die besonders fehlerfrei ankommen müssen).
- Maximale Übertragungsrate (für große Datenmengen).
Heute wird es in der Praxis meistens durch das sogenannte Differentiated Services Code Point (DSCP) ersetzt. Dies ermöglicht eine feinere Steuerung und wird in modernen Netzwerken zur Priorisierung verwendet.
Zusammengefasst: Das ToS-Feld (bzw. DSCP) hilft dabei, verschiedene Datenpakete unterschiedlich zu behandeln, je nach den Anforderungen an Geschwindigkeit, Zuverlässigkeit oder Verzögerung.
Die Paketlänge des Internet Protocol Headers bezieht sich auf die Größe des IP-Headers selbst, ohne die eigentlichen Daten (Payload). Diese Länge kann variieren, da der Header optionale Felder enthalten kann.
Typischerweise hat der IP-Header eine Standardlänge von 20 Bytes, wenn keine zusätzlichen Optionen vorhanden sind. Mit Optionen kann die Länge auf bis zu 60 Bytes anwachsen.
Zusammensetzung der Header-Länge:
- Standardheader (ohne Optionen): 20 Bytes
- Maximale Headergröße (mit Optionen): 60 Bytes
Die genaue Länge des Headers wird im IHL (Internet Header Length)-Feld des Headers angegeben. Dieses Feld beschreibt die Header-Länge in 4-Byte-Einheiten (32 Bit). Der Mindestwert ist also 5 (5 × 4 Bytes = 20 Bytes) und der Höchstwert 15 (15 × 4 Bytes = 60 Bytes).
Zusammengefasst: Die Paketlänge Enthält die Gesamtlänge des IP-Paketes. Abzüglich des IHL ergibt sich die Länge der reinen Nutzdaten.
Die Kennung (Identification) im IP-Header ist ein Feld, das eine eindeutige ID für jedes IP-Paket enthält. Es wird verwendet, um Pakete zu identifizieren, insbesondere wenn das ursprüngliche Paket in mehrere Fragmente aufgeteilt wurde. Dieses Feld hilft dem Empfänger, alle Fragmente, die zu demselben Paket gehören, richtig zusammenzusetzen.
Zweck der Kennung:
- Fragmentierung und Wiederzusammenführung: Wenn ein IP-Paket zu groß ist, um in einem Netzwerksegment übertragen zu werden, wird es in kleinere Teile (Fragmente) zerlegt. Die Kennung sorgt dafür, dass alle Fragmente eines Pakets erkannt und in der richtigen Reihenfolge zusammengesetzt werden können.
- Eindeutige Identifikation: Die Kennung stellt sicher, dass jedes Paket, das vom Absender gesendet wird, eine eindeutige Nummer erhält, die das Gerät des Empfängers nutzen kann, um Fragmente korrekt zu identifizieren.
Funktionsweise:
- Jedes IP-Paket erhält eine 16-Bit-Kennung, was bedeutet, dass es Werte zwischen 0 und 65.535 haben kann.
- Wenn ein Paket fragmentiert wird, tragen alle Fragmente desselben Pakets die gleiche Kennung, damit sie beim Empfänger wieder richtig zusammengesetzt werden können.
- Netzwerkgeräte und der Empfänger verwenden zusätzlich zur Kennung auch Informationen aus anderen Header-Feldern, wie der Fragment Offset und die More Fragments-Flags, um alle Fragmente korrekt anzuordnen.
Die Flags im IP-Header sind spezielle Bits, die Steuerinformationen zur Fragmentierung eines Pakets enthalten. Sie geben an, ob das Paket fragmentiert wurde und ob weitere Fragmente folgen. Es gibt drei Flags im IP-Header, von denen nur zwei aktiv genutzt werden, da das erste Bit reserviert ist.
Die drei Flags:
- Bit 0: Reserviert (nicht verwendet)
Dieses Bit ist immer auf `0` gesetzt und hat keinen aktuellen Zweck. Es ist für zukünftige Anwendungen reserviert. - Bit 1: Don’t Fragment (DF)
Dieses Bit gibt an, ob das Paket fragmentiert werden darf oder nicht:- DF = 1 (Don’t Fragment): Das Paket darf nicht fragmentiert werden. Wenn das Paket größer als die maximale Paketgröße (MTU) des Netzwerks ist, wird es verworfen, und eine Fehlermeldung wird an den Absender zurückgeschickt.
- DF = 0: Das Paket darf fragmentiert werden, wenn es für den Transport zu groß ist.
- Bit 2: More Fragments (MF)
Dieses Bit zeigt an, ob es sich um das letzte Fragment eines Pakets handelt oder ob weitere folgen:- MF = 1 (More Fragments): Es gibt weitere Fragmente nach diesem.
- MF = 0: Dies ist das letzte Fragment. Wenn das Paket nicht fragmentiert wurde, ist das MF-Bit ebenfalls `0`.
Beispiel:
Ein großes Paket wird in drei Fragmente zerlegt. Die ersten beiden Fragmente haben das MF-Bit auf `1`, um anzuzeigen, dass weitere Fragmente folgen. Das letzte Fragment hat das MF-Bit auf `0`, was anzeigt, dass es das letzte ist.
Das Fragment Offset-Feld im IP-Header gibt die Position eines bestimmten Fragments innerhalb des ursprünglichen, nicht fragmentierten IP-Pakets an. Wenn ein Paket fragmentiert wird, erhalten alle Fragmente eine Offset-Angabe, die angibt, wo jedes Fragment in der Gesamtstruktur des ursprünglichen Pakets hingehört. So kann der Empfänger die Fragmente in der richtigen Reihenfolge zusammensetzen.
Details zum Fragment Offset:
- Größe des Felds: Das Fragment Offset-Feld ist 13 Bit lang.
- Einheiten: Der Offset wird in 8-Byte-Blöcken (64 Bits) angegeben. Das bedeutet, dass jeder Offset-Wert mit 8 multipliziert werden muss, um die tatsächliche Byte-Position im ursprünglichen Paket zu erhalten.
- Wertebereich: Da das Offset in 8-Byte-Schritten gemessen wird, kann der maximale Offset-Wert 8191 (13 Bits) betragen, was eine maximale Fragmentgröße von etwa 65.528 Bytes ermöglicht.
Funktionsweise:
- Wenn ein IP-Paket fragmentiert wird, erhält das erste Fragment einen Fragment Offset von 0, da es am Anfang des ursprünglichen Pakets steht.
- Das zweite Fragment erhält einen Offset, der der Größe des ersten Fragments entspricht, und so weiter.
- Der Empfänger nutzt die Fragment Offsets, um die Fragmente in der richtigen Reihenfolge zu arrangieren und das ursprüngliche Paket wiederherzustellen.
Beispiel:
- Ein großes Paket wird in Fragmente zu jeweils 100 Bytes geteilt (außer dem letzten Fragment, das ggf. kleiner sein kann).
- Das erste Fragment hat einen Offset von `0`.
- Das zweite Fragment hat einen Offset von `12` (da 100 Bytes / 8 Bytes = 12).
- Das dritte Fragment hat einen Offset von `24`, und so weiter.
Das TTL-Feld (Time to Live) im IP-Header gibt an, wie lange ein IP-Paket im Netzwerk „leben“ darf, bevor es verworfen wird. Es dient dazu, zu verhindern, dass Pakete endlos im Netzwerk zirkulieren, falls sie einen Endpunkt nicht erreichen können.
Funktionsweise von TTL:
- Startwert: Beim Versenden eines IP-Pakets setzt der Absender einen Anfangswert für das TTL-Feld, der typischerweise zwischen 64 und 128 liegt.
- Countdown bei jedem Router: Jedes Mal, wenn das Paket einen Router passiert, wird der TTL-Wert um 1 verringert.
- Verwerfen bei 0: Wenn das TTL-Feld den Wert `0` erreicht, wird das Paket von dem Router verworfen und nicht weitergeleitet. Der Router sendet dem Absender eine Fehlermeldung (ICMP-Nachricht „Time Exceeded“), um anzuzeigen, dass das Paket nicht zugestellt werden konnte.
Zweck von TTL:
- Schutz vor Endlosschleifen: Falls das Paket in eine Routing-Schleife gerät, in der es immer wieder über die gleichen Router läuft, sorgt das TTL-Feld dafür, dass es nach einer bestimmten Zeit verworfen wird. Dadurch werden unnötige Belastungen im Netzwerk vermieden.
- Netzwerkdiagnose: Das TTL-Feld kann auch für Diagnosezwecke genutzt werden, zum Beispiel beim Traceroute-Tool. Traceroute sendet Pakete mit schrittweise erhöhter TTL, um die IP-Adressen aller Router auf dem Weg zum Ziel aufzuspüren.
Das Protokoll-Feld im IP-Header gibt an, welches höhere Protokoll die Daten im Paket verarbeiten soll, sobald sie das Ziel erreichen. Es sagt dem Empfänger also, wie die Nutzdaten des IP-Pakets zu interpretieren sind, und ist besonders wichtig, um sicherzustellen, dass die Daten an die richtige Anwendung oder den richtigen Dienst weitergeleitet werden.
Funktionsweise des Protokoll-Felds:
- Das Protokoll-Feld ist 8 Bit*lang und kann daher Werte von 0 bis 255 annehmen.
- Jeder Wert im Protokoll-Feld steht für ein bestimmtes Protokoll, das in den Nutzdaten verwendet wird. Beispiele dafür sind:
- 6 für TCP (Transmission Control Protocol)
- 17 für UDP (User Datagram Protocol)
- 1 für ICMP (Internet Control Message Protocol)
- 50 für ESP (Encapsulating Security Payload), verwendet bei VPNs und IPSec
- 89 für OSPF (Open Shortest Path First), ein Routing-Protokoll
Beispiel:
Wenn ein IP-Paket das Protokoll-Feld mit dem Wert 6 hat, weiß das Zielgerät, dass es sich bei den Nutzdaten um ein TCP-Paket handelt und diese an das TCP-Protokoll weitergeleitet werden sollen. Wenn der Wert 17 ist, werden die Daten an das UDP-Protokoll übergeben.
Zweck:
- Das Protokoll-Feld ermöglicht die korrekte Interpretation und Weiterleitung der Nutzdaten im IP-Paket, sodass die Daten von der passenden Anwendung oder dem Dienst verarbeitet werden können.
- Es erlaubt eine effiziente und flexible Kommunikation, da ein einziges Netzwerkprotokoll (IP) mit verschiedenen höheren Protokollen zusammenarbeiten kann.
Die Header Checksume im IP-Header ist ein Sicherheitsmechanismus, der dazu dient, sicherzustellen, dass der Header des IP-Pakets während der Übertragung nicht beschädigt wurde. Es handelt sich um eine Art „Prüfziffer“, die vom Absender berechnet und im Header gespeichert wird.
Funktionsweise der Header Checksum:
- Berechnung: Bevor das IP-Paket gesendet wird, berechnet der Absender eine Checksumme für alle Teile des IP-Headers. Dabei werden die Header-Daten in 16-Bit-Worte (2 Bytes) unterteilt, und die Summe dieser Werte wird gebildet.
- Umkehrung: Das Ergebnis wird dann so umgekehrt (die Bits werden invertiert), um die Checksumme zu erstellen, die im Header gespeichert wird.
- Übertragung: Das IP-Paket wird mit der Header Checksumme gesendet.
- Überprüfung beim Empfänger: Wenn das Paket am Ziel ankommt, berechnet der Empfänger ebenfalls die Checksumme des Headers. Er addiert alle 16-Bit-Worte und vergleicht die berechnete Checksumme mit der im Header gespeicherten Checksumme.
- Wenn die beiden übereinstimmen, ist der Header wahrscheinlich unbeschädigt.
- Wenn sie nicht übereinstimmen, wurde der Header möglicherweise verändert oder beschädigt, und das Paket wird verworfen.
Zweck der Header Checksum:
- Fehlererkennung: Die Checksumme hilft dabei, Fehler zu erkennen, die während der Übertragung auftreten können, z. B. durch Störungen im Netzwerk.
- Sicherstellung der Integrität: Sie sorgt dafür, dass der Header des Pakets korrekt bleibt und die enthaltenen Informationen richtig interpretiert werden können.
Die Quelladresse im IP-Header ist die IP-Adresse des Absenders eines IP-Pakets. Sie zeigt an, von welchem Gerät oder Host das Paket stammt.
Funktionen der Quelladresse:
- Identifikation des Absenders: Die Quelladresse ermöglicht es dem Empfänger, zu wissen, von welchem Gerät das Paket gesendet wurde. Dies ist wichtig, um Antworten zu senden oder um zu wissen, woher die Daten stammen.
- Routenfindung: Router verwenden die Quelladresse, um Pakete im Netzwerk weiterzuleiten und um sicherzustellen, dass die Daten an den richtigen Ort zurückgeschickt werden, falls eine Antwort erforderlich ist.
- Netzwerkkommunikation: Wenn Geräte im Netzwerk miteinander kommunizieren, wird die Quelladresse benötigt, damit das Zielgerät die Informationen über den Absender erhalten kann. Dies ist besonders wichtig für Protokolle wie TCP und UDP, die auf der Quell- und Zieladresse basieren.
Format:
- Die Quelladresse ist eine 32-Bit-IP-Adresse im IPv4-Format, die in vier Gruppen von Ziffern dargestellt wird (z. B. 192.168.1.1).
- Im IPv6-Format ist die Quelladresse eine 128-Bit-Adresse, die in acht Gruppen von vier hexadezimalen Ziffern dargestellt wird (z. B. 2001:0db8:85a3:0000:0000:8a2e:0370:7334).
Die Zieladresse im IP-Header ist die IP-Adresse des Empfängers eines IP-Pakets. Sie gibt an, wohin das Paket gesendet wird und ist entscheidend für die Zustellung der Daten im Netzwerk.
Funktionen der Zieladresse:
- Identifikation des Empfängers: Die Zieladresse ermöglicht es den Routern und dem empfangenden Gerät, zu wissen, an welches Gerät die Daten gesendet werden sollen. Ohne die Zieladresse wüssten die Router nicht, wohin sie das Paket weiterleiten sollen.
- Routenfindung: Router verwenden die Zieladresse, um den besten Pfad im Netzwerk zu bestimmen, den das Paket nehmen sollte. Sie vergleichen die Zieladresse mit ihren Routing-Tabellen, um das Paket an den richtigen nächsten Hop weiterzuleiten.
- Kommunikation zwischen Geräten: Die Zieladresse ist wichtig für die Netzwerkkommunikation. Sie ermöglicht es dem Absender, Daten an das richtige Gerät zu senden und stellt sicher, dass die Informationen am gewünschten Ort ankommen.
Format:
- Die Zieladresse ist eine 32-Bit-IP-Adresse im IPv4-Format, dargestellt in vier Gruppen von Dezimalzahlen (z. B. 192.168.1.2).
- Im IPv6-Format ist die Zieladresse eine 128-Bit-Adresse, dargestellt in acht Gruppen von vier hexadezimalen Ziffern (z. B. 2001:0db8:85a3:0000:0000:8a2e:0370:7334).
Zusammengefasst: Die Zieladresse im IP-Header gibt an, wohin ein IP-Paket gesendet wird. Sie ist entscheidend für die Zustellung der Daten im Netzwerk und ermöglicht es Routern und dem Empfänger, die richtigen Geräte zu identifizieren und miteinander zu kommunizieren.
Im IP-Header gibt es ein Feld für Optionen (Options), das zusätzliche Informationen enthalten kann, um spezifische Funktionen oder Verhaltensweisen des Pakets zu steuern. Diese Optionen sind jedoch nicht immer erforderlich, und viele IP-Pakete verwenden nur den Standardheader ohne Optionen.
Optionen im IP-Header:
- Zweck: Optionen ermöglichen es, zusätzliche Funktionen wie spezielle Routing-Anforderungen, Zeitstempel, oder sicherheitsrelevante Informationen zu spezifizieren. Zum Beispiel könnte eine Option festlegen, dass das Paket auf bestimmte Weise behandelt oder dass es einen bestimmten Pfad durch das Netzwerk nehmen soll.
- Variabilität: Das Optionsfeld kann eine variable Länge haben. Es besteht aus einer Reihe von Optionen, wobei jede Option aus einem Typfeld (1 Byte), einem Längenfeld (1 Byte) und optionalen Daten besteht. Das Längenfeld gibt die Gesamtgröße der Option an.
- Verwendung: Optionen werden eher selten verwendet, da die meisten Anwendungen mit dem Standardheader auskommen. Sie werden hauptsächlich für spezielle Anforderungen in Netzwerken oder zur Implementierung von Experimenten und neuen Protokollen verwendet.
Füllbits:
- Füllbits (Padding) werden verwendet, um sicherzustellen, dass der IP-Header eine bestimmte Länge hat, die in 32-Bit-Worten gemessen wird. Wenn die Optionen eine ungerade Länge ergeben, werden Füllbits hinzugefügt, um die Gesamtlänge auf ein Vielfaches von 32 Bit zu bringen. Dadurch kann der Header korrekt ausgerichtet werden und die Daten nach dem Header sind leichter zu verarbeiten.
Das Datenfeld im IP-Header enthält die Nutzdaten, die im IP-Paket übertragen werden. Diese Daten sind das, was tatsächlich zwischen den Kommunikationspartnern ausgetauscht wird, wie zum Beispiel die Daten eines TCP- oder UDP-Pakets.
Funktionen des Datenfeldes:
- Transport von Anwendungsdaten: Das Datenfeld enthält die Informationen, die von der Anwendung des Absenders an die Anwendung des Empfängers gesendet werden. Dies können beispielsweise Dateien, Nachrichten oder Webseiteninhalte sein.
- Protokollunabhängig: Die Daten im IP-Paket können von verschiedenen höheren Protokollen stammen, wie TCP (Transmission Control Protocol), UDP (User Datagram Protocol) oder ICMP (Internet Control Message Protocol). Das IP-Protokoll kümmert sich nur um den Transport dieser Daten, während die Verarbeitung der Daten dem höheren Protokoll überlassen wird.
- Größe: Die Größe des Datenfeldes kann variieren, abhängig von der maximalen Übertragungseinheit (MTU) des Netzwerks und der Größe des IP-Headers. Der gesamte IP-Header (Header + Optionen) hat eine maximale Größe von 60 Bytes, was bedeutet, dass der verbleibende Platz im Paket für die Nutzdaten verwendet wird. In einem typischen IPv4-Paket kann die maximale Größe der Nutzdaten bis zu 65.535 Bytes betragen, da das gesamte IP-Paket (Header + Daten) diese Größe nicht überschreiten darf.