IPv4
IPv4, früher einfach IP, ist die vierte Version des Internet Protocols (IP). Es war die erste Version des Internet Protocols das weit verbreitet und eingesetzt wurde und bildet eine wichtige technische Grundlage des Internets. Es wurde in RFC791 im Jahr 1981 von Jon Postel definiert.
Adressformat
IPv4 benutzt 32-Bit Adressen, d.h. maximal sind 4.294.967.296 eindeutige Adressen möglich. IPv4-Adressen werden dezimal geschrieben (z.B. 80.130.234.185). Da diese IP-Adressen knapp werden, wurde IPv6 entwickelt, das aber heute 2003 noch nicht sehr verbreitet ist.
Eine IP-Adresse wird in einen Netzwerkteil und einen Host-(Adressen-)teil getrennt. Ein typisches Netzwerk trennt die 32-Bit in einen 24-Bit Netzwerk und einen 8-Bit Adressteil (Klasse-C Adressen). Der Adressteil wird im LAN (lokales Netzwerk) vergeben, der Netzwerkteil von der IANA zugeteilt. In einem Klasse-C Netzwerk sind 254 Geräteadressen verfügbar. Die Adresse 255 wird für Broadcast, d. h. Übertragung an alle, verwendet, die Adresse 0 für das Netzwerk selbst. Eine Netzmaske, im Klasse-C Fall 255.255.255.0 gibt die Trennlinie zwischen den Teilen an. Sie ist 1 für den Netzwerkteil und 0 für den Adressteil.
Die IANA vergibt folgende Adressbereiche
0.0.0.0-126.255.255.225 Klasse A Netzwerk (8-Bit Netzwerkteil, 24 Bit Hostteil) 128.0.0.0-191.255.255.255 Klasse B Netzwerk (16-Bit Netzwerkteil, 16 Bit Hostteil) 192.0.0.0-223.255.255.255 Klasse C Netzwerk (24-Bit Netzwerkteil, 8 Bit Hostteil)
Ein Teil der Adressen ist für den lokalen Rechner (127.x.x.x), für Multicasts (224.x.x.x) und für lokale Netzwerke mit Adressübersetzung (z. B. 10.x.x.x und 192.168.x.x), sowie allgemeiner Broadcast (255.255.255.255) reserviert.
Manchmal teilt der Eigentümer den ihm zugeteilten Adressteil lokal in weitere Subnetze auf (sogenanntes Subnetting). Dies dient der besseren Netzwerkausnutzung sowie der Fehlersuche.
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 der Daten beträgt 65515 Bytes (216-1-minimale Headerlänge). Normalerweise beschränkt der Sender die Paketlänge auf diejenige des zugrundeliegenden Mediums. Bei Ethernet beträgt die sogenannte MTU (Maximum Transfer Unit) 1518 Bytes, wobei 18 Bytes von Ethernet selbst belegt werden. Für IP (Header und Daten) stehen also nur 1500 Bytes zur Verfügung.
Andere Netzwerke können die Paketlänge weiter beschränken. In diesem Fall bietet IP die Option, IP-Pakete zu fragmentieren. Jedes Paket erhält vom Sender eine Kennung (die Fragmentid). Ein Router kann ein langes Paket aufteilen, weil das Zielnetzwerk Pakete dieser Länge nicht überträgt. Der Empfänger kann die Fragmente anhand der Kennung und der Senderadresse identifizieren und wieder zusammenfügen.
Routing
IPv4 unterscheidet nicht zwischen Endgeräten (Hosts) und Vermittlungsgeräten (Router). Jeder Computer und jedes Gerät kann gleichzeitig Endpunkt und Router sein. Ein Router verbindet dabei verschiedene Netzwerke. Die Gesamtheit aller über Router verbundenen Netzwerk bildet das Internet.
IPv4 ist für LANs und WANs gleichermaßen geeignet. Ein Paket kann verschiedene Netzwerke vom Sender zum Empfänger durchlaufen, die Netzwerke sind durch Router verbunden. Anhand von Routingtabellen, die jeder Router individuell pflegt, wird der Netzwerkteil einem Zielnetzwerk zugeordnet. Die Einträge in die Routingtabelle kann dabei statisch erfolgen oder über Routingprotokolle dynamisch erfolgen. Die Routingprotokolle dürfen dabei sogar auf IP aufsetzen.
Bei Überlastung eines Netzwerks oder einem anderen Fehler darf ein Router Pakete auch verwerfen. Pakete desselben Senders können bei Ausfall eines Netzwerks auch alternativ geroutet werden. Jedes Paket wird dabei einzeln geroutet, was zu einer erhöhten Ausfallsicherheit führt.
Beim Routing über IP können daher
- einzelne Pakete verlorengehen
- Pakete doppelt beim Empfänger ankommen
- Pakete verschiedene Wege nehmen
- Pakete fragmentiert beim Empfänger ankommen.
Wird TCP auf IP aufgesetzt (d. h. die Daten jedes IP-Pakets enthalten ein TCP-Paket, aufgeteilt in TCP-Header und Daten), so wird neben dem Aufheben der Längenbeschränkung auch der Paketverlust durch Wiederholung korrigiert. Doppelte Pakete werden erkannt und verworfen. Die Kombination TCP mit IP stellt dabei eine zuverlässige bidirektionale Verbindung eines Datenstroms dar.
ICMP
IP ist eng verknüpft mit dem ICMP-Protokoll, das zur Fehlersuche und Steuerung eingesetzt wird. ICMP setzt auf IP auf, d. h. ein ICMP-Paket wird in Datenteil eines IP-Pakets gelegt. Eine IP-Implementierung enthält stets auch eine ICMP Implementierung. Wichtig ist z. B. die ICMP Source-Quench Mitteilung, die einem Sender über das Verwerfen von Paketen durch einen Router informiert. Da jedes IP-Paket die Quell-Adresse enthält, können Informationen an den Sender zurück übermittelt werden. Dieser kann nach einem Source-Quench die Paketsendefrequenz verringern und so die Notwendigkeit eines weiteren Verwerfens minimieren oder vermeiden.
ICMP kann zusammen mit dem Don't Fragment-Bit des IP-Pakets auch eingesetzt werden, um die minimale MTU eines Übertragungsweges zu ermitteln (sogenannte PMTU Path Maximum Transfer Unit). Dies ist die MTU desjenigen Netzwerkes, das von einem Paket passiert wird und die kleiner als die der anderen Netzwerke ist. Dadurch kann auf Fragmentierung verzichtet werden, wenn der Sender nur Pakete mit der maximalen Größe der PMTU erzeugt.
IPv4 auf Ethernet
IPv4 kann auf vielen verschiedenen Medien aufsetzen, z. B. auf serielle Schnittstellen (PPP oder SLIP-Protokoll), Satellitenverbindungen usw. Im LAN-Bereich wird heute fast immer Ethernet eingesetzt. Ethernet verwaltet eigene 48-Bit Adressen. Wenn IP über Ethernet gesendet wird, wird ein 14-Byte grosser Ethernet-Header vor dem IP-Header gesendet und eine 32-Bit CRC-Prüfsumme nach den Daten.
Neben der maximalen Paketlänge von 1518 Bytes kann Ethernet keine kleineren Pakete als 64 Bytes übertragen, so dass zu kurze IP-Pakete (Datenlänge kleiner als 26 Bytes) mit Nullbytes erweitert werden (sogenanntes Padding). Die Länge im IP-Header gibt dann Auskunft über die tatsächliche Paketgröße.
Ethernet hat eine eigene Broadcastadresse, jede Netzwerkkarte hat ihre eigene herstellerbezogene 48-Bit Adresse. Ein Sender muss die Ethernetadresse der Zielnetzwerkkarte kennen, bevor ein IP-Paket gesendet werden kann. Dazu wird das ARP-Protokoll (Address Resolution Protocol) verwendet. Jeder Rechner verwaltet einen ARP-Cache, in dem er ihm bekannte Zuordnungen von Ethernet-Kartenaddressen speichert. Unbekannte Adressen erfährt er über das ARP-Protokoll mittels einer Anfrage (ARP-Request) über einen Ethernet-Broadcast, die der zugehörige Empfänger beantwortet (ARP-Reply).
Header Format
Der IPv4 Header ist normalerweise 20 Bytes lang. Bei Übertragung auf Ethernetkabeln folgt er dem Ethernet-Typfeld, das für IP-Pakete auf 080016 festgelegt ist. Auf anderen Übertragungsmedien 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 | 4 | 8 | 12 | 16 | 19 | 24 | 32 |
Version | IHL | Type of Service | Länge | ||||
Identifikation | Flags | Fragment Offset | |||||
TTL | Protokoll | Prüfsumme | |||||
Quell IP-Adresse | |||||||
Ziel IP-Adresse | |||||||
evtl. Optionen ... |
Höhere Protokolle
IPv4 ist ein Routingprotokoll (Schicht3 im TCP/IP-Referenzmodell). Auf IPv4 werden weitere Protokolle aufgesetzt, d. h. in den Datenteil des IP-Pakets werden die Header, Daten und evtl. Trailer der oberen Protokolle eingefügt (Protokollstapel).
Neben dem erwähnten ICMP wird TCP verwendet, das TCP/IP zusammen mit IP den Namen gegeben hat. TCP ist ein verbindungsorientiertes Protokoll, das einen byteorientierten, bidirektionalen, zuverlässigen Datenstrom zur Verfügung stellt. Es wird im WAN-Bereich praktisch immer alle Arten von Daten- und Informationsübertragungen eingesetzt.
Zu TCP/IP gehört auch UDP, ein paketorientiertes Protokoll. Es ist ein einfaches Protokoll, das die Paketeigenschaften von IP im wesentlichen beibehält (verbindungslos, unzuverlässig, Verdoppelung etc.). TCP und UDP fügen IP eine Prüfsumme über die Daten (die Prüfsumme im IP-Header prüft nur die Headerdaten), sowie eine 16-Bit Zahl jeweils als Quell- und Zielport hinzu. Diese Ports bilden zusammen mit der jeweiligen Quell- und Zieladresse im IP-Paket sogenannte Endpunkte. Prozesse kommunizieren über diese Endpunkte. TCP baut eine z. B. eine Verbindung nicht zwischen IP-Adressen, sondern zwischen zwei Endpunkten auf.
Die weiteren Protokolle setzen alle entweder auf TCP oder auf UDP auf. Ein wichtiges Protokoll ist das Domain Name System DNS, das eine Umsetzung von Rechnernamen zu IP-Adressen erlaubt. Es überträgt Informationen normalerweise über UDP, der Abgleich zwischen zwei DNS-Servers kann aber auch das TCP-Protokoll verwenden.