「DCHP」- 工作过程

首次接入网络

#1 发现阶段

即 DHCP Client 发现 DHCP Server 的阶段

DHCP Client 以广播方式发送 DHCP DISCOVER 报文来发现 DHCP Server;

在 DHCP DISCOVER 中,携带 Client 的 MAC Address、需要请求的参数列表选项、广播标志位(决定 DHCP Server 回复报文的方式)等信息;

#2 提供阶段

即 DHCP Server 提供网络配置信息的阶段;

当 DHCP Server 接收到 DHCP DISCOVER 报文后,DHCP Server 响应 DHCP OFFSER 报文,其中包含 DHCP Server 分配给 DHCP Client 的网络配置信息;

DHCP Server 按照如下次序为 DHCP Client 选择 IP-Address:
1)静态绑定的网络地址:DHCP Server 的数据库中与客户端 MAC 地址静态绑定的 IP 地址;
2)已使用过的网络地址:客户端以前曾经使用过的 IP 地址,即客户端发送的请求报文中请求 IP 地址选项的地址;
3)空闲状态的网络地址:在 DHCP 地址池中,顺序查找可供分配的空闲 IP 地址,最先找到的 IP 地址;
4)超过租期的网络地址:如果在 DHCP 地址池中未找到可供分配的空闲 IP 地址,则依次查询超过租期;
5)产生冲突的网络地址:发生冲突的 IP 地址,如果找到可用的 IP 地址,则进行分配,否则报告错误;

Q:此时 DHCP Client 没有 IP Address,那为什么 DHCP Server 能够通过单播回复 DHCP OFFSER 报文?
A:虽然但是 DHCP Server 能够使用 DHCP Client 的 MAC 进行单播回复;

Q:在网络中,某些主机的 IP-Address 是通过手动设置,而非 DHCP Server 动态分配,那 DHCP Server 是否会分配已被占用的地址?
A:DHCP Server 收到 DHCP DISCOVER 报文时,给 DHCP Client 分配 IP Address 前会发送 Ping 探测,如果能 Ping 通则标识该地址不可用,并选择其他 IP Address 分配给 DHCP Client。除了 ping 探测外,某些 DHCP Server 使用 ARP 探测,以避免网络中 ping 被禁用;

华为交换机的 DHCP Server 的行为:
1)对于接口模式:选择跟接收 DHCP DISCOVER 报文接口的 IP Address 处于同一网段的地址池,并且从中选择一个可用的 IP Address 进行分配;

#3 选择阶段

即 DHCP Client 选择 IP Address 的阶段;

在高可用网络中,会存在多个 DHCP Server 运行,这些 DHCP Server 都会向 DHCP Client 回应 DHCP OFFER 报文,所以 DHCP Client 通常只接收首个收到的 DHCP OFFER 报文,然后以广播方式发送 DHCP REQUEST 报文,以确认要使用的网络地址,该报文中包含其想选择的 DHCP Server 标识符和 IP Address 等等;

采用 DHCP Request 广播的原因如下:
1)通知所有 DHCP Server 所使用的地址;
2)且隐含告知其他 DHCP Server 不使用地址;

#4 确认阶段

即 DHCP Server 确认所分配 IP Address 的阶段;

DHCP Server 回复 DHCP ACK 报文,表示同意 DHCP Client 使用该地址;如果 DHCP Server 不同意(比如这期间被占用),则回复 NCK 来拒绝;

DHCP Client 收到 DHCP ACK 报文,而会广播发送 Gratuitous ARP 报文,探测本网段是否有其他终端使用服务器分配的 IP 地址。如果收到 ARP 响应,则发送 DHCP DECLINE 报文通知 DHCP Server 该 IP Address 冲突,DHCP Server 标识该地址不可用,然后 DHCP Client 发送 DHCP DISCOVER 报文重新申请 IP 地址;

续租网络地址

DHCP Client 根据 IP 地址的剩余租期的不同而产生不同形式的续租请求;

#1 50.0%(重绑定定时器)

当租期达到 50.0%(T1)时,DHCP Client 会自动以单播的方式向 DHCP Server 发送 DHCP REQUEST 报文,请求更新 IP 地址租期。

如果收到 DHCP Server 回应的 DHCP ACK 报文,则租期更新成功;

#2 87.5%(租期更新定时器)

当租期达到 87.5%(T2)时,如果仍未收到 DHCP Server 的应答,DHCP Client 会自动以广播的方式向 DHCP Server 发送 DHCP REQUEST 报文,请求更新 IP 地址租期。

如果收到 DHCP Server 回应的 DHCP ACK 报文,则租期更新成功;

#3 100%(到达租期定时器)

如果租期时间到达时,都没有收到服务器的回应,DHCP Client 停止使用此 IP 地址,重新发送 DHCP DISCOVER 报文请求新的 IP 地址;

补充说明

无论在 T1 还是 T2 时刻,当 DHCP Client 发送 DHCP REQUEST 报文后,如果收到 DHCP NAK 报文,则重新发送 DHCP DISCOVER 报文请求新的 IP 地址;

重用曾用地址

Q:为什么每次电脑被分配的 IP 地址都是同一个呢?
A:当释放地址时,部分 DHCP Server 会保留这个 DHCP Client 的配置信息,将 IP 地址列为曾经分配过的 IP 地址中,以便后续重新分配给该 DHCP Client 或其他 DHCP Client。DHCP Client 可以通过发送 DHCP INFORM 报文向 DHCP Server 请求更新配置信息;

DHCP Client 非首次接入网络时,可以重用曾经使用过的地址。例如,网络中的主机作为 DHCP Client,在关机再开机的过程中,需要重新获取相关网络参数,则可以请求分配曾经使用过的 IP 地址;

#1 选择阶段

DHCP Client 广播发送包含前一次分配的 IP 地址的 DHCP REQUEST 报文,报文中的 Option 50(请求的 IP 地址选项)字段填入曾经使用过的 IP 地址;

#2 确认阶段

DHCP Server 收到 DHCP REQUEST 报文后,根据 DHCP REQUEST 报文中携带的 MAC 地址来查找有没有相应的租约记录;
如果有则返回 DHCP ACK 报文,通知 DHCP Client 可以继续使用这个 IP 地址,如果没有租约记录,则不响应;

补充说明

是否支持重用曾经使用过的 IP 地址,因不同 DHCP Client 而异;