Connected: An Internet Encyclopedia
RFC 826 - Packet Reception

Top: Connected: An Internet Encyclopedia
Up: Requests For Comments
Up: RFC 826
Prev: Packet Generation
Next: Why is it done this way??

### Packet Reception

When an address resolution packet is received, the receiving Ethernet module gives the packet to the Address Resolution module which goes through an algorithm similar to the following. Negative conditionals indicate an end of processing and a discarding of the packet.

    ?Do I have the hardware type in ar$hrd?
    Yes: (almost definitely)
      [optionally check the hardware length ar$hln]
      ?Do I speak the protocol in ar$pro?
      Yes:
        [optionally check the protocol length ar$pln]
        Merge_flag := false
        If the pair  is
            already in my translation table, update the sender
    	hardware address field of the entry with the new
    	information in the packet and set Merge_flag to true.
        ?Am I the target protocol address?
        Yes:
          If Merge_flag is false, add the triplet  to
    	  the translation table.
          ?Is the opcode ares_op$REQUEST?  (NOW look at the opcode!!)
          Yes:
    	Swap hardware and protocol fields, putting the local
    	    hardware and protocol addresses in the sender fields.
    	Set the ar$op field to ares_op$REPLY
    	Send the packet to the (new) target hardware address on
    	    the same hardware on which the request was received.

Notice that the triplet is merged into the table before the opcode is looked at. This is on the assumption that communcation is bidirectional; if A has some reason to talk to B, then B will probably have some reason to talk to A. Notice also that if an entry already exists for the pair, then the new hardware address supersedes the old one. Related Issues gives some motivation for this.

Generalization: The ar$hrd and ar$hln fields allow this protocol and packet format to be used for non-10Mbit Ethernets. For the 10Mbit Ethernet takes on the value <1, 6>. For other hardware networks, the ar$pro field may no longer correspond to the Ethernet type field, but it should be associated with the protocol whose address resolution is being sought.

Next: Why is it done this way??

Connected: An Internet Encyclopedia
RFC 826 - Packet Reception