为什么服务器不能使用FTP发现和请求的源IP中使用的目标IP地址0.0.0.0?它可以使用从DHCP Discover和Request学习的客户端的MAC地址将帧指向适当的客户端计算机。
答案 0 :(得分:16)
单播或广播选择在 DHCP RFC 2131 中指定:
如果来自客户端的DHCP消息中的'giaddr'字段不为零, 服务器将任何返回消息发送到的“DHCP服务器”端口 BOOTP中继代理,其地址出现在'giaddr'中。如果'giaddr' field为零,'ciaddr'字段为非零,然后是服务器 将DHCPOFFER和DHCPACK消息单播到'ciaddr'中的地址。 如果'giaddr'为零且'ciaddr'为零,则广播位为 设置,然后服务器广播DHCPOFFER和DHCPACK消息 为0xffffffff。如果未设置广播位且'giaddr'为零且 'ciaddr'为零,然后服务器单播DHCPOFFER和DHCPACK 消息到客户端的硬件地址和'yiaddr'地址。在 在所有情况下,当'giaddr'为零时,服务器广播任何DHCPNAK 消息到0xffffffff。
ciaddr 且 giaddr :
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)。
答案 1 :(得分:0)
来自the RFC 2131,第24页:
通常,DHCP服务器和BOOTP中继代理尝试传递 DHCPOFFER,DHCPACK和DHCPNAK消息直接使用到客户端 uicast交付。设置IP目标地址(在IP标头中) 到DHCP' yiaddr'地址和链路层目的地址是 设置为DHCP' chaddr'地址。不幸的是,有些客户 实现无法接收此类单播IP数据报,直到 已使用有效的IP地址配置实施 (导致客户端的IP地址无法解决的死锁 交付,直到客户端配置了IP地址)。
在客户端之前无法接收单播IP数据报的客户端 协议软件配置了IP地址应该设置 '标志中的BROADCAST位'任何DHCPDISCOVER或中的字段为1 客户端发送的DHCPREQUEST消息。 BROADCAST位将提供 提示DHCP服务器和BOOTP中继代理进行广播 消息到客户端子网上的客户端。
一个客户端 可以在其协议软件之前接收单播IP数据报 配置时应该将BROADCAST位清零.BOOTP 澄清文件讨论了使用的后果 BROADCAST位。