[comp.protocols.tcp-ip] A host sending an ARP request to itself?

hom@sjsumcs.UUCP (Hom Bahmanyar) (07/08/88)

We have an ethernet in our Math & Computer Science Department that has a
Sequent Balance, a Convergent Technologies Miniframe, and more than 50
PC compatibles on it.  The Sequent and the PC's work perfectly on the
network (for example with PC-NFS); however, the Convergent machine has
some problems with the network:  Commands such as telnet and ftp to or
from the Convergent machine always fail but other commands such as rwho
and ruptime from the Sequent show the Convergent host as being on the
network.  Also the Convergent host never responds to pings from the
Sequent or the PC's.  After we checked all the network setup files and
couldn't find anything wrong, I wrote a simple ethernet monitor program
for one of the PC's that receives all the packets directly from the PC's
3c501 ethernet controller and displays them on the screen.  To my surprise,
I saw that the Convergent host was sending an ARP request about every 5
seconds to itself to resolve its own IP address.  That is, in the ARP
packet there were:
	sender's physical addr:		Convergent host's ethernet addr
	sender's IP addr:		Convergent host's IP addr
	target's physical addr:		0 0 0 0 0 0
	target's IP addr:		Convergent host's IP addr

But why would the Convergent host want to resolve its own address when
it already knows its ethernet address?

Any help you can give me on this will be greatly appreciated.

----

Hom Bahmanyar	(408) 924-5107
San Jose State University, Math & Computer Science Department
San Jose, CA 95192-0103
...!{sun,ames,pyramid,hplabs}!sjsumcs!hom

slevy@UC.MSC.UMN.EDU ("Stuart Levy") (07/09/88)

It's probably trying to tell the world that it itself (its own IP address)
is at its own Ethernet address... just in case they forgot or otherwise
got confused.  It could also be checking for impostors on the same net,
claiming to be the same IP address as its own.

ARP request packets don't just list the requested IP address;
they also include the requestor's IP and link-layer (e.g. Ethernet) address.

A feature of the algorithm in RFC 826 is that, on receiving an ARP request,
you check whether the -sender's- IP address is in the local ARP table.  If so,
update the table to associate [sender-IP-address, sender-link-layer-address].
(And, of course, also check whether to respond to the ARP request, but that's
another matter.)

This makes it possible to change a host's link-layer address
and notify the world of the fact just by broadcasting any ARP request.
Anyone who thought they knew what the address was will automatically
update their tables.

(Of course it also makes it possible for any bozo who can generate a
bogus ARP packet to cut you off from the world.  This might be a rationale
for sending ARPs periodically, though 5 second intervals seem pretty extreme.)

Further, ARPing for your own IP address should bring a response from anyone
who thinks they're at that address too.  BSD systems print
"duplicate IP address!!" messages when they detect this situation.

	Stuart Levy

leres@ace.ee.lbl.gov (Craig Leres) (07/11/88)

Stuart Levy writes:
> It's probably trying to tell the world that it itself (its own IP address)
> is at its own Ethernet address... just in case they forgot or otherwise
> got confused.  It could also be checking for impostors on the same net,
> claiming to be the same IP address as its own.

I think the best reason for gratuitously broadcasting an arp reply
for yourself is to force hosts you were talking to (say, before you
shutdown, swapped your ethernet interface, and rebooted) to learn your
new hardware ethernet address.

		Craig