IPv4/Header: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
K Textersetzung - „Man-Pages“ durch „Man-Page“ |
||
(131 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
[[ | '''topic''' - Beschreibung | ||
== Beschreibung == | |||
=== Paketlänge === | |||
Ein [[IP-Paket]] besteht aus einem [[IP-Header|Header]] und den eigentlichen Daten | |||
* Der Datenteil enthält in der Regel ein weiteres Protokoll, meist [[Transmission Control Protocol|TCP]], [[User Datagram Protocol|UDP]] oder [[Internet Control Message Protocol|ICMP]] | |||
* Die maximale Länge eines IP-Pakets beträgt 65535 Bytes (2<sup>16</sup>−1), die maximale Datenlänge 65515 Bytes (Paketlänge – minimale Headerlänge von 20 Byte) | |||
* Normalerweise beschränkt der Sender die Paketlänge auf diejenige des zugrundeliegenden Mediums | |||
* Bei [[Ethernet]] beträgt die sogenannte [[Maximum Transmission Unit|MTU]] (''Maximum Transmission Unit'') 1500 Bytes, da ein Ethernet-Datenpaket maximal 1518 Bytes lang sein darf und 18 Bytes vom Ethernet selbst belegt werden | |||
* Für IP (Header und Daten) stehen also nur 1500 Bytes zur Verfügung | |||
* Deshalb ist die Länge von IP-Paketen oft auf 1500 Bytes festgesetzt | |||
=== IP-Header | == Header-Format == | ||
[[File: | ; Der IPv4-Header ist meist 20 Bytes lang | ||
* Bei Übertragung auf Basis von Ethernet folgt er dem [[Ethernet]]-Typfeld, das für IPv4-Pakete auf 0800<sub>16</sub> festgelegt ist | |||
* Auf anderen Übertragungsmedien und Protokollen kann der Header auch der erste Eintrag sein | |||
* Im Typfeld des Ethernet-Frames wird für IPv4 ''0800<sub>16</sub>'' eingetragen | |||
; IPv4 bietet verschiedene, größtenteils ungenutzte Optionen, die den Header bis auf 60 Bytes (in 4-Byte-Schritten) verlängern können | |||
* Ohne Optionen ist der IPv4-Header 20 Bytes lang | |||
* Wortlänge 32 Bit (4 Byte) | |||
* Daten im Feld ''Optionen'' können den Header auf maximal 60 Byte (in 32-Bit-Worten) verlängern (selten) | |||
{| class="wikitable" \n! style="text-align:center !important; font-weight: normal;" "width="3%"| 00 | |||
! style="text-align:center !important; font-weight: normal;" "width="3%"| 01 | |||
! style="text-align:center !important; font-weight: normal;" "width="3%"| 02 | |||
! style="text-align:center !important; font-weight: normal;" "width="3%"| 03 | |||
! style="text-align:center !important; font-weight: normal;" "width="3%"| 04 | |||
! style="text-align:center !important; font-weight: normal;" "width="3%"| 05 | |||
! style="text-align:center !important; font-weight: normal;" "width="3%"| 06 | |||
! style="text-align:center !important; font-weight: normal;" "width="3%"| 07 | |||
! style="text-align:center !important; font-weight: normal;" "width="3%"| 08 | |||
! style="text-align:center !important; font-weight: normal;" "width="3%"| 09 | |||
! style="text-align:center !important; font-weight: normal;" "width="3%"| 10 | |||
! style="text-align:center !important; font-weight: normal;" "width="3%"| 11 | |||
! style="text-align:center !important; font-weight: normal;" "width="3%"| 12 | |||
! style="text-align:center !important; font-weight: normal;" "width="3%"| 13 | |||
! style="text-align:center !important; font-weight: normal;" "width="3%"| 14 | |||
! style="text-align:center !important; font-weight: normal;" "width="3%"| 15 | |||
! style="text-align:center !important; font-weight: normal;" "width="3%"| 16 | |||
! style="text-align:center !important; font-weight: normal;" "width="3%"| 17 | |||
! style="text-align:center !important; font-weight: normal;" "width="3%"| 18 | |||
! style="text-align:center !important; font-weight: normal;" "width="3%"| 19 | |||
! style="text-align:center !important; font-weight: normal;" "width="3%"| 20 | |||
! style="text-align:center !important; font-weight: normal;" "width="3%"| 21 | |||
! style="text-align:center !important; font-weight: normal;" "width="3%"| 22 | |||
! style="text-align:center !important; font-weight: normal;" "width="3%"| 23 | |||
! style="text-align:center !important; font-weight: normal;" "width="3%"| 24 | |||
! style="text-align:center !important; font-weight: normal;" "width="3%"| 25 | |||
! style="text-align:center !important; font-weight: normal;" "width="3%"| 26 | |||
! style="text-align:center !important; font-weight: normal;" "width="3%"| 27 | |||
! style="text-align:center !important; font-weight: normal;" "width="3%"| 28 | |||
! style="text-align:center !important; font-weight: normal;" "width="3%"| 29 | |||
! style="text-align:center !important; font-weight: normal;" "width="3%"| 30 | |||
! style="text-align:center !important; font-weight: normal;" "width="3%"| 31 | |||
! style="text-align:center !important; font-weight: normal;" "width="3%"| | |||
|- | |||
| style="background-color:#d6c4ff;" colspan="4"| [[IPv4/Header#Version|Version]] | |||
| style="background-color:#dfffcb;" colspan="4"| [[IPv4/Header#Internet Header Length | IHL]] | |||
| style="background-color:#ffbfc0;" colspan="6"| [[IPv4/Header#Differentiated Services Code Point | DSCP]] | |||
| style="background-color:#ffbfc0;" colspan="2"| [[IPv4/Header#ECN | ECN]] | |||
| style="background-color:#b5bcff;" colspan="16"| [[IPv4/Header#Gesamtlänge|Gesamtlänge]] | |||
! style="text-align:center !important; font-weight: normal;" "width="3%" rowspan="6"| H</br>e</br>a</br>d</br>e</br>r | |||
|- | |||
| style="background-color:#fff1b0;" colspan="16"| [[IPv4/Header#Identifikation|Identifikation]] | |||
| style="background-color:#d6c4ff;" colspan="3"| [[IPv4/Header#Flags|Flags]] | |||
| style="background-color:#fff1b0;" colspan="13"| [[IPv4/Header#Fragment Offset|Fragment Offset]] | |||
|- | |||
| style="background-color:#adfff6;" colspan="8"| [[IPv4/Header#TTL|TTL]] | |||
| style="background-color:#efbcff;" colspan="8"| [[IPv4/Header#Protokoll|Protokoll]] | |||
| style="background-color:#b5bcff;" colspan="16"| [[IPv4/Header#Header-Prüfsumme|Header-Prüfsumme]] | |||
|- | |||
|style="background-color:#d1ffac;" colspan="32"| [[IPv4/Header#Sender-IP-Adresse|Sender-IP-Adresse]] | |||
|- | |||
|style="background-color:#ffbfc0;" colspan="32"| [[IPv4/Header#Empfänger-IP-Adresse|Empfänger-IP-Adresse]] | |||
|- | |||
|style="background-color:#fff1b0;" colspan="24"| [[IPv4/Header#Optionen|Optionen]] | |||
|style="background-color:#d6c4ff;" colspan="8"| [[IPv4/Header#Padding|Padding]] | |||
|- | |||
|style="background-color:#d9e4ff;" colspan="32" | | |||
[[IPv4/Header#Payload|Payload]] | |||
|} | |||
== Header-Felder == | |||
{| class="wikitable sortable options" | |||
|- | |||
! Option !! Beschreibung | |||
|- | |||
| Version || | |||
* Version des IP-Protokolls | |||
* Hier Version 4 | |||
|- | |||
| Internet Header Length || | |||
* IHL | |||
* Länge des IP-Protokoll-Kopfes in 32-Bit-Worten an | |||
* Die minimale Länge beträgt 5 Worte, was auch der Normalfall ist | |||
* Vergrößerung durch Angabe von Optionen | |||
|- | |||
| Differentiated Services Code Point || | |||
* DSCP | |||
Eine spezielle Bedeutung kommt in modernen Implementierungen dem früheren Feld ''Type of Service'' (ToS) im zweiten Oktett des IPv4-Headers zu | |||
* Ursprünglich diente dieses Feld bei der Vermittlung eines Datenpaketes als Entscheidungshilfe für die beteiligten Router bei der Wahl der Übertragungsparameter | |||
* In modernen Implementierungen wird dieses Feld im Zusammenhang mit der ''[[network congestion avoidance]]'' (Vermeidung von Überlastungen) verwendet | |||
Das ToS-Feld wurde durch das DS-Feld (''[[DiffServ|differentiated services]]'') ersetzt | |||
* dessen erste sechs Bit als ''differentiated services code point'' (DSCP) und | |||
* dessen letzte beiden Bit als ''[[Explicit Congestion Notification|explicit congestion notification]]'' (ECN) benutzt werden | |||
|- | |||
| ECN || | |||
; Servicetypen | |||
[[File:ipServicetypes.png|200px]] | |||
Mit den Precedence-Bit (0-2) kann eine Priorität von 0 - 7 angegeben werden | |||
* 1000 Minimize-delay | |||
* 0100 Maximize throughput | |||
* 0010 Maximize reliability | |||
* 0001 Minimize monetary costs | |||
* 0000 Normal service | |||
* Bit 7 ohne Bedeutung (reserviert) | |||
Servicetypen werden nicht von allen Routern unterstützt | |||
|- | |||
| Gesamtlänge || | |||
* Die Länge des Paketes in Byte inklusive Protokoll-Kopf | |||
* 16 Bit – Feld (Maximale Paketgröße = 65.535 Byte) | |||
|- | |||
| Identifikation || | |||
* Eine eindeutige Identifikation (Zähler) | |||
* Diese Kennungen sollten sich nur nach längeren Zeitabständen wiederholen | |||
** um nicht mit verspäteten PDU in Konflikt zu kommen | |||
|- | |||
| TTL || | |||
; Time To Live | |||
: Anzahl der Router, die ein IP-Datagramm passieren darf | |||
; Problem | |||
* Beim Routen durch vermaschte Netze, können Datagramme/ Fragmente ziellos und unendlich lange kreisen | |||
* Die verbrauchten Ressourcen können ein Netzwerk bis zum Stillstand belasten | |||
; Lösung | |||
* Jeder Knoten (Router) verringert diesen Wert um mindestens 1 | |||
* Hält ein Router ein Paket länger als eine Sekunde, verringert er die TTL um 1 je weitere Sekunde | |||
* Bei Erreichen des Wertes „0“, wird Paket verworfen | |||
|- | |||
| Sender-IP-Adresse || ; 32-Bit IP-Adresse (IPv4) | |||
; Unabhängig von der zugrunde liegenden Netztechnologie | |||
* Das Internet-Protokoll definiert also eine rein logische Netztopologie | |||
; Die Vergabe der IP-Adressen | |||
* wird international von der IANA (Internet Assigned Numbers Association) geregelt | |||
* die IANA verteilt die Organisation auf mehrere Unterorganisationen | |||
* Die in Europa zuständige Organisation ist das RIPE (Réseaux IP Européens) | |||
|- | |||
| Empfänger-IP-Adresse || | |||
|- | |||
| Flags || | |||
|- | |||
| DF, MF || | |||
; DF (Don‘t Fragment) | |||
* 0 = May Fragment | |||
* 1 = Don‘t Fragment | |||
; MF (More Fragment) | |||
* 0 = Last Fragment | |||
* 1 = More Fragment | |||
|- | |||
| Fragment Offset || | |||
; Fragmentabstand | |||
* Länge relativ zum Beginn des ursprünglichen Datagrams | |||
|- | |||
| Protokoll || ; Nummer des Transportprotokolls | |||
* Legt fest, welches Protokoll für die Weiterverarbeitung auf 03 zuständig ist (demultiplexing) | |||
* gemäß RFC 1700 (Assigned Numbers) | |||
* /etc/protocol | |||
* %SYSTEMROOT%\system32\drivers\etc\protocol | |||
; Ausgewählte IP-Protokollnummern | |||
|- | |||
| Header-Prüfsumme || | |||
; Prüfsumme | |||
* wird über den gesamten IP Header berechnet | |||
; Berechnung beim Sender | |||
* setze das checksum Feld auf 0 | |||
* XOR über alle 16-bit Worte im Header | |||
* das Ergebnis wird bitweise invertiert und stellt dann den Wert für das checksum Feld dar | |||
; Check beim Emfänger | |||
* XOR über alle 16-bit Worte im Header (inkl. checksum) | |||
* OK, wenn im Ergebnis alle bits auf 1 stehen | |||
|- | |||
| Nutzdaten || | |||
* Segmente und Datagramme höherer Protokolle | |||
* Meist TCP oder UDP | |||
|- | |||
| Optionen || Erweiterbarkeit des Headers | |||
* Variable Länge (max. 40 Byte) | |||
|- | |||
|= Source Routing =|| | |||
* Liste von Routern, die ein Datagram durchlaufen soll | |||
* Der genommene Weg wird aufgezeichnet (max. 9 Hops) | |||
; loose | |||
Die Angegebenen IP Adressen müssen nicht benachbart sein | |||
; strict | |||
Die Angegebenen IP Adressen müssen benachbart sein | |||
* sonst wird das Paket verworfen und eine ICMP source route failed Nachricht an den Sender geschickt | |||
* Source Routing ist nahezu überall abgeschaltet, da es ein Sicherheitsrisiko darstellt (IP Spoofing) | |||
|- | |||
|= Record Route =|| Router hängen ihre IP-Adresse an das Optionsfeld an | |||
|- | |||
|= Zeitstempel =|| IP-Adresse und Zeitpunkt des Durchlaufes werden aufgezeichnet | |||
|- | |||
| Padding || Auffüllen des Wortes auf 32-Bit | |||
|- | |||
| Payload || | |||
|} | |||
=== Version === | === Version === | ||
* | * Version des IP-Protokolls | ||
* | * Hier Version 4 | ||
=== | === Internet Header Length === | ||
* | * IHL | ||
* Länge des IP-Protokoll-Kopfes in 32-Bit-Worten an | |||
* Die minimale Länge beträgt 5 Worte, was auch der Normalfall ist | * Die minimale Länge beträgt 5 Worte, was auch der Normalfall ist | ||
* Vergrößerung durch Angabe von Optionen | * Vergrößerung durch Angabe von Optionen | ||
=== Servicetypen === | === Differentiated Services Code Point === | ||
* DSCP | |||
Eine spezielle Bedeutung kommt in modernen Implementierungen dem früheren Feld ''Type of Service'' (ToS) im zweiten Oktett des IPv4-Headers zu | |||
* Ursprünglich diente dieses Feld bei der Vermittlung eines Datenpaketes als Entscheidungshilfe für die beteiligten Router bei der Wahl der Übertragungsparameter | |||
* In modernen Implementierungen wird dieses Feld im Zusammenhang mit der ''[[network congestion avoidance]]'' (Vermeidung von Überlastungen) verwendet | |||
Das ToS-Feld wurde durch das DS-Feld (''[[DiffServ|differentiated services]]'') ersetzt | |||
* dessen erste sechs Bit als ''differentiated services code point'' (DSCP) und | |||
* dessen letzte beiden Bit als ''[[Explicit Congestion Notification|explicit congestion notification]]'' (ECN) benutzt werden | |||
=== ECN === | |||
==== Servicetypen ==== | |||
[[File:ipServicetypes.png|200px]] | |||
Mit den Precedence-Bit (0-2) kann eine Priorität von 0 - 7 angegeben werden | Mit den Precedence-Bit (0-2) kann eine Priorität von 0 - 7 angegeben werden | ||
* | * 1000 Minimize-delay | ||
* | * 0100 Maximize throughput | ||
* | * 0010 Maximize reliability | ||
* | * 0001 Minimize monetary costs | ||
* | * 0000 Normal service | ||
* Bit 7 ohne Bedeutung (reserviert) | * Bit 7 ohne Bedeutung (reserviert) | ||
Servicetypen werden nicht von allen Routern unterstützt | Servicetypen werden nicht von allen Routern unterstützt | ||
=== | === Gesamtlänge === | ||
* Die Länge des Paketes in Byte inklusive Protokoll-Kopf | * Die Länge des Paketes in Byte inklusive Protokoll-Kopf | ||
16 Bit – Feld (Maximale Paketgröße = 65.535 Byte) | * 16 Bit – Feld (Maximale Paketgröße = 65.535 Byte) | ||
Identifikation | === Identifikation === | ||
* Eine eindeutige Identifikation (Zähler) | * Eine eindeutige Identifikation (Zähler) | ||
* Diese Kennungen sollten sich nur nach längeren Zeitabständen wiederholen | * Diese Kennungen sollten sich nur nach längeren Zeitabständen wiederholen | ||
** um nicht mit verspäteten PDU in Konflikt zu kommen | |||
=== TTL === | === TTL === | ||
Time To Live | ; Time To Live | ||
: Anzahl der Router, die ein IP-Datagramm passieren darf | |||
; Problem | |||
* Beim Routen durch vermaschte Netze, können Datagramme/ Fragmente ziellos und unendlich lange kreisen | * Beim Routen durch vermaschte Netze, können Datagramme/ Fragmente ziellos und unendlich lange kreisen | ||
* | * Die verbrauchten Ressourcen können ein Netzwerk bis zum Stillstand belasten | ||
; Lösung | |||
* Jeder Knoten (Router) verringert diesen Wert um mindestens 1 | * Jeder Knoten (Router) verringert diesen Wert um mindestens 1 | ||
* Hält ein Router ein Paket länger als eine Sekunde, verringert er die TTL um 1 je weitere Sekunde | * Hält ein Router ein Paket länger als eine Sekunde, verringert er die TTL um 1 je weitere Sekunde | ||
* Bei Erreichen des Wertes „0“, wird Paket verworfen | * Bei Erreichen des Wertes „0“, wird Paket verworfen | ||
=== Sender- | === Sender-IP-Adresse === | ||
; 32-Bit IP-Adresse (IPv4) | |||
; Unabhängig von zugrundeliegender Netztechnologie | |||
* Das Internet-Protokoll definiert also eine rein logische Netztopologie | * Das Internet-Protokoll definiert also eine rein logische Netztopologie | ||
; Vergabe der IP-Adressen | |||
* wird international von der IANA (Internet Assigned Numbers Association) geregelt | |||
* die IANA verteilt die Organisation auf mehrere Unterorganisationen | * die IANA verteilt die Organisation auf mehrere Unterorganisationen | ||
* Die in Europa zuständige Organisation ist das RIPE (Réseaux IP Européens) | * Die in Europa zuständige Organisation ist das RIPE (Réseaux IP Européens) | ||
=== DF, MF | === Empfänger-IP-Adresse === | ||
=== Flags === | |||
==== DF, MF ==== | |||
; DF (Don‘t Fragment) | |||
* 0 = May Fragment | * 0 = May Fragment | ||
* 1 = Don‘t Fragment | * 1 = Don‘t Fragment | ||
; MF (More Fragment) | |||
* 0 = Last Fragment | * 0 = Last Fragment | ||
* 1 = More Fragment | * 1 = More Fragment | ||
* Länge relativ zum Beginn des ursprünglichen | === Fragment Offset === | ||
; Fragmentabstand | |||
* Länge relativ zum Beginn des ursprünglichen Datagrams | |||
=== Protokoll === | === Protokoll === | ||
; Nummer des Transportprotokolls | |||
* Legt fest, welches Protokoll für die Weiterverarbeitung auf 03 zuständig ist (demultiplexing) | * Legt fest, welches Protokoll für die Weiterverarbeitung auf 03 zuständig ist (demultiplexing) | ||
* gemäß RFC 1700 (Assigned Numbers) | * gemäß RFC 1700 (Assigned Numbers) | ||
* /etc/protocol | * /etc/protocol | ||
* %SYSTEMROOT%\system32\drivers\etc\protocol | * %SYSTEMROOT%\system32\drivers\etc\protocol | ||
=== | ; Ausgewählte IP-Protokollnummern | ||
=== Header-Prüfsumme === | |||
; Prüfsumme | |||
* wird über den gesamten IP Header berechnet | * wird über den gesamten IP Header berechnet | ||
; Berechnung beim Sender | |||
* setze das checksum Feld auf 0 | * setze das checksum Feld auf 0 | ||
* XOR über alle 16-bit Worte im Header | * XOR über alle 16-bit Worte im Header | ||
* das Ergebnis wird bitweise invertiert und stellt dann den Wert für das checksum Feld dar | * das Ergebnis wird bitweise invertiert und stellt dann den Wert für das checksum Feld dar | ||
; Check beim Emfänger | |||
* XOR über alle 16-bit Worte im Header (inkl. checksum) | * XOR über alle 16-bit Worte im Header (inkl. checksum) | ||
* OK, wenn im Ergebnis alle bits auf 1 stehen | * OK, wenn im Ergebnis alle bits auf 1 stehen | ||
=== Nutzdaten === | |||
* Segmente und Datagramme höherer Protokolle | |||
* Segmente und Datagramme höherer Protokolle | |||
* Meist TCP oder UDP | * Meist TCP oder UDP | ||
=== Optionen === | |||
Erweiterbarkeit des Headers | |||
* Variable Länge (max. 40 Byte) | * Variable Länge (max. 40 Byte) | ||
==== Source Routing ==== | |||
* Liste von Routern, die ein Datagram durchlaufen soll | * Liste von Routern, die ein Datagram durchlaufen soll | ||
* Der genommene Weg wird aufgezeichnet (max. 9 Hops) | * Der genommene Weg wird aufgezeichnet (max. 9 Hops) | ||
; loose | |||
Die Angegebenen IP Adressen müssen nicht benachbart sein | |||
; strict | |||
Die Angegebenen IP Adressen müssen benachbart sein | |||
* sonst wird das Paket verworfen und eine ICMP source route failed Nachricht an den Sender geschickt | * sonst wird das Paket verworfen und eine ICMP source route failed Nachricht an den Sender geschickt | ||
* Source Routing ist nahezu überall abgeschaltet da | * Source Routing ist nahezu überall abgeschaltet, da es ein Sicherheitsrisiko darstellt (IP Spoofing) | ||
==== Record Route ==== | |||
Router hängen ihre IP-Adresse an das Optionsfeld an | |||
==== Zeitstempel ==== | |||
IP-Adresse und Zeitpunkt des Durchlaufes werden aufgezeichnet | |||
=== Padding === | |||
Auffüllen des Wortes auf 32-Bit | |||
=== Payload === | |||
<noinclude> | |||
== Anhang == | |||
=== Siehe auch === | |||
{{Special:PrefixIndex/IPv4}} | |||
==== Sicherheit ==== | |||
==== Dokumentation ==== | |||
===== RFC ===== | |||
===== Man-Page ===== | |||
===== Info-Pages ===== | |||
==== Links ==== | |||
===== Projekt ===== | |||
===== Weblinks ===== | |||
[[Kategorie:IPv4/Header]] | |||
</noinclude> |
Aktuelle Version vom 6. November 2024, 12:27 Uhr
topic - Beschreibung
Beschreibung
Paketlänge
Ein IP-Paket besteht aus einem Header und den eigentlichen Daten
- Der Datenteil enthält in der Regel ein weiteres Protokoll, meist TCP, UDP oder ICMP
- Die maximale Länge eines IP-Pakets beträgt 65535 Bytes (216−1), die maximale Datenlänge 65515 Bytes (Paketlänge – minimale Headerlänge von 20 Byte)
- Normalerweise beschränkt der Sender die Paketlänge auf diejenige des zugrundeliegenden Mediums
- Bei Ethernet beträgt die sogenannte MTU (Maximum Transmission Unit) 1500 Bytes, da ein Ethernet-Datenpaket maximal 1518 Bytes lang sein darf und 18 Bytes vom Ethernet selbst belegt werden
- Für IP (Header und Daten) stehen also nur 1500 Bytes zur Verfügung
- Deshalb ist die Länge von IP-Paketen oft auf 1500 Bytes festgesetzt
Header-Format
- Der IPv4-Header ist meist 20 Bytes lang
- Bei Übertragung auf Basis von Ethernet folgt er dem Ethernet-Typfeld, das für IPv4-Pakete auf 080016 festgelegt ist
- Auf anderen Übertragungsmedien und Protokollen kann der Header auch der erste Eintrag sein
- Im Typfeld des Ethernet-Frames wird für IPv4 080016 eingetragen
- IPv4 bietet verschiedene, größtenteils ungenutzte Optionen, die den Header bis auf 60 Bytes (in 4-Byte-Schritten) verlängern können
- Ohne Optionen ist der IPv4-Header 20 Bytes lang
- Wortlänge 32 Bit (4 Byte)
- Daten im Feld Optionen können den Header auf maximal 60 Byte (in 32-Bit-Worten) verlängern (selten)
01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | ||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Version | IHL | DSCP | ECN | Gesamtlänge | H e a d e r | |||||||||||||||||||||||||||
Identifikation | Flags | Fragment Offset | ||||||||||||||||||||||||||||||
TTL | Protokoll | Header-Prüfsumme | ||||||||||||||||||||||||||||||
Sender-IP-Adresse | ||||||||||||||||||||||||||||||||
Empfänger-IP-Adresse | ||||||||||||||||||||||||||||||||
Optionen | Padding | |||||||||||||||||||||||||||||||
Header-Felder
Option | Beschreibung |
---|---|
Version |
|
Internet Header Length |
|
Differentiated Services Code Point |
Eine spezielle Bedeutung kommt in modernen Implementierungen dem früheren Feld Type of Service (ToS) im zweiten Oktett des IPv4-Headers zu
Das ToS-Feld wurde durch das DS-Feld (differentiated services) ersetzt
|
ECN |
Mit den Precedence-Bit (0-2) kann eine Priorität von 0 - 7 angegeben werden
Servicetypen werden nicht von allen Routern unterstützt |
Gesamtlänge |
|
Identifikation |
|
TTL |
|
Sender-IP-Adresse | ; 32-Bit IP-Adresse (IPv4)
|
Empfänger-IP-Adresse | |
Flags | |
DF, MF |
|
Fragment Offset |
|
Protokoll | ; Nummer des Transportprotokolls
|
Header-Prüfsumme |
|
Nutzdaten |
|
Optionen | Erweiterbarkeit des Headers
|
= Source Routing = |
Die Angegebenen IP Adressen müssen nicht benachbart sein
Die Angegebenen IP Adressen müssen benachbart sein
|
= Record Route = | Router hängen ihre IP-Adresse an das Optionsfeld an |
= Zeitstempel = | IP-Adresse und Zeitpunkt des Durchlaufes werden aufgezeichnet |
Padding | Auffüllen des Wortes auf 32-Bit |
Payload |
Version
- Version des IP-Protokolls
- Hier Version 4
Internet Header Length
- IHL
- Länge des IP-Protokoll-Kopfes in 32-Bit-Worten an
- Die minimale Länge beträgt 5 Worte, was auch der Normalfall ist
- Vergrößerung durch Angabe von Optionen
Differentiated Services Code Point
- DSCP
Eine spezielle Bedeutung kommt in modernen Implementierungen dem früheren Feld Type of Service (ToS) im zweiten Oktett des IPv4-Headers zu
- Ursprünglich diente dieses Feld bei der Vermittlung eines Datenpaketes als Entscheidungshilfe für die beteiligten Router bei der Wahl der Übertragungsparameter
- In modernen Implementierungen wird dieses Feld im Zusammenhang mit der network congestion avoidance (Vermeidung von Überlastungen) verwendet
Das ToS-Feld wurde durch das DS-Feld (differentiated services) ersetzt
- dessen erste sechs Bit als differentiated services code point (DSCP) und
- dessen letzte beiden Bit als explicit congestion notification (ECN) benutzt werden
ECN
Servicetypen
Mit den Precedence-Bit (0-2) kann eine Priorität von 0 - 7 angegeben werden
- 1000 Minimize-delay
- 0100 Maximize throughput
- 0010 Maximize reliability
- 0001 Minimize monetary costs
- 0000 Normal service
- Bit 7 ohne Bedeutung (reserviert)
Servicetypen werden nicht von allen Routern unterstützt
Gesamtlänge
- Die Länge des Paketes in Byte inklusive Protokoll-Kopf
- 16 Bit – Feld (Maximale Paketgröße = 65.535 Byte)
Identifikation
- Eine eindeutige Identifikation (Zähler)
- Diese Kennungen sollten sich nur nach längeren Zeitabständen wiederholen
- um nicht mit verspäteten PDU in Konflikt zu kommen
TTL
- Time To Live
- Anzahl der Router, die ein IP-Datagramm passieren darf
- Problem
- Beim Routen durch vermaschte Netze, können Datagramme/ Fragmente ziellos und unendlich lange kreisen
- Die verbrauchten Ressourcen können ein Netzwerk bis zum Stillstand belasten
- Lösung
- Jeder Knoten (Router) verringert diesen Wert um mindestens 1
- Hält ein Router ein Paket länger als eine Sekunde, verringert er die TTL um 1 je weitere Sekunde
- Bei Erreichen des Wertes „0“, wird Paket verworfen
Sender-IP-Adresse
- 32-Bit IP-Adresse (IPv4)
- Unabhängig von zugrundeliegender Netztechnologie
- Das Internet-Protokoll definiert also eine rein logische Netztopologie
- Vergabe der IP-Adressen
- wird international von der IANA (Internet Assigned Numbers Association) geregelt
- die IANA verteilt die Organisation auf mehrere Unterorganisationen
- Die in Europa zuständige Organisation ist das RIPE (Réseaux IP Européens)
Empfänger-IP-Adresse
Flags
DF, MF
- DF (Don‘t Fragment)
- 0 = May Fragment
- 1 = Don‘t Fragment
- MF (More Fragment)
- 0 = Last Fragment
- 1 = More Fragment
Fragment Offset
- Fragmentabstand
- Länge relativ zum Beginn des ursprünglichen Datagrams
Protokoll
- Nummer des Transportprotokolls
- Legt fest, welches Protokoll für die Weiterverarbeitung auf 03 zuständig ist (demultiplexing)
- gemäß RFC 1700 (Assigned Numbers)
- /etc/protocol
- %SYSTEMROOT%\system32\drivers\etc\protocol
- Ausgewählte IP-Protokollnummern
Header-Prüfsumme
- Prüfsumme
- wird über den gesamten IP Header berechnet
- Berechnung beim Sender
- setze das checksum Feld auf 0
- XOR über alle 16-bit Worte im Header
- das Ergebnis wird bitweise invertiert und stellt dann den Wert für das checksum Feld dar
- Check beim Emfänger
- XOR über alle 16-bit Worte im Header (inkl. checksum)
- OK, wenn im Ergebnis alle bits auf 1 stehen
Nutzdaten
- Segmente und Datagramme höherer Protokolle
- Meist TCP oder UDP
Optionen
Erweiterbarkeit des Headers
- Variable Länge (max. 40 Byte)
Source Routing
- Liste von Routern, die ein Datagram durchlaufen soll
- Der genommene Weg wird aufgezeichnet (max. 9 Hops)
- loose
Die Angegebenen IP Adressen müssen nicht benachbart sein
- strict
Die Angegebenen IP Adressen müssen benachbart sein
- sonst wird das Paket verworfen und eine ICMP source route failed Nachricht an den Sender geschickt
- Source Routing ist nahezu überall abgeschaltet, da es ein Sicherheitsrisiko darstellt (IP Spoofing)
Record Route
Router hängen ihre IP-Adresse an das Optionsfeld an
Zeitstempel
IP-Adresse und Zeitpunkt des Durchlaufes werden aufgezeichnet
Padding
Auffüllen des Wortes auf 32-Bit