【问题标题】:Why are DHCP Offer and Ack broadcasted?为什么广播 DHCP Offer 和 Ack?
【发布时间】:2012-05-17 13:29:05
【问题描述】:

为什么服务器不能像 DHCP Discover and Request 的源 IP 一样使用目的 IP 地址 0.0.0.0?它可以使用从 DHCP 发现和请求中获知的客户端 MAC 地址将帧定向到适当的客户端机器。

【问题讨论】:

  • 我怀疑这需要在有多个协作 DHCP 服务器的环境中工作。中继代理也可能需要它才能正常工作。

标签: dhcp


【解决方案1】:

单播或广播选项在DHCP RFC 2131中指定:

如果来自客户端的 DHCP 消息中的 'giaddr' 字段不为零, 服务器将任何返回消息发送到服务器上的“DHCP 服务器”端口 BOOTP 中继代理,其地址出现在“giaddr”中。如果'giaddr' 字段为零且“ciaddr”字段为非零,则服务器 将 DHCPOFFER 和 DHCPACK 消息单播到“ciaddr”中的地址。 如果 'giaddr' 为零且 'ciaddr' 为零,则广播位为 设置,则服务器将 DHCPOFFER 和 DHCPACK 消息广播到 0xffffffff。如果广播位未设置且 'giaddr' 为零并且 'ciaddr' 为零,则服务器单播 DHCPOFFER 和 DHCPACK 向客户端的硬件地址和“yiaddr”地址发送消息。在 在所有情况下,当 'giaddr' 为零时,服务器会广播任何 DHCPNAK 发送到 0xffffffff 的消息。

ciaddrgiaddr 是:

ciaddr        4  Client IP address; only filled in if client is in BOUND, RENEW or REBINDING state and can respond to ARP requests.
giaddr        4  Relay agent IP address, used in booting via a relay agent.

因此 DHCP 服务器根据客户端的当前状态(主要是是否已经有 IP 地址)以及消息的发送者(如果它是中继代理或只是客户端)选择广播或不广播.

在这种情况下,我的 DCHP 服务器选择单播 DHCPOFFER,因为我的机器已经有一个 IP 地址,而我的 LAN 中没有中继代理。

编辑:

而且没有人可以使用 IP 地址 0.0.0.0 作为目标地址。如IPv4 RFC 5735中指定:

0.0.0.0/8 - 此块中的地址指“this”上的源主机 网络。 地址 0.0.0.0/32 可以用作此的源地址 此网络上的主机; 0.0.0.0/8 内的其他地址可用于 引用此网络上的指定主机 ([RFC1122], Section 3.2.1.3)。

【讨论】:

  • 你的问题不够清楚。请在超级用户上发布a new question,详细说明所涉及设备的行为、它们的角色以及可能的 IP 地址和捕获的日志。
  • 我有一个类似的问题,但问题是,我有一个设备发送一个 DHCP Discover 数据包,发往 255.255.255.255,服务器收到此消息(因为我使用数据包记录器查看所有节点的活动)和回复,我的设备得到的这个回复是来自 DHCP 服务器的广播帧。但设备不接受 IP 配置。对此异常有何解释?
  • 好答案。解释事情是如何工作的,以及是否可能有非广播 DHCPOFFER。但我也想知道广播 DHCPOFFER 的原因。有什么想法吗?
【解决方案2】:

来自the RFC 2131,第 24 页:

通常,DHCP 服务器和 BOOTP 中继代理会尝试传递 使用 DHCPOFFER、DHCPACK 和 DHCPNAK 消息直接发送给客户端 单播交付。 IP 目标地址(在 IP 标头中)已设置 到 DHCP 'yiaddr' 地址,链路层目标地址是 设置为 DHCP 'chaddr' 地址。不幸的是,一些客户 实现无法接收此类单播 IP 数据报,直到 已使用有效的 IP 地址配置实现 (导致无法获取客户端 IP 地址的死锁) 直到客户端配置了 IP 地址)。

客户端无法接收单播 IP 数据报,直到它 协议软件已配置 IP 地址 应设置 在任何 DHCPDISCOVER 或 客户端发送的 DHCPREQUEST 消息。广播位将提供 提示 DHCP 服务器和 BOOTP 中继代理广播任何 向客户端子网上的客户端发送消息。

可以在其协议软件被安装之前接收单播 IP 数据报 配置应将 BROADCAST 位清除为 0。 BOOTP 澄清文件讨论了使用 广播位。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-09
    • 2017-02-20
    • 2013-05-21
    • 1970-01-01
    • 2020-11-26
    • 1970-01-01
    相关资源
    最近更新 更多