首页 > 编程笔记 > TCP/IP笔记

DHCP协议工作流程剖析

DHCP 服务是用来分配 IP 地址的,所以 DHCP 服务器必须使用静态分配方式设置 IP 地址。而 DHCP 客户端可以从 DHCP 服务器上获取使用的 IP 地址。DHCP 服务器使用的是 UDP 67 端口,DHCP 客户端使用的是 UDP 68 端口。

本节将详细讲解 DHCP 工作方式的 4 个阶段,即发现阶段、提供阶段、选择阶段和确认阶段。

发现阶段(DHCP Discover)

DHCP 客户端向所有 DHCP 服务器的 UDP 67 端口发送广播数据包以获取 IP 地址租约,这个数据包被称为 DHCP Discover 消息。任何收到这个包的 DHCP 服务器都可以响应这个请求。

整个发现阶段的工作方式如图所示。

其中,DHCP 客户端向 DHCP 服务器 A 和 B 都发送了 DHCP Discover 广播包。

提供阶段(DHCP Offer)

DHCP 服务器收到 DHCP Discover 广播包后会检查自己的配置,并发起 DHCP Offer 广播消息进行响应,为 DHCP 客户端提供可用的 IP 地址。该响应包以广播的形式发送到 DHCP 客户端的 UDP 68 端口上。

整个提供阶段的工作方式如图所示。

其中,DHCP 服务器 A 和 B 都会向 DHCP 客户端提供自己管理的地址。

选择阶段(DHCP Request)

DHCP 客户端收到地址信息后,会选择第一个到达的租约地址信息。然后发起 DHCP Request 广播消息,告诉所有 DHCP 服务器,自己已经做出选择,接受了第一个 DHCP 服务器的地址。

整个选择阶段的工作方式如图所示。

其中,DHCP 客户端向 DHCP 服务器 A 和 B 都发送了 DHCP Request 消息广播包,告诉自己选择了 DHCP 服务器 B 的地址租约。

确认阶段(DHCP ACK)

DHCP 服务器 A 和 B 都收到客户端发来的 DHCP Request 消息广播包。DHCP 服务器 B 查看信息后,发现客户端选择了自己的地址租约,将返回 DHCP ACK 广播消息进行最后的确认。DHCP 服务器 A 查看信息以后,发现客户端没有选择自己的地址,将不返回信息。

整个确认阶段的工作方式如图所示。

其中,服务器 B 向客户端返回了地址租用的 DHCP ACK 包,对客户端的请求进行确认。DHCP 服务器 A 没有返回信息,因其地址没有被租用。

IP 续期

客户端从服务器租用 IP 地址会有一个固定的租约期。除了租约期限外,还有两个时间值 T1 和 T2。其中,T1 定义为租约期限的一半,而 T2 定义为租约期限的 7/8。

假设,租约期为 8 天。当到达 T1 定义的时间(4 天)期限时,客户端会向提供租约的原始服务器发送 DHCP Request 包,对租约进行更新。如果服务器接受此请求,则回复 DHCP ACK 消息,包含更新后的租约期限;如果不接受租约更新请求,就不会发送 DHCP ACK 包。

此后,DHCP 客户端会定时发送 DHCP Request 包。如果一直都没有得到确认,则继续使用此 IP 地址,直到 T2 定义的时间(7 天)限制。此时,客户端会广播发送 DHCP Request 包,对租约进行更新。

如果租期到达时,客户端既不能更新自己的租期,也无法从其他的 DHCP 服务器获得新的租期,客户端必须停止使用这个 IP 地址,从而停止常规的 TCP/IP 网络操作。

所有教程

优秀文章