Damit in einem lokalen Netz ein System das andere findet, werden zusätzlich zu IP-Adressen im Medium Ethernet noch spezifische Adressen für die physischen Netzadapter verwendet, die einzelne Systeme an ein Netzwerk anschließen. Schickt ein System ein Datenpaket an ein anderes im gleichen lokalen Netzwerk, so wird zunächst zur Ziel-IP-Adresse die passende MAC-Adresse gesucht. Dann kann das Datenpaket mit der korrekten MAC-Adresse für das Ziel versandt werden. Jedes System auf einem lokalen Netz „hört“ nur auf Pakete, die seine eigene MAC-Adresse tragen (und natürlich Broadcasts, die per Definition an alle Systeme auf einem lokalen Netz gehen).
MAC-Adressen bestehen aus sechs Bytes und müssen innerhalb eines lokalen Netzes eindeutig sein. Die ersten drei Bytes identifizieren den Hersteller der Netzwerkkarte, die letzte drei sind eine eindeutige Kennzeichnung. Eine Tabelle von Herstellercodes ist online verfügbar.
Jeder Rechner, der an einem Netzwerk angeschlossen ist, hält eine Tabelle der bekannten MAC-Adressen und ihrer Zuordnung zu IP-Adressen, um allzu häufige Nachfragen im Netz zu vermeiden. Unter Windows und Unix kann diese Tabelle abgefragt werden mit „arp -a“:
$ arp -a Schnittstelle: 10.0.0.20 --- 0x2 Internetadresse Physikal. Adresse Typ 10.0.0.1 00-0f-b5-fa-4a-f9 dynamisch 10.0.0.2 00-0e-08-ca-67-ca dynamisch 10.0.0.3 00-15-0c-36-f7-97 dynamisch 10.0.0.10 00-04-76-45-71-e8 dynamisch
Der Typ „dynamisch“ gibt dabei an, daß das System selbst durch Nachfrage im Netz diese Adresse gefunden hat. Nach einer gewissen Zeit veraltet dieser Eintrag und wird gelöscht, so daß eine neue Abfrage gestartet werden muß.
Man kann durch „ping“ oder eine andere Art des Verbindungsaufbaus zu einem Rechner erzwingen, daß nach einer MAC-Adresse für einen bestimmten Zielrechner gesucht wird und diese in der genannten Tabelle dann aufgeführt ist.
Tauchen in der Ausgabe von „arp -a“ MAC-Adressen doppelt und mehrfach mit verschiedenen IP-Adressen auf, so kann dies zwei Gründe haben:
Möchte man eine ggf. geänderte MAC-Adresse zu einer IP-Adresse (z.B. 10.0.0.10) herausfinden, so wird zunächst der bestehende Eintrag per „arp -d 10.0.0.10“ gelöscht, ein neuer durch Anforderungen von „ping 10.0.0.10“ angelegt und wieder mit „arp -a“ inspiziert.