4

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 if so?

6

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 '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 '18 at 15:21

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.