IPv4/Header: Unterschied zwischen den Versionen
Zeile 7: | Zeile 7: | ||
{| border="1" cellpadding="4" cellspacing="0" style="text-align:center;margin:auto;" | {| border="1" cellpadding="4" cellspacing="0" style="text-align:center;margin:auto;" | ||
! width=" | ! style="text-align:center !important; font-weight: normal;" "width="3.125%"| 00 | ||
! width="12%"| | ! style="text-align:center !important; font-weight: normal;" "width="3.125%"| 01 | ||
! width=" | ! style="text-align:center !important; font-weight: normal;" "width="3.125%"| 02 | ||
! width=" | ! style="text-align:center !important; font-weight: normal;" "width="3.125%"| 03 | ||
! width=" | ! style="text-align:center !important; font-weight: normal;" "width="3.125%"| 04 | ||
! width=" | ! style="text-align:center !important; font-weight: normal;" "width="3.125%"| 05 | ||
! width=" | ! style="text-align:center !important; font-weight: normal;" "width="3.125%"| 06 | ||
! width=" | ! style="text-align:center !important; font-weight: normal;" "width="3.125%"| 07 | ||
! style="text-align:center !important; font-weight: normal;" "width="3.125%"| 08 | |||
! style="text-align:center !important; font-weight: normal;" "width="3.125%"| 09 | |||
! style="text-align:center !important; font-weight: normal;" "width="3.125%"| 10 | |||
! style="text-align:center !important; font-weight: normal;" "width="3.125%"| 11 | |||
! style="text-align:center !important; font-weight: normal;" "width="3.125%"| 12 | |||
! style="text-align:center !important; font-weight: normal;" "width="3.125%"| 13 | |||
! style="text-align:center !important; font-weight: normal;" "width="3.125%"| 14 | |||
! style="text-align:center !important; font-weight: normal;" "width="3.125%"| 15 | |||
! style="text-align:center !important; font-weight: normal;" "width="3.125%"| 16 | |||
! style="text-align:center !important; font-weight: normal;" "width="3.125%"| 17 | |||
! style="text-align:center !important; font-weight: normal;" "width="3.125%"| 18 | |||
! style="text-align:center !important; font-weight: normal;" "width="3.125%"| 19 | |||
! style="text-align:center !important; font-weight: normal;" "width="3.125%"| 20 | |||
! style="text-align:center !important; font-weight: normal;" "width="3.125%"| 21 | |||
! style="text-align:center !important; font-weight: normal;" "width="3.125%"| 22 | |||
! style="text-align:center !important; font-weight: normal;" "width="3.125%"| 23 | |||
! style="text-align:center !important; font-weight: normal;" "width="3.125%"| 24 | |||
! style="text-align:center !important; font-weight: normal;" "width="3.125%"| 25 | |||
! style="text-align:center !important; font-weight: normal;" "width="3.125%"| 26 | |||
! style="text-align:center !important; font-weight: normal;" "width="3.125%"| 27 | |||
! style="text-align:center !important; font-weight: normal;" "width="3.125%"| 28 | |||
! style="text-align:center !important; font-weight: normal;" "width="3.125%"| 29 | |||
! style="text-align:center !important; font-weight: normal;" "width="3.125%"| 30 | |||
! style="text-align:center !important; font-weight: normal;" "width="3.125%"| 31 | |||
|- | |- | ||
| [[IP-Paket#Version|Version]] | | style="background-color:#d6c4ff;" colspan="4"| [[IP-Paket#Version|Version]] | ||
| [[IP-Paket#IHL (Internet Header Length)|IHL]] | | style="background-color:#dfffcb;" colspan="4"| [[IP-Paket#IHL (Internet Header Length)|IHL]] | ||
|colspan=" | | style="background-color:#ffbfc0;" colspan="6"| [[DSCP]] | ||
|colspan=" | | style="background-color:#ffbfc0;" colspan="2"| [[Explicit Congestion Notification|ECN]] | ||
|colspan=" | | style="background-color:#b5bcff;" colspan="16"| [[IP-Paket#Total Length|Gesamtlänge]] | ||
|- | |- | ||
|colspan=" | | style="background-color:#fff1b0;" colspan="16"| [[IP-Paket#Identification|Identifikation]] | ||
| [[IP-Paket#Flags|Flags]] | | style="background-color:#d6c4ff;" colspan="3"| [[IP-Paket#Flags|Flags]] | ||
|colspan=" | | style="background-color:#fff1b0;" colspan="13"| [[IP-Paket#Fragment Offset|Fragment Offset]] | ||
|- | |- | ||
|colspan=" | | style="background-color:#adfff6;" colspan="8"| [[Time-to-live|TTL]] | ||
|colspan=" | | style="background-color:#efbcff;" colspan="8"| [[Protokoll (IP)|Protokoll]] | ||
|colspan=" | | style="background-color:#b5bcff;" colspan="16"| Header-[[Prüfsumme]] | ||
|- | |- | ||
|colspan=" | |style="background-color:#d1ffac;" colspan="32"| Quell-IP-Adresse | ||
|- | |- | ||
|colspan=" | |style="background-color:#ffbfc0;" colspan="32"| Ziel-IP-Adresse | ||
|- | |- | ||
|colspan="8"| | |style="background-color:#fff1b0;" colspan="24"| ''Optionen'' | ||
|style="background-color:#d6c4ff;" colspan="8"| ''Padding'' | |||
|- | |- | ||
|colspan=" | |style="background-color:#d9e4ff;" colspan="32" | | ||
Payload | |||
|} | |} | ||
Zeile 44: | Zeile 75: | ||
[[File:ipHeaderEng.png|600px]] | [[File:ipHeaderEng.png|600px]] | ||
== Header-Format == | == Header-Format == |
Version vom 10. Dezember 2022, 00:45 Uhr
Beschreibung
- Ohne Optionen ist ein IPv4-Header 20 Bytes lang
- Wortlänge 32 Bit (4 Byte)
- Daten im Feld Optionen können den Header auf maximal 60 Bytes (in 32-Bit-Worten) verlängern (selten)
- Im Typfeld des Ethernet-Frames wird für IPv4 080016 eingetragen
00 | 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 | |||||||||||||||||||||||||||
Identifikation | Flags | Fragment Offset | |||||||||||||||||||||||||||||
TTL | Protokoll | Header-Prüfsumme | |||||||||||||||||||||||||||||
Quell-IP-Adresse | |||||||||||||||||||||||||||||||
Ziel-IP-Adresse | |||||||||||||||||||||||||||||||
Optionen | Padding | ||||||||||||||||||||||||||||||
|
Header-Format
Der IPv4-Header ist normalerweise 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.
IPv4 bietet verschiedene, größtenteils ungenutzte Optionen, die den Header bis auf 60 Bytes (in 4-Byte-Schritten) verlängern können.
0–3 | 4–7 | 8–13 | 14–15 | 16–18 | 19–23 | 24–27 | 28–31 |
---|---|---|---|---|---|---|---|
Version | IHL | DSCP | ECN | Gesamtlänge | |||
Identifikation | Flags | Fragment Offset | |||||
TTL | Protokoll | Header-Prüfsumme | |||||
Quell-IP-Adresse | |||||||
Ziel-IP-Adresse | |||||||
Optionen … |
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 Bits als differentiated services code point (DSCP) und dessen letzte beiden Bits als explicit congestion notification (ECN) benutzt werden.
Version
- Version des IP-Protokolls
- Hier Version 4
Länge
- Dieses Feld gibt die 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
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
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 Bits als differentiated services code point (DSCP) und dessen letzte beiden Bits als explicit congestion notification (ECN) benutzt werden.
Paketlä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.
Paketübertragung im Internet
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- und Empfänger-Adressen
- 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)
DF, MF und Fragmentabstand
- DF (Don‘t Fragment)
- 0 = May Fragment
- 1 = Don‘t Fragment
- MF (More Fragment)
- 0 = Last Fragment
- 1 = More Fragment
- Fragmentabstand
- Länge relativ zum Beginn des ursprünglichen Datagram
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
Weitere Felder
- 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
Füllzeichen
Auffüllen des Wortes auf 32-Bit