arp(7) arp(7)
NAME
arp - Adressenumsetzungsprotokoll
BESCHREIBUNG
ARP (Address Resolution Protocol) ist ein Protokoll, das zur dynami-
schen Umsetzung von Internet Protocol (IP) Adressen auf MAC-Adressen
von Ethernet-, FDDI- und Token-Ring-Schnittstellen benutzt wird. Das
STREAMS-Gerät /dev/arp ist keine TLI-Transportvorrichtung (Transport
Level Interface) und darf nicht zusammen mit der Schnittstelle TLI
benutzt werden.
ARP puffert Einträge für die Adressenumsetzung. Wenn eine Schnitt-
stelle eine Adressenumsetzung anfordert, die nicht im Puffer vorhanden
ist, reiht ARP das Paket, das die Umsetzung benötigt, in die Wartesch-
lange ein und gibt eine entsprechende Meldung auf dem zugehörigen Net-
zwerk aus und fordert damit die Adressenumsetzung an. Wenn eine Ant-
wort erfolgt, wird die neue Umsetzung gepuffert und das wartende Paket
übertragen. ARP kann maximal ein Paket in die Warteschlange einreihen,
während es auf die Antwort auf eine Umsetzungsanforderung wartet. Es
wird immer nur das letzte "übertragene" Paket aufgehoben.
Um die Kommunikation mit Systemen zu erleichtern, die kein ARP verwen-
den, sind ioctl()-Aufrufe vorhanden, mit denen Einträge in den Umset-
zungstabellen erzeugt oder gelöscht werden können.
ANWENDUNG
#include <sys/sockio.h>
#include <sys/socket.h>
#include <net/if.h>
#include <net/ifarp.h>
struct arpreq arpreq;
int d;
struct arpreq;
struct strioctl ioc;
d=open ("/dev/arp", ORDWR);
ioc.iccmd = cmd; /* cmd ist SIOCSARP oder
SIOCGARP oder SIOCDARP */
ioc.ictimeout = 0;
ioc.iclen = sizeof(struct arpreq);
ioc.icdp = &arpreq;
ioctl(d, ISTR, (caddrt)&ioc);
Jeder ioctl()-Aufruf benutzt die gleiche Struktur als Argument. SIOC-
SARP erzeugt einen ARP-Eintrag, SIOCGARP liest einen ARP-Eintrag zu
und SIOCDARP löscht einen ARP-Eintrag. Diese ioctl()-Aufrufe können
über jeden Socketdeskriptor s der Internet-Familie oder über den
Deskriptor eines ARP-Geräts erfolgen, allerdings nur durch einen pri-
viligierten Benutzer. Die arpreq-Struktur enthält folgende Informa-
tion:
/*
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
arp(7) arp(7)
* ARP ioctl request
*/
struct arpreq {
struct sockaddr arppa; /* Protokolladresse */
struct sockaddr arpha; /* Hardware Adresse */
int arpflags; /* Schalter */
};
/* Werte für arpFlags */
#define ATFCOM 0x2 /* vollst. Eintrag (arpha valid) */
#define ATFPERM 0x4 /* permanenter Eintrag */
#define ATFPUBL 0x8 /* (Antwort für anderen Host) */
#define ATFUSETRAILERS 0x10 /* Trailer-Pakete an Host */
Die Adreßfamilie für die Socket-Adresse arppa muß AFINET sein; für
die Socket-Adresse arpha muß sie AFUNSPEC sein. Die einzigen Schal-
ter, die angegeben werden dürfen, sind ATFPERM, ATFPUBL und
ATFUSETRAILERS. ATFPERM macht den Eintrag permanent, wenn der
ioctl()-Aufruf erfolgreich war. Aufgrund der besonderen Natur der
ARP-Tabellen kann die ioctl()-Aufruf abgewiesen werden, wenn zuviele
permanente IP-Adressen auf die gleiche Position verweisen. ATFPUBL
gibt an, daß der ARP-Code auf externe Anforderungen für den gegebenen
Rechner antworten soll. Dies ermöglicht es einem lokalen Rechner, sich
wie ein "ARP-Server" zu verhalten, was dann besonders nützlich sein
kann, wenn eine Verbindung von einem "Nur-ARP-Gerät" zu einem "Nicht-
ARP-Gerät" hergestellt werden soll.
Die IP-Trailer-Encapsulation wird derzeit von Reliant UNIX nicht
unterstützt. Deshalb ist der Schalter ATFUSETRAILERS ohne Bedeutung.
ARP überwacht das Netz passiv auf ARP-Antworten anderer Rechner, die
auf Anforderungen für den lokalen Rechner antworten.
SIEHE AUCH
arp(1M), ifconfig(1M), if(7), inet(7).
LITERATUR
Plummer, Dave, An Ethernet Address Resolution Protocol -or- Converting
Network Protocol Addresses to 48.bit Ethernet Addresses for
Transmission on Ethernet Hardware, RFC 826, Network Information
Center, SRI International, Menlo Park, Calif., November 1982.
Leffler, Sam, and Michael Karels, Trailer Encapsulations, RFC 893,
Network Information Center, SRI International, Menlo Park, Calif.,
April 1984.
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98