When I look at the protocol, I see that DHCP Request and Acknowledgement are both broadcast in the link layer. However at that point, both sides actually know each other's MAC addresses. Why do they not unicast the messages?

up vote 5 down vote accepted

From RFC 2131 "Dynamic Host Configuration Protocol"

Remembering that there can be multiple DHCP servers, the DHCPREQUEST is broadcast because:

Those servers not selected by the DHCPREQUEST message use the message as notification that the client has declined that server's offer. [p16]

Those other servers potentially reserved an address in their pool for this client, and it can be marked as unused if the server knows that the client doesn't want it.

The DHCPACK is broadcast if the client asks for it (because it's in a partially configured state, or just for its convenience):

To work around some clients that cannot accept IP unicast datagrams before the TCP/IP software is configured [there is] the BROADCAST (B) flag. [p11]

If the broadcast bit is not set and [various conditions] then the server unicasts DHCPOFFER and DHCPACK [...] If [other conditions] then the server broadcasts DHCPOFFER and DHCPACK messages [p23]

  • DHCP Request IP destination address is broadcast as well. Both MAC and IP addresses are broadcasted in the Request, then, is there something in the payload that tells certain DHCP server that it has been chosen and others that they have not been chosen? – Ninja Bug Aug 18 at 15:13
  • 2
    In the DHCPREQUEST, a non-chosen server sees a requested IP address that it didn't offer, for the given client identifier. – jonathanjo Aug 18 at 15:21

Your Answer

 
discard

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

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