5. 客户端/服务器交换 (Client/Server Exchanges)
客户端和服务器使用 UDP 交换 DHCP 消息 (见 [RFC0768] 和 [BCP145]). 客户端使用链路本地源地址, 或通过其他机制确定的地址, 来发送和接收 DHCP 消息.
DHCP 客户端使用保留的链路作用域多播目标地址 (All_DHCP_Relay_Agents_and_Servers - ff02::1:2) 发送所有消息, 因此客户端不需要配置 DHCP 服务器的地址.
为了允许 DHCP 客户端向不连接在同一链路上的 DHCP 服务器发送消息, 客户端链路上的 DHCP 中继代理会在客户端和服务器之间中继消息. 中继代理的操作对客户端是透明的. 本节其余部分对消息交换的讨论将省略中继代理中继消息的描述.
5.1. 涉及两个消息的客户端/服务器交换 (Client/Server Exchanges Involving Two Messages)
当 DHCP 客户端不需要 DHCP 服务器为其分配 IP 地址或被委派前缀时, 客户端可以通过与 DHCP 服务器进行单个消息和回复交换, 获取其他配置信息, 例如可用 DNS 服务器 [RFC3646] 或 NTP 服务器 [RFC5908] 的列表. 为获取其他配置信息, 客户端首先向 All_DHCP_Relay_Agents_and_Servers 多播地址发送 Information-request 消息. 服务器使用 Reply 消息进行响应, 其中包含面向客户端的其他配置信息.
客户端也可以请求服务器加快地址分配和/或前缀委派, 使用两个消息交换来替代下一节讨论的普通四个消息交换. 加速分配可由客户端请求, 服务器可以接受也可以不接受该请求 (有关更多细节以及服务器可能不接受此请求的原因, 见第 18.3.1 节和第 21.14 节). 在某些环境中, 客户端可以请求这种加速服务, 例如某条链路上很可能只有一个可用服务器且不预期会有第二个服务器变为可用, 或者需要尽快完成配置过程.
为请求加速的两个消息交换, 客户端向 All_DHCP_Relay_Agents_and_Servers 多播地址发送 Solicit 消息, 请求分配地址和/或被委派前缀以及其他配置信息. 此消息包含一个指示 (Rapid Commit 选项; 见第 21.14 节), 表明客户端愿意接受来自服务器的即时 Reply 消息. 愿意立即向客户端提交地址和/或被委派前缀分配的服务器会用 Reply 消息进行响应. Reply 消息中的配置信息以及地址和/或被委派前缀随后可立即供客户端使用.
服务器为分配给客户端的每个地址或被委派前缀指定关联的首选生命周期和有效生命周期. 为请求延长分配给某个地址或被委派前缀的生命周期, 客户端向服务器发送 Renew 消息. 服务器向客户端发送 Reply 消息并携带新的生命周期, 允许客户端不间断地继续使用该地址或被委派前缀. 如果服务器无法延长某个地址或被委派前缀的生命周期, 它会通过返回生命周期为 0 的地址或被委派前缀来指示这一点. 同时, 服务器可以分配其他地址或被委派前缀.
关于客户端和服务器之间其他两个消息交换的说明, 见第 18 节.
5.2. 涉及四个消息的客户端/服务器交换 (Client/Server Exchanges Involving Four Messages)
为请求分配一个或多个地址和/或被委派前缀, 客户端首先定位 DHCP 服务器, 然后从服务器请求分配地址和/或被委派前缀以及其他配置信息. 客户端向 All_DHCP_Relay_Agents_and_Servers 多播地址发送 Solicit 消息, 以查找可用 DHCP 服务器. 任何能够满足客户端要求的服务器都会以 Advertise 消息响应. 随后, 客户端选择其中一个服务器, 并向该服务器发送 Request 消息, 请求租用地址和/或被委派前缀以及其他配置信息. 服务器以 Reply 消息响应, 其中包含租用的地址, 被委派前缀和配置.
如上一节所述, 客户端可以请求延长分配给地址或被委派前缀的生命周期 (这是一个两个消息交换).
5.3. 服务器/客户端交换 (Server/Client Exchanges)
如果服务器此前已与客户端通信, 并协商让客户端侦听 Reconfigure 消息, 则该服务器可以向客户端发送 Reconfigure 消息, 以启动客户端通过发送 Information-request, Renew 或 Rebind 消息来更新其配置. Reconfigure 消息按照第 20.4 节进行认证. 随后, 客户端执行前文所述的两个消息交换. 这可用于加快对客户端的配置变更, 例如需要对网络进行重编号时 (见 [RFC6879] 和 [RFC9096]).