一、DHCP简介
DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)用来为网络设备动态地分配 IP地址等网络配置参数。
DHCP 采用客户端/服务器通信模式,由客户端向服务器提出请求分配网络配置参数的申请,服务器返回为客户端分配的 IP 地址等配置信息,以实现 IP 地址等信息的动态配置。
在DHCP的典型应用中,一般包含一台DHCP服务器和多台客户端(如PC和便携机)
二、DHCP的IP地址分配
1. IP地址分配策略
针对客户端的不同需求,DHCP 提供三种 IP 地址分配策略:
- 手工分配地址:由管理员为少数特定客户端(如 WWW 服务器等)静态绑定固定的 IP 地址。通过 DHCP 将配置的固定 IP 地址分配给客户端。
- 自动分配地址:DHCP 为客户端分配租期为无限长的 IP 地址。
- 动态分配地址:DHCP 为客户端分配具有一定有效期限的 IP 地址,到达使用期限后,客户端需要重新申请地址。绝大多数客户端得到的都是这种动态分配的地址。
2. IP地址获取过程
DHCP客户端从DHCP服务器获取IP地址,主要通过四个阶段进行:
- 发现阶段,即 DHCP 客户端寻找 DHCP 服务器的阶段。客户端以广播方式发送DHCP-DISCOVER 报文。
- 提供阶段,即 DHCP 服务器提供 IP 地址的阶段。DHCP 服务器接收到客户端的DHCP-DISCOVER 报文后,根据 IP 地址分配的优先次序选出一个 IP 地址,与其他参数一起通过 DHCP-OFFER 报文发送给客户端。
- 选择阶段,即 DHCP 客户端选择 IP 地址的阶段。如果有多台 DHCP 服务器向该客户端发来DHCP-OFFER 报文,客户端只接受第一个收到的 DHCP-OFFER 报文,然后以广播方式发送DHCP-REQUEST 报文,该报文中包含 DHCP 服务器在 DHCP-OFFER 报文中分配的 IP 地址。
- 确认阶段,即 DHCP 服务器确认 IP 地址的阶段。DHCP 服务器收到 DHCP 客户端发来的DHCP-REQUEST 报文后,只有 DHCP 客户端选择的服务器会进行如下操作:如果确认将地址分配给该客户端,则返回 DHCP-ACK 报文;否则返回 DHCP-NAK 报文,表明地址不能分配给该客户端。
客户端收到服务器返回的 DHCP-ACK 确认报文后,会以广播的方式发送免费 ARP 报文,探测是否有主机使用服务器分配的 IP 地址,如果在规定的时间内没有收到回应,客户端才使用此地址。否则,客户端会发送 DHCP-DECLINE 报文给 DHCP 服务器,并重新申请 IP 地址。
如果网络中存在多个 DHCP 服务器,除 DHCP 客户端选中的服务器外,其它 DHCP 服务器中本次未分配出的 IP 地址仍可分配给其他客户端。
3. IP地址的租约更新
DHCP 服务器分配给客户端的 IP 地址具有一定的租借期限(除自动分配的 IP 地址),该租借期限称为租约。当租借期满后服务器会收回该 IP 地址。如果 DHCP 客户端希望继续使用该地址,则 DHCP客户端需要申请延长 IP 地址租约。
在 DHCP 客户端的 IP 地址租约期限达到一半左右时间时,DHCP 客户端会向为它分配 IP 地址的DHCP 服务器单播发送 DHCP-REQUEST 报文,以进行 IP 租约的更新。如果客户端可以继续使用此 IP 地址,则 DHCP 服务器回应 DHCP-ACK 报文,通知 DHCP 客户端已经获得新 IP 租约;如果此 IP 地址不可以再分配给该客户端,则 DHCP 服务器回应 DHCP-NAK 报文,通知 DHCP 客户端不能获得新的租约。
如果在租约的一半左右时间进行的续约操作失败,DHCP 客户端会在租约期限达到 7/8 时,广播发送 DHCP-REQUEST 报文进行续约。