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 |
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 servers 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
|
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 |