Sidebar: ARP Economics
A question that arises frequently is, "If ethernet
is already
a broadcast medium, why can't IP addresses be shared
for local machines?
Why can't a machine sending to 87.65.43.21 simply broadcast
the address to all machines (which is exactly what happens
at the
ethernet level anyway) and then let each machine to
whom the packet
is not addressed discard the packet?"
The problem (and the answer) lies in economics. In terms
of machine
cycles, it is too expensive for every machine to not
only read every
packet at the ethernet level, but to then pass the packet
up into
the kernel itself for an addressing decision. With ARP,
though, that
is exactly what happens. Each ethernet card sees the
ones-filled ethernet
address, copies it into its local register, sees from
the "Type"
field that it is an ARP request, and passes it up to
the ARP module,
which resides in the kernel. Generally, only one machine
will reply
to the ARP request, but every machine will spend the
CPU cycles to
read the request into kernel memory so the operating
system can decide
what to do with it. This is one good reason why ARP
requests are kept
to a minimum and the resultant answers are cached for
later use.
|