2

I realise BOOTP is a legacy system, but this is for my reading for my studies.

Consider a client, C, that is bootstrapping itself. It sends a BOOTP request to the server—obviously because it does not know its server location yet. C sends a BOOTP request with all the usual information: its hardware address, the (blank) IP, the transaction ID, the server IP address, the gateway IP address, etc., etc.

Its server, S, receives the BOOTP request whilst listening at port 67. In the datagram, S finds the hardware address of C. S already knows the network location of C, which is 135.135.10.3.

Given that S knows the hardware address of C, why can't the server just send the BOOTP reply to C using the hardware address?

My textbook says this isn't possible, because if S did try to do this, the server's host (whatever that is—if someone could explain I would be grateful) would broadcast an ARP request to C, which doesn't know its IP and would respond with an ICMP error (I'm assuming).

Why would this mysterious host decide to do this? Why can't S just send the thing to C with the hardware address it has been given? What's the point of sending a hardware address if it can't?

Thanks to everyone that took the time to read this!

1

(BOOTP exists within DHCP these days)

The process starts with the client sending a broadcast request as it generally will not know any server address(es) -- src ip will be zero, since it doesn't have an address yet. The server will look up the MAC within the request to form an answer. How that answer gets back requires a bit more thought. If the server sends a simple unicast reply, it will need an arp cache entry to know where to send it. The normal ARP discovery mechanism won't work because the client doesn't have its address yet. So, the server must either update it's ARP cache prior to sending the answer, or send the answer as a broadcast message. (or bypass the host layer-3/4 processing by forming it's own layer-2 packet and sending it directly)

Furthermore, the server cannot assume the client is on the same wire. So, the answer must be sent to where ever the request came from -- i.e. any possible relay agent, not the hardware address within the request.

| improve this answer | |
  • Ahhhh I see! Maybe my rudimentary understanding of ARP requests is impeding my full comprehension of BOOTP. If one host sends an ARP request to another, it only involves the two parties, right? (If we just forget that the request and reply are broadcasted.) – MPKenning May 19 '15 at 11:11

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.