Werden zwei oder mehrere Rechner miteinander vernetzt, wird ein einheitliches Protokoll der Datenübertragung notwendig, um den Datenaustausch zwischen unterschiedlichen Betriebssystemen und deren Rechenarten zu gewährleisten. Also ähnlich wie beim Briefversand benötigt man die richtige Adresse. Im Gegensatz zu einer Wohnadresse sind Internet Protocols (IP-Adressen) nicht an einen Standort gebunden, sondern werden bei Verbindungsaufbau dem Netzwerkgerät zugeordnet.
Diesen Datenaustausch übernimmt das Protokoll TCP/IP (Transmission Control Protocol / Internet Protocol). Dies wurde Ende der 1960er Jahre von DARPA (Defense Advanced Research Projects Agency) entwickelt. Das Internet, ein weltweit verfügbares Kommunikationsnetz, verdankt großteils seinen Erfolg den Protokollen rund um TCP/IP.
Layer, auf dem sich das IP befindet
Internet Protocol wird im OSI-Modell (Referenzmodell für Netzwerkprotokolle) Layer-2 benutzt. Im OSI-Schichtmodell bildet TCP/IP das Fundament für alle Kommunikationsverbindungen.
Beispiele für andere Layer-2-Protokolle: IEEE 802.3 Ethernet, TLAP, FDDI, MAC, Token Ring und ARCNET
Versionen: IPv4 oder IPv6
Es gibt zwei unterschiedliche Varianten: IPv4 und IPv6.
IPv4 | IPv6 |
32 Bit | 128 Bit |
4 Byte | 16 Byte |
Protokolle werden in verbindungsorientierte und verbindungslose Protokolle unterschieden.
Bei Verbindungslosen Protokollen werden die einzelnen Pakete vom Quellhost in einer vorgegebenen Reihenfolge abgeschickt. Der Zielholst empfängt jene Pakete in unterschiedlichen Reihenfolgen. Im Gegensatz dazu baut eine verbindungsorientiertes Protokoll zuerst eine Verbindung zwischen Quellhost und Zielhost auf und übermittelt erst dann die Pakete.
Das Internet Protocol ordnet sich der Gruppe der verbindungslosen Protokolle an, da es sich nur mit dem Senden und Empfangen befasst.
Aufbau eines IP Paketes
Das Internet Protocol ist dafür verantwortlich, dass jedem Datenpaket die wichtigen strukturellen Eigenschaften in der Kopfzeile vorangestellt und dem passenden Transportprotokoll zugeordnet werden.
0 | 4 | 8 | 12 | 16 | 20 | 24 | 28 | 31 Bit | |
Version | IHL | TOS | Total Length | ||||||
Identification | Flags | Fragment Offset | |||||||
TTL | Protocol | Header Checksum | |||||||
Source Address | |||||||||
Destination Address | |||||||||
Options and Padding (optional) |
Jeder IP-Header beginnt mit der 4 Bit langen Versionsnummer. 4-7 stellt Informationen über die IHL (IP Header Lenght) dar. Aus diesem Wert lässt sich die Gesamtlänge errechnen, wenn man diesen mit 32 Bit multipliziert. Die Bits 8 – 15 beinhalten Anweisungen zur Behandlung bzw. Priorität. Von 16 – 31 Bits ist es die Total Length.
Identification
Jedes Fragment eines Diagramms verfügt über die gleiche Identifikationsnummer, die vom Absender übermittelt wird.
Flag
Die Flag hat Indikatorstatus, die Informationen und Richtlinien zur Fragmentierung enthalten.
Das erste Bit (bit0) ist dabei reserviert und muss immer den Wert 0 aufweisen. Das zweite Bit (bit1) zeigt, ob das Paket fragmentiert werden darf (0) oder nicht (1). Das letzte Bit (bit2) demonstriert, ob weitere Fragmente folgen (1) oder ob das Paket mit dem aktuellen Fragment abgeschlossen ist.
Fragment Offset
Dieses Feld informiert darüber, wohin die einzelnen Fragmente gehören, damit das Datagramm wieder komplett zusammengesetzt werden kann. Das Fragment Offset ist eine Nummer, die bei fragmentierten Paketen besagt, ab welcher Position innerhalb des Paketes das Fragment anfängt. Die Nummerierung bezieht sich auf Daten-Blöcke von 8 Byte (64 Bit). Ein Paket kann daher, falls notwendig, mehrmals hintereinander in kleinere Fragmente zerteilt werden. Dabei muss nur die Nummer des ersten enthaltenen Datenblocks (Offset) und das Total-Length Feld an die Länge des Fragments angepasst werden. Das Fragment, oder ein nicht fragmentiertes Paket, enthält als Offset den Wert Null. Ist ein Paket mit 800 Byte Nutzdaten in zwei Fragmente zerteilt, ist der Offset des zweiten Fragments die Nummer 50. Da der Offset keinerlei Hinweis enthält, wie groß das ursprüngliche Paket ist, muss das allerletzte Fragment das MF-Flag auf Null setzen.
TTL (Time to Live) – Lebenszeit
TTL ist ein 8 Bit großes Feld, das die Lebensdauer des Pakets angibt. Hat dieses Feld den Wert null, so wird das Paket verworfen. Jede Station (Router) auf dem Weg des Pakets verringert diesen Wert um eins. Dies soll verhindern, dass Pakete ewig weitergeleitet werden (beispielsweise, wenn das Paket fälschlicherweise im Kreis geleitet wird und somit das Netz überlasten würde).
Der Standard von 1981 sieht vor, dass jede Station den TTL-Wert um die Anzahl der Sekunden verringert, die das Paket an der Station verweilt, mindestens jedoch um eins. Heute wird es als Hop-Count implementiert.
Das Folgeprotokoll ist 8 Bit groß. Zu diesem Feld gehören die im betreffenden IPv4-Paket transportierte Nutzdaten. Enthält das IP-Paket beispielsweise ein TCP Paket, steht hier der Wert 6 für ein UDP-Paket 17. Diese Werte werden seit RFC 3232 von der IANA in einer Online-Datenbank für Protokollnummern definiert und gepflegt.
Im IPv6-Header gibt es dieses Feld ebenfalls, allerdings heißt es dort Next Header. Die zulässigen Werte sind dieselben wie bei IPv4.
Header Checksum
Das 16 Bit große Checksum-Feld enthält die Prüfsumme für den Header. Eine Prüfsumme sichert also ausschließlich den Kopfdatenbereich. IP selbst hat keine Mechanismen zur Prüfung der Nutzlast auf Korrektheit. Diese wird im TCP/IP-Referenzmodell durch die Transportschicht sichergestellt. Dieser Wert wird bei jeder Station neu verifiziert und – weil sich die TTL pro Hop verändert – neu berechnet.
Source Adress
Die Quell- und Zieladresse enthält jeweils 32 Bit, also 4 Byte in „network byte order“. Geschrieben werden diese IP-Adressen in vier durch Punkte getrennte Dezimalzahlen.
Options und Padding
Das Optionsfeld gibt weitere Zusatzinformationen für das konkrete Paket an. Die Option sind nur im Header optional, müssen aber von allen IP-Modellen unterstützt werden. Das Format der Optionen ist im RFC 791 beschrieben. Die maximale Anzahl der mit Optionen belegbaren Byte im konkreten Paket ergibt sich aus (IHL*4)-20. Da mit den 4 Bits in IHL ein Wertebereich von 0 bis 15 kodiert wird, können somit bis zu 40 Byte durch Optionen belegt werden. Die einzelnen Optionen selbst können unterschiedliche Länge haben. Es gibt sowohl die Option fester Längen als auch variabler Länge. Da die Gesamtlänge des IP-Headers durch das Feld IHL nur im Vielfachen von 4 Byte festgelegt wird, werden unbenutzte Byte mit Nullen aufgefüllt (Padding).
IP-Adressierung
Aufbau einer IP-Adresse
Eine IP-Adresse ist stets dezimal-punktiert: 192.168.10.1/24 oder 255.255.255.0
Eine IP-Adresse besteht aus einem Netzanteil und einem Hostanteil. Der Netzanteil identifiziert ein Teilnetz, der Hostanteil identifiziert ein Gerät (Host) innerhalb eines Teilnetzes. Die genaue Aufteilung zwischen Netzanteil und Hostanteil wird durch eine Subnetzmaske festgelegt.
Beispiel:
IP-Adresse: 194.95.162.121 Netzanteil: 194.95.162.0
Subnetzmaske: 255.255.255.0 Hostanteil: 0.0.0.121
Die Broadcast-Adresse ist die letzte Adresse im Netz. Nach dieser muss man zum benachbarten Netz übersteigen. Wenn man zB bei 192.168.10.255 ankommt, ist die nächste Adresse 192.168.11.1.
Die Adressierung von Netzwerken und deren Teilnehmern übernimmt das Internet Protocol (IP). Die jeweiligen Datenpakete gelangen dadurch nur in das Netz, in dem sich das Ziel befindet und werden nicht fehlgeleitet. Zur Adressierung bedarf es Verfahren in fest definierte Netzklassen.
Netzwerkklassen
Netzwerkklassen sind die verschiedenen Gruppen, in die TCP/IP Netzwerke unterteilt werden. Mittels des ersten Bytes einer IP-Adresse kann die entsprechende Klasse erkannt werden:
Klassen
A 1.0.0.0 – 127.255.255.255/8 255.0.0.0
B 128.0.0.0 – 191.255.255.255/16 255.255.0.0
C 192.0.0.0 – 223.255.255.255/24 255.255.255.0
Besondere Klassen:
D 224.0.0.0 – 239.255.255.255 Multicasts
E 240.0.0.0 – 255.255.255.255 Fix reserviert
Private IPs:
A 10.0.0.0 – 10.255.255.255
B 172.16.0.0 – 172.31.255.255
C 192.168.0.0 – 192.168.255.255