DHCP 需要两阶段交换,DHCPDISCOVER 然后 DHCPREQUEST,其设计原理是什么?

DHCP 需要两阶段交换,DHCPDISCOVER 然后 DHCPREQUEST,其设计原理是什么?

RFC2131第3.1节描述了DHCP的工作流程如下:

            Server          Client          Server
        (not selected)                    (selected)

              v               v               v
              |               |               |
              |     Begins initialization     |
              |               |               |
              | _____________/|\____________  |
              |/DHCPDISCOVER  | DHCPDISCOVER \|
              |               |               |
          Determines          |          Determines
         configuration        |         configuration
              |               |               |
              |\              |  ____________/|
              | \________     | /DHCPOFFER    |
              |  DHCPOFFER\   |/              |
              |            \  |               |
              |       Collects replies        |
              |              \|               |
              |     Selects configuration     |
              |               |               |
              | _____________/|\____________  |
              |/ DHCPREQUEST  |  DHCPREQUEST\ |
              |               |               |
              |               |     Commits configuration
              |               |               |
              |               | _____________/|
              |               |/ DHCPACK      |
              |               |               |
              |    Initialization complete    |
              |               |               |
              .               .               .
              .               .               .
              |               |               |
              |      Graceful shutdown        |
              |               |               |
              |               |\ ____________ |
              |               | DHCPRELEASE  \|
              |               |               |
              |               |        Discards lease
              |               |               |
              v               v               v
 Figure 3: Timeline diagram of messages exchanged between DHCP
           client and servers when allocating a new network address

我的问题是:对于请求 IP 地址的客户端,两阶段数据包交换有什么好处?我认为仅定义 DHCPREQUEST/DHCPACK 就足够了。

DHCPDISCOVER我的意思是,我希望有人可以举出一个对协议的运作有益的案例。

减少一次数据包交换(具体涉及MAC广播)可以降低数据包丢失的风险,特别是在一些不太可靠的介质上,例如802.11无线网络。

答案1

发送发现然后仅向其中一个响应的服务器发送请求的好处是,您不必让所有 DHCP 服务器都经历分配 IP 地址的过程。

我想不出有多个 DHCP 服务器处理相同客户端的很多理由(除了冗余之外),但如果有,单阶段过程将导致 DHCP 服务器分配一个永远不会使用的 IP 地址。客户端搜索 DHCP 服务器,然后在第二步中实际要求其中一个服务器分配 IP 地址,这是有道理的。

相关内容