IPv4 kompakt: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: „=Ipv4 Header= {|class="wikitable" style="text-align:center; !colspan="32"|32 Bit |- |colspan="4" style="width:12.5%;" |Version |colspan="4" style="width:12.5%…“)
 
 
(2 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 26: Zeile 26:
 
|colspan="32" style="background-color:yellow"|Data
 
|colspan="32" style="background-color:yellow"|Data
 
|}
 
|}
−
=Felder=
+
*[[Fragmentierung]]
−
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:
 
−
 
 
−
[[Bild: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.
 
−
=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=
 
 
*[[IP Time to Live]]
 
*[[IP Time to Live]]
  
−
=Protocol=
+
*[[IP Addresse]]
−
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.
 

Aktuelle Version vom 26. Juni 2021, 13:55 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