Ipv4: Unterschied zwischen den Versionen

Aus xinux.net
Zur Navigation springen Zur Suche springen
 
(35 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
 +
=Ipv4 Header=
 +
 
{|class="wikitable" style="text-align:center;
 
{|class="wikitable" style="text-align:center;
!colspan="32"|IPv4 Header 32 Bit
+
!colspan="32"|32 Bit
 
|-
 
|-
 
|colspan="4" style="width:12.5%;" |Version
 
|colspan="4" style="width:12.5%;" |Version
Zeile 21: Zeile 23:
 
|colspan="26"|Options
 
|colspan="26"|Options
 
|colspan="6"|Paddings
 
|colspan="6"|Paddings
|-
 
|colspan="32" style="background-color:yellow"|Data
 
 
|}
 
|}
  
Die Felder des in der Abbildung dargestellten Protokollkopfes haben die
+
=Felder=
folgende Bedeutung:
+
*Die Felder des in der Abbildung dargestellten Protokollkopfes haben die folgende Bedeutung:
 
+
==Version==
 
+
*Das Versions-Feld enthält die Versionsnummer des IP-Protokolls.
====Version====
+
*Einige Hosts können mit der alten und andere mit der neuen Version arbeiten.
 +
*Die derzeitige Versionsnummer ist 4
 +
*Die Version 6 des IP Protokolls wird immer mehr eingesetzt
  
Das Versions-Feld enthält die Versionsnummer des IP-Protokolls. Durch
+
=Length=
die Einbindung der Versionsnummer besteht die Möglichkeit über eine
+
*Das Feld Length (Internet Header Length - IHL) enthält die Länge des Protokollkopfs, da diese nicht konstant ist.
längere Zeit mit verschiedenen Versionen des IP Protokolls zu
+
*Die Länge wird in 32-Bit- Worten angegeben.  
arbeiten. Einige Hosts können mit der alten und andere mit der neuen
+
*Der kleinste zulässige Wert ist 5 - das entspricht also 20 Byte
Version arbeiten. Die derzeitige Versionsnummer ist 4, aber die
+
*In diesem Fall sind im Header keine Optionen gesetzt.
Version 6 des IP Protokolls befindet sich bereits in der Erprobung
+
*Die Länge des Headers kann sich durch Anfügen von Optionen aberbis auf 60 Byte erhöhen
 +
*Der Maximalwert für das 4-Bit-Feld ist 15
  
Update: Mittlerweile (2019) ist die Erprobungsphase von IPv6 abgeschlossen
+
=Type of Service=
und das Protokoll befindet neben IPv4 im Einsatz. Wobei der Großteil
+
*Über das Feld Type of Service kann IP angewiesen werden Nachrichten nach bestimmten Kriterien zu behandeln.  
der im Internet eingesetzten Geräte parallel beide Protokolle (IPv4 und IPv6)
+
*Als Dienste sind hier verschiedene Kombinationen aus Zuverlässigkeit und Geschwindigkeit möglich.  
nutzen. Der Plan ist IPv4 auslaufen zu lassen, um in den kommenden Jahren
+
*In der Praxis wird dieses Feld aber ignoriert, hat also den Wert 0. Das Feld selbst hat den folgenden Aufbau:
nur noch IPv6 zum Einsatz zu bringen.
 
 
 
 
 
====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:
 
  
 
[[Bild:Service.png]]
 
[[Bild:Service.png]]
  
=====Precedence=====
+
=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 bei der Datenübertragung am meisten Wert legt:
Die drei Flags (D,T,R) ermöglichen es dem Host anzugeben, worauf er
+
*Verzögerung (Delay - D)
bei der Datenübertragung am meisten Wert legt: Verzögerung (Delay
+
*Durchsatz (Throughput - T)
- D), Durchsatz (Throughput - T), Zuverlässigkeit (Reliability - R). Die
+
*Zuverlässigkeit (Reliability - R).  
beiden anderen Bit-Felder sind reserviert.
+
*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.
 
 
 
 
 
[[Datei:fragment.gif]]
 
 
 
====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.
 
  
 +
=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.
  
====Security====
+
=Fragmentierung=
 +
*[[Fragmentierung]]
  
Bezeichnet, wie geheim ein Datengramm ist. In der Praxis wird diese
+
=Time to Live=
Option jedoch fast immer ignoriert.
+
*[[IP Time to Live]]
  
 +
=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.
 +
*Beispiele:
 +
**ICMP 1
 +
**TCP 6
 +
**UDP 17
 +
**ESP 50
  
====Loose Source-Routing, Strict Source-Routing====
+
=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.
  
Diese Option enthält eine Liste von Internet-Adressen, die das
+
=Source Address, Destination Address=
Datagramm durchlaufen soll. Auf diese Weise kann dem Datenpaket
+
*In diese Felder werden die 32-Bit langen Internet-Adressen zur eingetragen.
vorgeschrieben werden eine bestimmte Route durch das Internet zu
+
*Die Internet-Adressen werden im nächsten Abschnitt näher betrachtet.
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.
 
  
 +
=Options und Padding=
 +
*Das Feld Options wurde im Protokollkopf aufgenommen,um weitere Informationen zu ergänzen.
 +
*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.
  
====Record Route====
+
===End of Options List===
 +
* Kennzeichnet das Ende der Optionsliste.
  
Die Knoten, die dieses Datengramm durchläuft, werden angewiesen
+
===No Option===
ihre IP-Adresse an das Optionsfeld anzuhängen. Damit läßt sich
+
*Kann zum Auffüllen von Bits zwischen Optionen verwendet werden.
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.
 
  
 +
===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 dasDatagramm 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.
  
====Time Stamp====
+
===Record Route===
 +
*Die Knoten, die dieses Datengramm durchläuft, werden angewiesen ihre IP-Adresse an das Optionsfeld anzuhängen.
  
Diese Option ist mit der Option Record Route vergleichbar. Zusätzlich
+
===Time Stamp===
zur IP-Adresse wird bei dieser Option die Uhrzeit des Durchlaufs durch
+
*Diese Option ist mit der Option Record Route vergleichbar.  
den Knoten vermerkt.
+
*Zusätzlich zur IP-Adresse wird bei dieser Option die Uhrzeit des Durchlaufs durch den Knoten vermerkt.

Aktuelle Version vom 26. Oktober 2023, 05:34 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

Felder

  • Die Felder des in der Abbildung dargestellten Protokollkopfes haben die folgende Bedeutung:

Version

  • Das Versions-Feld enthält die Versionsnummer des IP-Protokolls.
  • Einige Hosts können mit der alten und andere mit der neuen Version arbeiten.
  • Die derzeitige Versionsnummer ist 4
  • Die Version 6 des IP Protokolls wird immer mehr eingesetzt

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 aberbis 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:

Service.png

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.

Fragmentierung

Time to Live

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.
  • Beispiele:
    • ICMP 1
    • TCP 6
    • UDP 17
    • ESP 50

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 weitere Informationen zu ergänzen.
  • 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.

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 dasDatagramm 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.

Record Route

  • Die Knoten, die dieses Datengramm durchläuft, werden angewiesen ihre IP-Adresse an das Optionsfeld anzuhängen.

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.