这是DHCP操作的过程,


我的问题是在第3步,为什么客户端发送广播而不是单播,如前两次操作之后DHCP的地址服务器/中继服务器应该知道吗?

评论

有什么答案对您有帮助吗?如果是这样,您应该接受答案,这样问题就不会永远弹出来寻找答案。或者,您可以提供并接受自己的答案。

#1 楼

https://tools.ietf.org/html/rfc2131#page-13


服务器从客户端接收DHCPREQUEST广播。
那些DHCPREQUEST未选择的服务器消息使用
消息作为客户端拒绝服务器提供的通知。


该协议假定可能有多个DHCP服务器。通过广播请求消息,所有可能已经发出要约的服务器都可以知道客户端的选择。

评论


但这可以通过多播到那些DHCP服务器来完成。为什么要广播所有人?

–宝塔
20 Mar 2 '20 at 6:08

多播响应将假设服务器正在侦听多播组地址,这不是标准的一部分。我想广播虽然较嘈杂,却不那么复杂,因此更可靠。此外,请考虑使用DHCP中继的情况。路由器必须具有“ DHCP多播”意识,从而在网络中增加了其他依赖性。 DHCP中继功能本来可以通过这种方式设计,但是强制对DHCP等基本内容进行多播支持会产生不必要的开销。

– Boomi
20 Mar 3 '20 at 11:53

#2 楼

您可能有多个DHCP服务器-请求以广播方式发送,以通知其他可能已发送要约的DHCP服务器其要约未被接受。

#3 楼

因为在服务器发送DHCPACK之前,客户端仍然没有IP地址。 DHCP服务器可能用DHCPNACK响应请求。

评论


为什么这意味着需要使用广播?客户端从DHCPOFFER消息中知道服务器的MAC地址,因此可以将DHCPREQUEST单播发送到该服务器-不需要IP地址。

–psmears
18 Mar 6 '18 at 13:51

@psmears,因为L3广播作为L2广播发送。 DHCP不是L2协议,因此当数据从L3传递到L2时,您必须遵守规则。

– YLearn♦
18-3-6在16:27



@YLearn:您还需要L3多播或广播数据包的源IP地址和目标IP,因此这显然不是问题:)从理论上讲,DHCPREQUEST数据包无法与目标IP和MAC发送在一起服务器,以及(与广播数据包一样)源IP 0.0.0.0。广播的原因是让其他DHCP服务器(如果有)知道客户端正在拒绝其报价。

–psmears
18 Mar 6 '18 at 17:01

@ psmears,L3广播的目标是255.255.255.255。您可以从0.0.0.0接收L3广播。但是,您不能从0.0.0.0发出L3单播。

– YLearn♦
18 Mar 6 '18 at 17:20

@YLearn:您当然可以发送一个数据包,其中源地址的字节设置为零!但是,某些RFC可能会禁止这样做-您知道吗? RFC1700表示0.0.0.0“只能用作源地址”(但单播/广播什么也没有); RFC1122表示0.0.0.0“不得发送,除非作为源地址,作为初始化过程的一部分(主机通过该过程来学习主机自己的IP地址)”(同样,没有单播/广播限制)。这是其他地方规定的吗?

–psmears
18 Mar 6 '18 at 17:37