目录
一.介绍 DHCPv4
DHCPv4 动态分配 IPv4 地址和其他网络配置信息。DHCPv4 服务器动态地从地址池中分配或出租 IPv4 地址,使用期限为服务器选择的一段有限时间,或者直到客户端不再需要该地址为止。客户端的租用期限由管理员确定。管理员在配置 DHCPv4 服务器时,可为其设定不同的租期届满时间。租用时间在任何地方通常都是 24 小时到一周或更长时间。租期届满后,客户端必须申请另一地址,但通常是把同一地址重新分配给客户端。
二.DHCPv4 操作
如图 1 所示,DHCPv4 在客户端/服务器模式下工作。当客户端与 DHCPv4 服务器通信时,服务器会将 IPv4 地址分配或出租给该客户端。然后客户端使用租用的 IP 地址连接到网络,直到租期届满。客户端必须定期联系 DHCP 服务器以续展租期。这种租用机制确保移动或关闭的客户端不保留它们不再需要的地址。租期届满后,DHCP 服务器会将地址返回地址池,如有必要,可将其再次分配。
租赁发起
当客户端启动时(或要连接网络),它开始进行四步过程以获取租约。如图 2 所示,客户端使用包含自己 MAC 地址的广播 DHCPDISCOVER 消息开始该过程以查找可用 DHCPv4 服务器。
DHCP 发现 (DHCPDISCOVER)
DHCPDISCOVER 消息在网络上查找 DHCPv4 服务器。由于客户端启动时没有有效的 IPv4 信息,因此,它将使用第 2 层和第 3 层广播地址与服务器通信。
DHCP 提供 (DHCPOFFER)
当 DHCPv4 服务器收到 DHCPDISCOVER 消息时,会保留一个可用 IPv4 地址以租赁给客户端。服务器还会创建一个 ARP 条目,该条目包含请求客户端的 MAC 地址和客户端的租用 IPv4 地址。如图 3 所示,DHCPv4 服务器将绑定 DHCPOFFER 消息发送到请求客户端。
DHCP 请求 (DHCPREQUEST)
如图 4 所示,当客户端从服务器收到 DHCPOFFER 时,会发回一条 DHCPREQUEST 消息。此消息用于发起租用和租约更新。用于发起租用时,将 DHCPREQUEST 用作已提供参数所选定服务器的绑定接受通知,并隐式拒绝任何其他可能已为客户端提供了绑定服务的服务器。
许多企业网络使用多台 DHCPv4 服务器。DHCPREQUEST 消息以广播的形式发送,将已接受提供的情况告知此 DHCPv4 服务器和任何其它 DHCPv4 服务器。
DHCP 确认 (DHCPACK)
如图 5 所示,收到 DHCPREQUEST 消息后,服务器使用 ICMP ping 验证该地址的租用信息以确保该地址尚未使用,为客户端租用创建新的 ARP 条目,并以 DHCPACK 消息作为回复。除消息类型字段不同外,DHCPACK 消息与 DHCPOFFER 消息别无二致。客户端收到 DHCPACK 消息后,记录下配置信息,并为所分配的地址执行 APR 查找。如果没有对 ARP 的应答,客户端就会知道 IPv4 地址是有效的,并开始像使用自己的地址一样使用该地址。
租赁续约
DHCP 请求 (DHCPREQUEST)
如图 6 所示,租期届满后,客户端将 DHCPREQUEST 消息直接发送到最初提供 IPv4 地址的 DHCPv4 服务器。如果在指定的时间内没有收到 DHCPACK,客户端会广播另一个 DHCPREQUEST,这样,另外一个 DHCPv4 服务器便可续展租期。
DHCP 确认 (DHCPACK)
如图 7 所示,收到 DHCPREQUEST 消息后,服务器通过返回一个 DHCPACK 来验证租用信息。
三.DHCPv4 消息格式
DHCPv4 消息格式用于所有 DHCPv4 事务。DHCPv4 消息封装在 UDP 传输协议中。从客户端发出的 DHCPv4 消息使用 UDP 源端口 68 和目标端口 67。从服务器发往客户端的 DHCPv4 消息使用 UDP 源端口 67 和目标端口 68。
图中显示了 DHCPv4 消息的格式。字段如下:
- 操作 (OP) 代码 - 指定通用消息类型。1 表示请求消息,2 表示回复消息。
- 硬件类型 - 确定网络中使用的硬件类型。例如,1 表示以太网,15 表示帧中继,20 表示串行线路。这与 ARP 消息中使用的代码相同。
- 硬件地址长度 - 指定地址的长度。
- 跳数 - 控制消息的转发。客户端传输请求前将其设置为 0。
- 事务标识符 - 客户端使用事务标识符将请求和从 DHCPv4 服务器接收的应答进行匹配。
- 秒数 - 确定从客户端开始尝试获取或更新租用以来经过的秒数。当有多个客户端请求未得到处理时,DHCPv4 服务器会使用秒数来排定应答的优先顺序。
- 标记 - 发送请求时,不知道自己 IPv4 地址的客户端会使用标记。只使用 16 位中的一位,即广播标记。此字段中的 1 值告诉接收请求的 DHCPv4 服务器或中继代理应将应答作为广播发送。
- 客户端 IP 地址 - 当客户端的地址有效且可用时,客户端在租约更新期间(而不是在获取地址的过程中)使用客户端 IP 地址。当且仅当客户端在绑定状态下有一个有效的 IPv4 地址时,该客户端才会将其 IPv4 地址放在此字段中,否则,它会将该字段设置为 0。
- 您的 IP 地址 - 服务器使用该地址将 IPv4 地址分配给客户端。
- 服务器 IP 地址 - 服务器使用该地址确定在 bootstrap 过程的下一步骤中客户端应当使用的服务器地址,它既可能是也可能不是发送该应答的服务器。发送服务器始终会把自己的 IPv4 地址放在称作“服务器标识符”DHCPv4 选项的特殊字段中。
- 网关 IP 地址 - 涉及 DHCPv4 中继代理时会路由 DHCPv4 消息。网关地址可以帮助位于不同子网或网络的客户端与服务器之间传输 DHCPv4 请求和 DHCPv4 回复。
- 客户端硬件地址 - 指定客户端的物理层。
- 服务器名称 - 由发送 DHCPOFFER 或 DHCPACK 消息的服务器使用。服务器可能选择性地将其名称放在此字段中。这可以是简单的文字别名或 DNS 域名,例如 dhcpserver.netacad.net。
- 启动文件名 - 客户端选择性地在 DHCPDISCOVER 消息中使用它来请求特定类型的启动文件。服务器在 DHCPOFFER 中使用它来完整指定启动文件目录和文件名。
- DHCP 选项 - 容纳 DHCP 选项,包括基本 DHCP 运行所需的几个参数。此字段的长度不定。客户端与服务器均可以使用此字段。