2

当客户端尝试更新它的租用时间时,如果根据RFC2131 4.3.2 不得填写服务器 ID,它如何单播到服务器

" RENEWING 状态下生成的 DHCPREQUEST:'server identifier' 不得填写,'requested IP address' 选项不得填写,'ciaddr' 必须填写客户端的 IP 地址。在这种情况下,客户端已完全配置, 并且正在尝试延长其租期。此消息将是单播的,因此在其传输过程中不会涉及中继代理。因为没有填写 'giaddr',所以 DHCP 服务器将信任 'ciaddr' 中的值,并使用它在回复客户时。

客户可以选择在 T1 之前更新或延长其租约。服务器可以选择不延长租约(作为网络管理员的策略决定),但无论如何都应该返回 DHCPACK 消息。”

4

2 回答 2

2

siaddr,“服务器标识符”字段,位于 DHCP 消息中,使用 UDP 发送出去,在 IP 标头中有自己的目标 IP 地址字段,因此客户端将更新数据包单播到服务器的已知 IP。

于 2012-09-24T12:54:16.240 回答
1

即使不能设置“服务器标识符”,客户端也可以通过单播发送更新 DHCP 请求消息,因为发送数据包不需要“服务器标识符”。当使用单播发送数据包时,您只需要指定目标 IP 地址,在这种情况下,DHCP 服务器的 IP 地址和此信息客户端从初始化阶段就知道。

“Server Identifier”实际上是一个选项54,“DHCP Option 54 - DHCP Server Identifier”用于选择DHCP服务器,以防多个DHCP服务器在初始化阶段以DHCP OFFER消息响应DHCP DISCOPVER消息。这就是为什么必须在 SELECTING 阶段指定它,但它不是必需的,或者实际上不能在 RENEWING 和 REBINDING 阶段设置,因为客户端已经知道它选择了哪个 DHCP 服务器。

“服务器标识符”不是 DHCP 消息的“siaddr”字段。“Siaddr”不是选项之一,而是仅由DHCP Server填写的DHCP报文中的一个标准字段。“服务器标识符”和“siaddr”都具有 DHCP 服务器的 IP 地址值,我相信这一事实使您认为它们用于发送 DHCP 消息。但是,它们在发送和转发数据包期间不使用,仅使用 IP 标头内的目标 IP 地址。

“Server Identifier”和“siaddr”实际上都是用来找出DHCP服务器的IP地址,然后通过单播将DHCP请求消息直接发送到DHCP服务器。

于 2015-06-10T19:13:02.460 回答