「DCHP」- 工作过程

  CREATED BY JENKINSBOT

首次接入网络

#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 而异。