DHCP服务器如何知道我的IP地址?

时间:2017-09-11 13:29:54

标签: networking ip dhcp

enter image description here

数据包No.17,22,200,390,531,535的目的地应该是广播消息,但为什么它们是我的IP地址? 请注意,我已经发布了我的IP。

1 个答案:

答案 0 :(得分:0)

只有特定情况下才应广播DHCPOFFER和DHCPACK。在大多数情况下,这些应该单播回请求主机。

服务器知道请求主机的MAC地址,因此除非请求主机已在DHCPREQUEST中设置广播位,否则帧将单播返回给请求主机。

请参阅RFC 2131, Dynamic Host Configuration Protocol

  

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

     

在协议之前无法接收单播IP数据报的客户端   软件配置了IP地址应该设置   任何DHCPDISCOVER或''flags'字段中的BROADCAST位为1   客户端发送的DHCPREQUEST消息。 BROADCAST位会   提供DHCP服务器和BOOTP中继代理进行广播的提示   客户端子网上客户端的任何消息。可以的客户   在协议软件出现之前接收单播IP数据报   配置时应该将BROADCAST位清零.BOOTP   澄清文件讨论了使用的后果   BROADCAST位[21]。

- 和 -

  

如果客户端使用DHCP进行初始配置(之前   客户端的TCP / IP软件已完全配置),DHCP   需要创造性地使用客户端的TCP / IP软件和自由软件   RFC 1122的解释.TCP / IP软件应该接受和   向IP层转发任何传递给客户端的IP数据包   配置IP地址前的硬件地址; DHCP服务器和   BOOTP中继代理可能无法向客户端传递DHCP消息   在TCP / IP之前无法接受硬件单播数据报   软件已配置。

     

解决一些无法接受IP单播数据报的客户端   在配置TCP / IP软件之前,如前所述   段落,DHCP使用'flags'字段[21]。最左边的位是   定义为BROADCAST(B)标志。这个标志的语义是   在本文件的第4.1节中讨论过。其余部分   标志字段保留供将来使用。它们必须设置为零   客户端并被服务器和中继代理忽略。图2给出了   'flags'字段的格式。

                                 1 1 1 1 1 1
             0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
            |B|             MBZ             |
            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

            B:  BROADCAST flag

            MBZ:  MUST BE ZERO (reserved for future use)

            Figure 2:  Format of the 'flags' field