Ipv4: Unterschied zwischen den Versionen
Zeile 1: | Zeile 1: | ||
+ | Ipv4 Header | ||
+ | |||
{|class="wikitable" style="text-align:center; | {|class="wikitable" style="text-align:center; | ||
− | !colspan="32"| | + | !colspan="32"|32 Bit |
|- | |- | ||
|colspan="4" style="width:12.5%;" |Version | |colspan="4" style="width:12.5%;" |Version | ||
Zeile 24: | Zeile 26: | ||
|colspan="32" style="background-color:yellow"|Data | |colspan="32" style="background-color:yellow"|Data | ||
|} | |} | ||
− | + | =Felder= | |
Die Felder des in der Abbildung dargestellten Protokollkopfes haben die | Die Felder des in der Abbildung dargestellten Protokollkopfes haben die | ||
folgende Bedeutung: | folgende Bedeutung: | ||
− | + | ==Version= | |
− | |||
− | |||
− | |||
Das Versions-Feld enthält die Versionsnummer des IP-Protokolls. Durch | Das Versions-Feld enthält die Versionsnummer des IP-Protokolls. Durch | ||
die Einbindung der Versionsnummer besteht die Möglichkeit über eine | die Einbindung der Versionsnummer besteht die Möglichkeit über eine | ||
Zeile 37: | Zeile 36: | ||
Version arbeiten. Die derzeitige Versionsnummer ist 4, aber die | Version arbeiten. Die derzeitige Versionsnummer ist 4, aber die | ||
Version 6 des IP Protokolls befindet sich bereits in der Erprobung | Version 6 des IP Protokolls befindet sich bereits in der Erprobung | ||
− | + | =Length= | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
Das Feld Length (Internet Header Length - IHL) enthält die Länge des | Das Feld Length (Internet Header Length - IHL) enthält die Länge des | ||
Protokollkopfs, da diese nicht konstant ist. Die Länge wird in 32-Bit- | Protokollkopfs, da diese nicht konstant ist. Die Länge wird in 32-Bit- | ||
Zeile 53: | Zeile 43: | ||
Die Länge des Headers kann sich durch Anfügen von Optionen aber | Die Länge des Headers kann sich durch Anfügen von Optionen aber | ||
bis auf 60 Byte erhöhen (der Maximalwert für das 4-Bit-Feld ist 15). | bis auf 60 Byte erhöhen (der Maximalwert für das 4-Bit-Feld ist 15). | ||
− | + | =Type of Service= | |
− | |||
− | |||
− | |||
Über das Feld Type of Service kann IP angewiesen werden | Über das Feld Type of Service kann IP angewiesen werden | ||
Nachrichten nach bestimmten Kriterien zu behandeln. Als Dienste | Nachrichten nach bestimmten Kriterien zu behandeln. Als Dienste | ||
Zeile 65: | Zeile 52: | ||
[[Bild:Service.png]] | [[Bild:Service.png]] | ||
− | + | =Precedence= | |
− | |||
(Bits 0-2) gibt die Priorität von 0 (normal) bis 7 (Steuerungspaket) an. | (Bits 0-2) gibt die Priorität von 0 (normal) bis 7 (Steuerungspaket) an. | ||
Die drei Flags (D,T,R) ermöglichen es dem Host anzugeben, worauf er | Die drei Flags (D,T,R) ermöglichen es dem Host anzugeben, worauf er | ||
Zeile 72: | Zeile 58: | ||
- D), Durchsatz (Throughput - T), Zuverlässigkeit (Reliability - R). Die | - D), Durchsatz (Throughput - T), Zuverlässigkeit (Reliability - R). Die | ||
beiden anderen Bit-Felder sind reserviert. | beiden anderen Bit-Felder sind reserviert. | ||
− | + | =Total Length= | |
− | |||
− | |||
Enthält die gesamte Paketlänge, d.h. Header und Daten. Da es sich | Enthält die gesamte Paketlänge, d.h. Header und Daten. Da es sich | ||
hierbei um ein 16-Bit-Feld handelt ist die Maximallänge eines | hierbei um ein 16-Bit-Feld handelt ist die Maximallänge eines | ||
Zeile 81: | Zeile 65: | ||
bis zu einer Länge von 576 Bytes zu verarbeiten. In der Regel können | bis zu einer Länge von 576 Bytes zu verarbeiten. In der Regel können | ||
von den Host aber Pakete größerer Länge verarbeitet werden. | von den Host aber Pakete größerer Länge verarbeitet werden. | ||
− | + | =Identification= | |
− | |||
− | |||
− | |||
Über das Identifikationsfeld kann der Zielhost feststellen, zu welchem | Über das Identifikationsfeld kann der Zielhost feststellen, zu welchem | ||
Datengramm ein neu angekommenes Fragment gehört. Alle | Datengramm ein neu angekommenes Fragment gehört. Alle | ||
Fragmente eines Datengramms enthalten die gleiche | Fragmente eines Datengramms enthalten die gleiche | ||
Identifikationsnummer, die vom Absender vergeben wird. | Identifikationsnummer, die vom Absender vergeben wird. | ||
− | + | =Flags= | |
− | |||
− | |||
− | |||
Das Flags-Feld ist drei Bit lang. Die Flags bestehen aus zwei Bits | Das Flags-Feld ist drei Bit lang. Die Flags bestehen aus zwei Bits | ||
namens DF - Don't Fragment und MF - More Fragments. Das erste Bit | namens DF - Don't Fragment und MF - More Fragments. Das erste Bit | ||
Zeile 105: | Zeile 83: | ||
IP-Paket weitere Teilpakete nachfolgen. Diese Bit ist bei allen | IP-Paket weitere Teilpakete nachfolgen. Diese Bit ist bei allen | ||
Fragmenten außer dem letzten gesetzt. | Fragmenten außer dem letzten gesetzt. | ||
− | + | =Fragment Offset= | |
− | |||
− | |||
− | |||
Der Fragmentabstand bezeichnet, an welcher Stelle relativ zum | Der Fragmentabstand bezeichnet, an welcher Stelle relativ zum | ||
Beginn des gesamten Datengramms ein Fragment gehört. Mit Hilfe | Beginn des gesamten Datengramms ein Fragment gehört. Mit Hilfe | ||
Zeile 116: | Zeile 91: | ||
Alle Fragmente, außer dem letzten, müssen ein Vielfaches von 8 Byte | Alle Fragmente, außer dem letzten, müssen ein Vielfaches von 8 Byte | ||
sein. Dies ist die elementare Fragmenteinheit. | sein. Dies ist die elementare Fragmenteinheit. | ||
− | |||
[[Datei:fragment.gif]] | [[Datei:fragment.gif]] | ||
− | + | =Time to Live= | |
− | |||
− | |||
Das Feld Time to Live ist ein Zähler, mit dem die Lebensdauer von IP- | Das Feld Time to Live ist ein Zähler, mit dem die Lebensdauer von IP- | ||
Paketen begrenzt wird. Im RFC 791 ist für dieses Feld als Einheit | Paketen begrenzt wird. Im RFC 791 ist für dieses Feld als Einheit | ||
Zeile 133: | Zeile 105: | ||
durch eine Warnmeldung in Form einer ICMP-Nachricht (siehe weiter | durch eine Warnmeldung in Form einer ICMP-Nachricht (siehe weiter | ||
unten) informiert. | unten) informiert. | ||
− | + | =Protocol= | |
− | |||
− | |||
− | |||
Enthält die Nummer des Transportprotokolls, an das das Paket | Enthält die Nummer des Transportprotokolls, an das das Paket | ||
weitergeleitet werden muß. Die Numerierung von Protokollen ist im | weitergeleitet werden muß. Die Numerierung von Protokollen ist im | ||
gesamten Internet einheitlich.. Bei UNIX-Systemen sind die | gesamten Internet einheitlich.. Bei UNIX-Systemen sind die | ||
Protokollnummern in der Datei /etc/protocols abgelegt. | Protokollnummern in der Datei /etc/protocols abgelegt. | ||
− | + | =Header Checksum= | |
− | |||
− | |||
− | |||
Dieses Feld enthält die Prüfsumme der Felder im IP-Header. Die | Dieses Feld enthält die Prüfsumme der Felder im IP-Header. Die | ||
Nutzdaten des IP-Datengramms werden aus Effiziengründen nicht mit | Nutzdaten des IP-Datengramms werden aus Effiziengründen nicht mit | ||
Zeile 156: | Zeile 122: | ||
dieses Algorithmus wird angenommen, daß die Prüfsumme zu Beginn | dieses Algorithmus wird angenommen, daß die Prüfsumme zu Beginn | ||
der Berechnung Null ist. | der Berechnung Null ist. | ||
− | + | =Source Address, Destination Address= | |
− | |||
− | |||
− | |||
In diese Felder werden die 32-Bit langen Internet-Adressen zur | In diese Felder werden die 32-Bit langen Internet-Adressen zur | ||
eingetragen. Die Internet-Adressen werden im nächsten Abschnitt | eingetragen. Die Internet-Adressen werden im nächsten Abschnitt | ||
näher betrachtet. | näher betrachtet. | ||
− | + | =Options und Padding= | |
− | |||
− | |||
− | |||
Das Feld Options wurde im Protokollkopf aufgenommen, um die | Das Feld Options wurde im Protokollkopf aufgenommen, um die | ||
Möglichkeit zu bieten das IP-Protokoll um weitere Informationen zu | Möglichkeit zu bieten das IP-Protokoll um weitere Informationen zu | ||
Zeile 176: | Zeile 136: | ||
über das Padding auf ein Vielfaches von 4 Byte aufgefüllt. Derzeit sind | über das Padding auf ein Vielfaches von 4 Byte aufgefüllt. Derzeit sind | ||
die folgenden Optionen bekannt: | die folgenden Optionen bekannt: | ||
− | + | =End of Options List= | |
− | |||
− | |||
− | |||
Kennzeichnet das Ende der Optionsliste. | Kennzeichnet das Ende der Optionsliste. | ||
− | + | =No Option= | |
− | |||
− | |||
− | |||
Kann zum Auffüllen von Bits zwischen Optionen verwendet werden. | Kann zum Auffüllen von Bits zwischen Optionen verwendet werden. | ||
− | + | =Security= | |
− | |||
− | |||
− | |||
Bezeichnet, wie geheim ein Datengramm ist. In der Praxis wird diese | Bezeichnet, wie geheim ein Datengramm ist. In der Praxis wird diese | ||
Option jedoch fast immer ignoriert. | Option jedoch fast immer ignoriert. | ||
− | + | =Loose Source-Routing, Strict Source-Routing= | |
− | |||
− | |||
− | |||
Diese Option enthält eine Liste von Internet-Adressen, die das | Diese Option enthält eine Liste von Internet-Adressen, die das | ||
Datagramm durchlaufen soll. Auf diese Weise kann dem Datenpaket | Datagramm durchlaufen soll. Auf diese Weise kann dem Datenpaket | ||
Zeile 206: | Zeile 154: | ||
werden dürfen. Auf dem Weg können aber auch andere Router | werden dürfen. Auf dem Weg können aber auch andere Router | ||
besucht werden. | besucht werden. | ||
− | + | =Record Route= | |
− | |||
− | |||
− | |||
Die Knoten, die dieses Datengramm durchläuft, werden angewiesen | Die Knoten, die dieses Datengramm durchläuft, werden angewiesen | ||
ihre IP-Adresse an das Optionsfeld anzuhängen. Damit läßt sich | ihre IP-Adresse an das Optionsfeld anzuhängen. Damit läßt sich | ||
Zeile 217: | Zeile 162: | ||
dieser Option, da weit mehr Router durchlaufen werden, als dies zu | dieser Option, da weit mehr Router durchlaufen werden, als dies zu | ||
Beginn des ARPANET der Fall war. | Beginn des ARPANET der Fall war. | ||
− | + | =Time Stamp= | |
− | |||
− | |||
− | |||
− | |||
Diese Option ist mit der Option Record Route vergleichbar. Zusätzlich | Diese Option ist mit der Option Record Route vergleichbar. Zusätzlich | ||
zur IP-Adresse wird bei dieser Option die Uhrzeit des Durchlaufs durch | zur IP-Adresse wird bei dieser Option die Uhrzeit des Durchlaufs durch | ||
den Knoten vermerkt. | den Knoten vermerkt. |
Version vom 3. Dezember 2019, 11:41 Uhr
Ipv4 Header
32 Bit | |||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Version | Length | Type of Service | Total Length | ||||||||||||||||||||||||||||
Identification | Flags | Fragment Offset | |||||||||||||||||||||||||||||
Time to Live | Protocol | Header Checksum | |||||||||||||||||||||||||||||
Source Address | |||||||||||||||||||||||||||||||
Destination Address | |||||||||||||||||||||||||||||||
Options | Paddings | ||||||||||||||||||||||||||||||
Data |
Felder
Die Felder des in der Abbildung dargestellten Protokollkopfes haben die folgende Bedeutung:
=Version
Das Versions-Feld enthält die Versionsnummer des IP-Protokolls. Durch die Einbindung der Versionsnummer besteht die Möglichkeit über eine längere Zeit mit verschiedenen Versionen des IP Protokolls zu arbeiten. Einige Hosts können mit der alten und andere mit der neuen Version arbeiten. Die derzeitige Versionsnummer ist 4, aber die Version 6 des IP Protokolls befindet sich bereits in der Erprobung
Length
Das Feld Length (Internet Header Length - IHL) enthält die Länge des Protokollkopfs, da diese nicht konstant ist. Die Länge wird in 32-Bit- Worten angegeben. Der kleinste zulässige Wert ist 5 - das entspricht also 20 Byte; in diesem Fall sind im Header keine Optionen gesetzt. Die Länge des Headers kann sich durch Anfügen von Optionen aber bis auf 60 Byte erhöhen (der Maximalwert für das 4-Bit-Feld ist 15).
Type of Service
Über das Feld Type of Service kann IP angewiesen werden Nachrichten nach bestimmten Kriterien zu behandeln. Als Dienste sind hier verschiedene Kombinationen aus Zuverlässigkeit und Geschwindigkeit möglich. In der Praxis wird dieses Feld aber ignoriert, hat also den Wert 0. Das Feld selbst hat den folgenden Aufbau:
Precedence
(Bits 0-2) gibt die Priorität von 0 (normal) bis 7 (Steuerungspaket) an. Die drei Flags (D,T,R) ermöglichen es dem Host anzugeben, worauf er bei der Datenübertragung am meisten Wert legt: Verzögerung (Delay - D), Durchsatz (Throughput - T), Zuverlässigkeit (Reliability - R). Die beiden anderen Bit-Felder sind reserviert.
Total Length
Enthält die gesamte Paketlänge, d.h. Header und Daten. Da es sich hierbei um ein 16-Bit-Feld handelt ist die Maximallänge eines Datengramms auf 65.535 Byte begrenzt. In der Spezifikation von IP (RFC 791) ist festgelegt, daß jeder Host in der Lage sein muß, Pakete bis zu einer Länge von 576 Bytes zu verarbeiten. In der Regel können von den Host aber Pakete größerer Länge verarbeitet werden.
Identification
Über das Identifikationsfeld kann der Zielhost feststellen, zu welchem Datengramm ein neu angekommenes Fragment gehört. Alle Fragmente eines Datengramms enthalten die gleiche Identifikationsnummer, die vom Absender vergeben wird.
Flags
Das Flags-Feld ist drei Bit lang. Die Flags bestehen aus zwei Bits namens DF - Don't Fragment und MF - More Fragments. Das erste Bit des Flags-Feldes ist ungenutzt bzw. reserviert. Die beiden Bits DF und MF steuern die Behandlung eines Pakets im Falle einer Fragmentierung. Mit dem DF-Bit wird signalisiert, daß das Datengramm nicht fragmentiert werden darf. Auch dann nicht, wenn das Paket dann evtl. nicht mehr weiter transportiert werden kann und verworfen werden muß. Alle Hosts müssen, wie schon gesagt Fragemente bzw. Datengramme mit einer Größe von 576 Bytes oder weniger verarbeiten können. Mit dem MF-Bit wird angezeigt, ob einem IP-Paket weitere Teilpakete nachfolgen. Diese Bit ist bei allen Fragmenten außer dem letzten gesetzt.
Fragment Offset
Der Fragmentabstand bezeichnet, an welcher Stelle relativ zum Beginn des gesamten Datengramms ein Fragment gehört. Mit Hilfe dieser Angabe kann der Zielhost das Originalpaket wieder aus den Fragmenten zusammensetzen. Da dieses Feld nur 13 Bit groß ist, können maximal 8192 Fragmente pro Datengramm erstellt werden. Alle Fragmente, außer dem letzten, müssen ein Vielfaches von 8 Byte sein. Dies ist die elementare Fragmenteinheit.
Time to Live
Das Feld Time to Live ist ein Zähler, mit dem die Lebensdauer von IP- Paketen begrenzt wird. Im RFC 791 ist für dieses Feld als Einheit Sekunden spezifiziert. Zulässig ist eine maximale Lebensdauer von 255 Sekunden (8 Bit). Der Zähler muß von jedem Netzknoten, der durchlaufen wird um mindestens 1 verringert werden. Bei einer längeren Zwischenspeicherung in einem Router muß der Inhalt sogar mehrmals verringert werden. Enthält das Feld den Wert 0, muß das Paket verworfen werden: damit wird verhindert, daß ein Paket endlos in einem Netz umherwandert. Der Absender wird in einem solchen Fall durch eine Warnmeldung in Form einer ICMP-Nachricht (siehe weiter unten) informiert.
Protocol
Enthält die Nummer des Transportprotokolls, an das das Paket weitergeleitet werden muß. Die Numerierung von Protokollen ist im gesamten Internet einheitlich.. Bei UNIX-Systemen sind die Protokollnummern in der Datei /etc/protocols abgelegt.
Header Checksum
Dieses Feld enthält die Prüfsumme der Felder im IP-Header. Die Nutzdaten des IP-Datengramms werden aus Effiziengründen nicht mit geprüft. Diese Prüfung findet beim Empfänger innerhalb des Transportprotokolls statt. Die Prüfsumme muß von jedem Netzknoten, der durchlaufen wird, neu berechnet werden, da der IP-Header durch das Feld Time-to-Live sich bei jeder Teilstrecke verändert. Aus diesem Grund ist auch eine sehr effiziente Bildung der Prüfsumme wichtig. Als Prüfsumme wird das 1er-Komplement der Summe aller 16-Bit- Halbwörter der zu überprüfenden Daten verwendet. Zum Zweck dieses Algorithmus wird angenommen, daß die Prüfsumme zu Beginn der Berechnung Null ist.
Source Address, Destination Address
In diese Felder werden die 32-Bit langen Internet-Adressen zur eingetragen. Die Internet-Adressen werden im nächsten Abschnitt näher betrachtet.
Options und Padding
Das Feld Options wurde im Protokollkopf aufgenommen, um die Möglichkeit zu bieten das IP-Protokoll um weitere Informationen zu ergänzen, die im ursprünglichen Design nicht berücksichtigt wurden. Das Optionsfeld hat eine variable Länge. Jede Option beginnt mit einem Code von einem Byte, über den die Option identifiziert wird. Manchen Optionen folgt ein weiteres Optionsfeld von 1 Byte und dann ein oder mehrere Datenbytes für die Option. Das Feld Options wird über das Padding auf ein Vielfaches von 4 Byte aufgefüllt. Derzeit sind die folgenden Optionen bekannt:
End of Options List
Kennzeichnet das Ende der Optionsliste.
No Option
Kann zum Auffüllen von Bits zwischen Optionen verwendet werden.
Security
Bezeichnet, wie geheim ein Datengramm ist. In der Praxis wird diese Option jedoch fast immer ignoriert.
Loose Source-Routing, Strict Source-Routing
Diese Option enthält eine Liste von Internet-Adressen, die das Datagramm durchlaufen soll. Auf diese Weise kann dem Datenpaket vorgeschrieben werden eine bestimmte Route durch das Internet zu nehmen. Beim Source-Routing wird zwischen Strict Source and Record Route und Loose Source and Record Route unterschieden. Im ersten Fall wird verlangt, daß das Paket diese Route genau einhalten muß. Desweiteren wird die genommene Route aufgezeichnet. Die zweite Variante schreibt vor, daß die angegebenen Router nicht umgangen werden dürfen. Auf dem Weg können aber auch andere Router besucht werden.
Record Route
Die Knoten, die dieses Datengramm durchläuft, werden angewiesen ihre IP-Adresse an das Optionsfeld anzuhängen. Damit läßt sich ermitteln, welche Route ein Datengramm genommen hat. Wie anfangs schon gesagt, ist die Größe für das Optionsfeld auf 40 Byte beschränkt. Deshalb kommt es heute auch oftmals zu Problemen mit dieser Option, da weit mehr Router durchlaufen werden, als dies zu Beginn des ARPANET der Fall war.
Time Stamp
Diese Option ist mit der Option Record Route vergleichbar. Zusätzlich zur IP-Adresse wird bei dieser Option die Uhrzeit des Durchlaufs durch den Knoten vermerkt.