DHCP提供的是一个layer3广播,因为服务器不知道客户端Ip,但是服务器知道客户端的mac地址。那么广播会怎么样呢?
如果有人问我这件事?我该怎么回答?我能不能说它的layer3广播和layer2单播
发布于 2015-02-27 12:32:33
注意广播标志,请参阅RFC2131 (第24页):
在客户端发送的任何DHCPDISCOVER或DHCPREQUEST消息中,除非协议软件配置了IP地址,否则无法接收单播IP数据报的客户端应该将“标志”字段中的广播位设置为1。广播位将向DHCP服务器和BOOTP中继代理提供提示,以便向客户端子网上的客户端广播任何消息。
在配置协议软件之前能够接收单播IP数据报的客户端应该将广播位清除为0。BOOTP澄清文件讨论了使用广播位的后果。
增加了RFC的其他部分。根据整个段落,它既可以广播,也可以单播,甚至两者兼而有之。
发布于 2015-02-27 13:59:16
答案是,它既可以广播也可以单播--在某些情况下,在使用ip helper-address时,可以在到达客户端之前进行单播和广播。
在发现-要约-请求-ACK交换完成之前,客户端实际上没有IP地址。有可能(虽然不太可能)出现这样的情况,即服务器将使用NAK重新响应请求。
但是,由于单播通常比广播更可取,许多客户端将接受与其L2地址匹配的单播回复。
发布于 2017-05-22 10:10:04
https://www.ietf.org/rfc/rfc2131.txt
根据这一规则:
Droms标准跟踪第24页 RFC 2131动态主机配置协议1997年3月
通常,DHCP服务器和BOOTP中继代理试图使用uicast传递直接将DHCPOFFER、DHCPACK和DHCPNAK消息传递给客户端。IP目标地址(在IP报头中)设置为DHCP 'yiaddr‘地址,链路层目标地址设置为DHCP 'chaddr’地址。不幸的是,一些客户端实现无法接收这样的单播IP数据报,直到实现配置了有效的IP地址(导致在客户端配置了IP地址之前无法传递客户端IP地址的死锁)。
在客户端发送的任何DHCPDISCOVER或DHCPREQUEST消息中,除非协议软件配置了IP地址,否则无法接收单播IP数据报的客户端应该将“标志”字段中的广播位设置为1。广播位将向DHCP服务器和BOOTP中继代理提供提示,以便向客户端子网上的客户端广播任何消息。在配置协议软件之前能够接收单播IP数据报的客户端应该将广播位清除为0。BOOTP澄清文档讨论了使用广播位21的后果。
服务器或中继代理直接向DHCP客户端发送或中继DHCP消息(即,不向“giaddr”字段中指定的中继代理发送或中继消息)应检查“标志”字段中的广播位。如果此位设置为1,则应使用IP广播地址(最好是0 0xffffffff)作为IP目的地地址,并使用链路层广播地址作为链路层目标地址,将DHCP消息作为IP广播发送。如果广播位被清除为0,则应将消息作为IP单播发送到“yiaddr”字段中指定的IP地址和“chaddr”字段中指定的链路层地址。如果不可能进行单播,则可以使用IP广播地址(最好是0 0xffffffff)作为IP目的地地址,并使用链路层广播地址作为链路层目的地地址,将消息作为IP广播发送。
https://networkengineering.stackexchange.com/questions/16947
复制相似问题