*************************************
The following is a limited general description of the steps that take place, when a new DHCP client (one that hasn't already been issued an IP from this server) attempts to obtain an IP. I am ignoring reservations and several other variations.
==============================================
When a DHCP client boots, it issues a DHCPDiscover. This is a broadcast to locate any DHCP servers with IPs available for the client's segment. Because DHCPDiscover is a broadcast, it will (in most cases) not cross routers. So, if your DHCP server isn't on the same segment as the client, the packet must be forwarded to the DHCP server by either a DHCP relay agent or a router with bootp/DHCP forwarding enabled.
When the DHCP server receives a DHCPDiscover, it checks to see, whether the discover was forwarded (by a DHCP relay or router) or received directly from a client on the local segment.
The DHCP server checks its scopes to see, if any are defined for the same subnet as the IP on which the initial DHCPDiscover broadcast was received (byt the DHCP server or the DHCP relay agent). If it finds a matching scope, it checks for available IPs in that scope. If it has any available, it will send a DHCPOffer (containing the offered IP) back to the client.
The DHCP client collects all DHCPOffer replies (every DHCP server with an IP to offer will have replied) and selects one (almost always the first one received). The client sends out a DHCPRequest, requesting the selected I from the selected DHCP server. The DHCP server replies with a DHCPAck, indicating that the client now owns that IP (at least for the duration of the lease).
================================================
Rules for MS DHCP servers and clients:
*************************************