DHCP 动态主机配置协议

ZingLix July 28, 2018

DHCP 可以实现网络的自动配置,对于一些客户会频繁出入的场景有不可或缺的作用。

地址池和租用

DHCP 服务器从一个 地址池 中分配 IP 地址,提供的地址只能有效一段时间,称为 租用期,这样可以避免客户离开网络但仍占用地址,导致地址池枯竭。当然客户机能够提出续租的请求,所以对于长期在网络中的客户机没有更换 IP 地址的问题。

租用期常见为 12-24 个小时,过长的时间会导致地址池的过快耗尽,过短会增加网络的开销。一般在租用期过半时会续订租约。

租用过程

DHCP 使用 UDP 协议,所以整个过程中接收端口均为 67,发送端口为 68。

获得网络配置分为 4 个步骤:

  1. DHCP 服务器发现(DISCOVER)。当一台客户机新来到一个网络环境中,需要发现一个能够提供服务的 DHCP 服务器。这时采用广播地址 255.255.255.255,自己的地址设为 0.0.0.0,并给出事务 ID。
  2. DHCP 服务器提供(OFFER)。当 DHCP 收到发现报文后,返回一个提供报文,给出提供的 IP 地址 yiaddr,自己的服务器 ID,地址租用期等信息。此时客户机并没有 IP 地址,所以此时目标地址仍用广播地址。
  3. DHCP 请求(REQUEST)。由于可能有多个 DHCP 服务器的存在,会收到数个提供报文,这时客户机需要选择一个发送请求报文。仍采用广播地址是为了让未被接受的服务器清除相关状态。
  4. DHCP ACK。服务器对请求报文相应,证实相关参数。如果不能分配则返回 NAK。

此时分配完成,但客户机可以尝试发送 ARP 请求来确定网络中是否有冲突,如果有可以发送一个 DHCPDECLINE,过 10 秒(默认值)后重新进行此过程。离开网络使可以发送 DHCPRELEASE 释放 IP。

当客户机希望续订时,可以跳过前两步直接发送 DHCPREQUEST,服务器通过 ACK 或 NAK 来处理该请求。当客户机已有 IP 地址,希望获得其他配置信息可以用 DHCPINFORM。