|
|
Zeile 34: |
Zeile 34: |
|
| |
|
| = TMP = | | = TMP = |
|
| |
| {{:IPv4/Header/Format}}
| |
|
| |
| == 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
| |
|
| |
| == 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 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)
| |
|
| |
| == 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 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 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
| |
|
| |
| === Payload ===
| |
|
| |
|
| <noinclude> | | <noinclude> |