- Home
-
How DHCP Works
How DHCP Works Cheatsheet
Comprehensive guide to DHCP (Dynamic Host Configuration Protocol) covering the 4-step DORA process (Discover, Offer, Request, Acknowledge), message types, lease management, server configuration, troubleshooting, and best practices for automatic IP address allocation.
Building a resilient DHCP design? Refresh the fundamentals on our main dashboard and track live VPS performance on the performance dashboard before rolling out changes.
When selecting infrastructure, browse the benchmark reports, stack plans side-by-side in the VPS comparison tool, and evaluate each vendor inside our provider directory.
Free account required
What is DHCP?
DHCP (Dynamic Host Configuration Protocol) automatically assigns IP addresses and network configuration to devices on a network. It uses a 4-step process (DORA) to dynamically allocate IP addresses, eliminating the need for manual configuration.
Need to validate supporting services? Run quick checks with our network tools suite, trace packet flows with the TCP handshake cheatsheet, and revisit DNS fundamentals via the DNS reference guide to keep name resolution aligned with your DHCP scopes.
Table of Contents
DORA Process - How DHCP Works
The Four Steps (DORA)
Discovery stage: Client broadcasts a DHCP Discover message to locate available DHCP servers on the network.
Source: 0.0.0.0:68 → Destination: 255.255.255.255:67 (Broadcast)
Message Type: DHCPDISCOVER
Client MAC: AA:BB:CC:DD:EE:FF
Offer stage: DHCP servers respond with a DHCP Offer message, proposing an IP address lease along with other configuration parameters.
Message Type: DHCPOFFER
Offered IP: 192.168.1.100
Subnet Mask: 255.255.255.0
Gateway: 192.168.1.1
DNS: 8.8.8.8, 8.8.4.4
Lease Time: 86400 seconds (24 hours)
Request stage: Client selects one of the offered IP addresses and sends a DHCP Request message to the chosen DHCP server, requesting the lease.
Message Type: DHCPREQUEST
Requested IP: 192.168.1.100
Server Identifier: 192.168.1.1
Client MAC: AA:BB:CC:DD:EE:FF
Acknowledge stage: The DHCP server acknowledges the client's request by sending a DHCP Acknowledge (ACK) message, confirming the allocation and providing additional configuration.
Message Type: DHCPACK
Assigned IP: 192.168.1.100
Lease Start: Now
Lease Expiration: 86400 seconds
Client can now use the network!
Network Ports Used
Key Information Provided by DHCP
- IP Address: Unique address for the device
- Subnet Mask: Network segmentation information
- Default Gateway: Router IP for internet access
- DNS Servers: Domain name resolution servers
- Lease Time: Duration the IP address is valid
- NTP Servers: Time synchronization (optional)
- Domain Name: Local domain suffix (optional)
DHCP Message Types
Message Type | Direction | Purpose |
---|---|---|
DHCPDISCOVER | Client → Server | Broadcast to find available DHCP servers |
DHCPOFFER | Server → Client | Offer IP address and configuration parameters |
DHCPREQUEST | Client → Server | Request offered IP or renew/rebind existing lease |
DHCPACK | Server → Client | Acknowledge and confirm IP address assignment |
DHCPNAK | Server → Client | Deny request (IP no longer available or invalid) |
DHCPDECLINE | Client → Server | Client declines offered IP (already in use) |
DHCPRELEASE | Client → Server | Client voluntarily releases IP address |
DHCPINFORM | Client → Server | Request local configuration (client has static IP) |
DHCP Lease Process
Lease Timeline
Client receives IP address and starts using it
Client attempts to renew lease with original DHCP server (unicast DHCPREQUEST)
If T1 renewal fails, client broadcasts DHCPREQUEST to any DHCP server
If no renewal, client must stop using IP and restart DORA process
Example: 24-Hour Lease
Lease Duration: 86400 seconds (24 hours)
T0 (Start): 0:00 - IP assigned
T1 (Renewal): 12:00 (50%) - Client tries to renew with original server
T2 (Rebind): 21:00 (87.5%) - Client broadcasts to any server
T3 (Expire): 24:00 (100%) - Lease expires, must restart DORA
Lease Renewal Process
DHCP Server Configuration
ISC DHCP Server (Linux)
# /etc/dhcp/dhcpd.conf
# Basic configuration
default-lease-time 86400;
max-lease-time 172800;
authoritative;
# Subnet declaration
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.100 192.168.1.200;
option routers 192.168.1.1;
option subnet-mask 255.255.255.0;
option domain-name-servers 8.8.8.8, 8.8.4.4;
option domain-name "example.local";
}
# Static IP reservation (by MAC address)
host printer {
hardware ethernet 00:11:22:33:44:55;
fixed-address 192.168.1.10;
}
dnsmasq (Lightweight Option)
# /etc/dnsmasq.conf
# Interface to listen on
interface=eth0
# DHCP range and lease time
dhcp-range=192.168.1.100,192.168.1.200,255.255.255.0,24h
# Gateway
dhcp-option=3,192.168.1.1
# DNS servers
dhcp-option=6,8.8.8.8,8.8.4.4
# Static lease by MAC
dhcp-host=00:11:22:33:44:55,192.168.1.10,printer
Windows DHCP Server
# PowerShell commands
# Install DHCP Server role
Install-WindowsFeature DHCP -IncludeManagementTools
# Create DHCP scope
Add-DhcpServerv4Scope -Name "Office Network" `
-StartRange 192.168.1.100 `
-EndRange 192.168.1.200 `
-SubnetMask 255.255.255.0 `
-LeaseDuration 1.00:00:00
# Set scope options
Set-DhcpServerv4OptionValue -ScopeId 192.168.1.0 `
-Router 192.168.1.1 `
-DnsServer 8.8.8.8,8.8.4.4
Common DHCP Options
Option | Number | Purpose |
---|---|---|
Subnet Mask | 1 | Network subnet mask |
Router/Gateway | 3 | Default gateway IP |
DNS Server | 6 | DNS server addresses |
Domain Name | 15 | DNS domain suffix |
NTP Server | 42 | Time synchronization |
Lease Time | 51 | IP address lease duration |
Troubleshooting DHCP Issues
Common Issues
Symptoms: Client gets 169.254.x.x address (APIPA/link-local)
Causes: No DHCP server reachable, network cable unplugged, DHCP server down
# Linux: Check DHCP client status
$ sudo systemctl status dhclient
$ sudo journalctl -u dhclient
# Windows: Release and renew
C:\> ipconfig /release
C:\> ipconfig /renew
Symptoms: Intermittent connectivity, "IP address conflict" error
Causes: Static IP overlaps with DHCP range, rogue DHCP server
# Linux: Check for duplicate IPs
$ sudo arping -D -I eth0 192.168.1.100
# Scan for rogue DHCP servers
$ sudo nmap --script broadcast-dhcp-discover
Symptoms: New devices can't get IP, existing leases work fine
Causes: Too many devices, lease time too long, zombie leases
# Check active leases (ISC DHCP)
$ sudo dhcp-lease-list
$ cat /var/lib/dhcp/dhcpd.leases
# dnsmasq
$ cat /var/lib/misc/dnsmasq.leases
Symptoms: Long delay before getting IP address
Causes: Server overloaded, network latency, spanning tree delays
# Capture DHCP traffic
$ sudo tcpdump -i eth0 -n port 67 or port 68
# Monitor server performance
$ sudo systemctl status isc-dhcp-server
$ top -p $(pidof dhcpd)
DHCP Client Commands
# Linux - Release and renew
$ sudo dhclient -r eth0 # Release
$ sudo dhclient eth0 # Renew
# Alternative: NetworkManager
$ sudo nmcli con down "Wired connection 1"
$ sudo nmcli con up "Wired connection 1"
# Windows
C:\> ipconfig /release
C:\> ipconfig /renew
C:\> ipconfig /all # View DHCP info
# macOS
$ sudo ipconfig set en0 DHCP
Packet Capture Analysis
# Capture DHCP traffic
$ sudo tcpdump -i any -n -vv port 67 or port 68
# With Wireshark filter
bootp
# Expected output for successful DORA:
1. DHCPDISCOVER (broadcast)
2. DHCPOFFER (from server)
3. DHCPREQUEST (broadcast)
4. DHCPACK (from server)
DHCP Best Practices
Optimize Your Network Infrastructure
Understanding DHCP is essential for efficient network management. Check our VPS benchmarks to find providers with reliable networking performance and enterprise-grade infrastructure for your DHCP servers.
Looking for our methodology? Meet the team on the About page, or tell us about your network rollout via the contact form. Before collecting user data, review the safeguards outlined in our privacy policy.
Continue sharpening your skills with companion guides such as the Linux networking commands cheatsheet and our cloud platform models reference, then monitor infrastructure benchmarks on the performance dashboard as you scale DHCP services across providers.