Illustrated TCP/IP Illustrated TCP/IP
by Matthew G. Naugle
Wiley Computer Publishing, John Wiley & Sons, Inc.
ISBN: 0471196568   Pub Date: 11/01/98
  

Previous Table of Contents Next


Chapter 310
Chicken-or-the-Egg? Dilemma

A question should come to mind here for those who have been following along: If the client does not yet know its IP address, how is it going to respond to the server’s ARP request when the server decides to respond? Well, if the client knows its IP address (as indicated in the Ciaddr field), the BOOTREPLY can be sent as a normal IP packet, since the client will respond to ARPs. But if the client does not yet know its IP address, then the client cannot respond to ARPs sent by the server. There are two options available: If the server has the capability to manually construct an ARP entry in its table for this client, it will do so using the Chaddr and Yiaddr fields that it is responding with in its BOOTREPLY (BSD Unix has this capability). The server will then reply using IP services and skip the ARP process. If the server does not have this capability, then it simply sends the BOOTREPLY with the IP address set to Broadcast (B). This event is shown in the table.

Chicken-or-the-Egg? Dilemma

  If the client does not yet know its IP address, how does it respond to ARP requests during a server response?
  If the client knows its IP address, this is not a problem.
  Two options:
  Simply send the reply set to broadcast
  The server can manually construct the ARP entry using the fields in the received request

ciaddr giaddr B UDP Destination IP Destination Link Destination
non-0 X X BOOTClient (68) ciaddr normal
0.0.0.0 non-0 X BOOTPServer giaddr normal
0.0.0.0 0.0.0.0 0 BOOTPClient (68) yiaddr ‘chaddr’
0.0.0.0 0.0.0.0 1 BOOTPClient (68) 255.255.255.255 broadcastX


Previous Table of Contents Next