Das bekannteste und verbreitetste Beispiel ist Ethernet. In seiner "Urform" sind alle Rechner an ein Koaxkabel angeschlossen (mittlerweile gibt es zahlreiche Variationen, die Sie später kennenlernen werden):
Es ist leicht einzusehen, daß die von einem Rechner abgesendeten Datenpakete, rein elektrisch betrachtet, erst einmal bei jedem anderen Rechner ankommen. Damit nun nicht jeder Rechner alle Pakete auswerten muß, hat man jedem Rechner eine Ethernet-Adresse fest zugeordnet.
Diese Adresse ist 48 Bit lang und üblicherweise bereits in der Netzhardware (d.h. auf der Ethernet-Adapterkarte) festgelegt. Der Ethernet-Adapter empfängt im Normalfall nur Pakete (oder besser "Rahmen") mit seiner eigenen Ethernet-Adresse als Ziel.
Will man ein IP-Paket über Ethernet transportieren, wird folgendes Paketformat übertragen:
Sie werden sich vielleicht fragen, warum hier wieder neue Adressen eingeführt werden, wo doch schon in der IP-Schicht Adressen vorhanden sind. Der Grund dafür ist einmal darin zu suchen, daß Ethernet und Internet-Technologie nebeneinander entwickelt wurden, außerdem wollte man auch andere Netzwerk-Protokolle neben IP auf Ethernet verwenden können (z.B. Novell-IPX, AppleTalk, DECnet, ...).
Zur Unterscheidung dieser verschiedenen Netzwerk-Protokolle dient das Typ-Feld, für das hier einige Beispiele angegeben sind (hexadezimal):
IP | 0x0800 |
ARP | 0x0806 |
DECnet | 0x6003 |
Apple Talk | 0x809b |
Novell IPX | 0x8137 |
Wenn man (was selten vorkommt) einmal direkt mit Ethernetadressen zu tun hat, werden diese in Form von 6 Hexadezimalzahlen (00 ... ff) geschrieben, z.B.
08:00:1e:01:c9:64Auf diese Weise sind Verwechslungen mit IP-Adressen ausgeschlossen.
Neben Rahmen, die seine eigene Adresse als Ziel enthalten, empfängt ein Ethernet-Adapter auch alle Rahmen, die an die Ethernet-Broadcast-Adresse ff:ff:ff:ff:ff:ff sowie möglicherweise an Ethernet-Multicastadressen gerichtet sind (dazu später mehr).
In unserem Beispielnetz hat also jeder Rechner eine Ethernet-Adresse und (natürlich) auch eine IP-Adresse:
Sie sehen, daß die IP-Adressen zu dem Klasse-C-Netz 200.0.1 gehören. Die Ethernet-Adressen sind ja bekanntlich durch die Ethernet-Hardware vorgegeben und scheinen eher zufällig zu sein.
Ethernet-Adressen sind (wie die IP-Adressen) weltweit eindeutig, allerdings nicht, weil man ein weltweites Ethernet bauen wollte (das geht nicht), sondern weil sich in einem beliebigen Ethernet keine zwei gleichen Ethernet-Adressen "treffen" dürfen. Das wird so erreicht, daß jedem Hersteller von Ethernet-Karten die ersten 24 Bit fest zugeordnet werden. Die letzten 24 Bit kann er fortlaufend vergeben.
In unserem obigen Beispiel stammen also die Ethernet-Karten von A und B wohl vom gleichen Hersteller.Beim Betrieb dieses Netzes entsteht aber ein Problem. Bei einem Kommunikationswunsch ist normalerweise nur die IP-Zieladresse bekannt (oder sie wurde vom Domain Name System aus dem symbolischen Namen bestimmt). Um das IP-Paket in einem Ethernet-Rahmen zustellen zu können, brauchen wir jedoch auch die Ethernetadresse des Zielrechners. Hier gibt es mehrere Möglichkeiten:
Könnte man die Ethernet-Adressen als "Internet-Adressen"
verwenden, wenn man einfach im IP-Kopf 48 Bit statt 32 Bit vorsieht?
Man würde damit die IP-Adreßvergabe sparen, denn die Ethernet-Adressen
sind ja bereits weltweit eindeutig.
Der Ablauf des ARP-Protokolls ist recht einfach:
Am Format eines ARP-Pakets kann man erkennen, daß das Protokoll neben IP auf Ethernet auch andere Kombinationen zuläßt:
Hardware-Typ gibt die Art der hardwarenahen Adresse an. Im Falle von Ethernet wird der Wert 1 verwendet.
Protokolltyp gibt das verwendete Netzwerk-Protokoll an. Im Falle von IP steht hier der Wert 0x0800, d.h., hier gilt dieselbe Festlegung wie beim am Anfang dieses Abschnitts erläuterten Ethernet-Typ.
Hardware-Länge gibt die Länge der hardwarenahen Adressen in Bytes an. Bei Ethernet sind das 6 Byte.
Protokoll-Länge ist dementsprechend die Länge der Netzwerk-Adresse in Bytes, bei IP also 4 Byte.
Operation gibt an, ob es sich um eine Anfrage oder eine Antwort handelt:
Damit das ARP-Protokoll nicht für jedes IP-Paket erneut ausgeführt werden muß, merkt sich ein Rechner die Ethernetadressen der "in letzter Zeit" angesprochenen Ziele in einem ARP-Cache.
Ein Sonderfall entsteht, wenn nicht der Rechner mit der Ziel-IP-Adresse antwortet, sondern ein speziell dafür konfigurierter "ARP-Server". Diese Variante bezeichnet man als Proxy-ARP (der ARP-Server antwortet "stellvertretend" für den eigentlich gemeinten Rechner). Man setzt diese Variante in folgenden Situationen ein: