DHCP 运行机制

DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)允许主机自动获取(被分配)一个 IP 地址。网络管理员能够配置 DHCP,以使某给定主机每次与网络连接时能得到一个相同的 IP 地址,或者某主机将被分配一个临时的 IP 地址(temporary IP address),每次与网络连接时该地址也许是不同的。除了主机 IP 地址分配外,DHCP 还允许一台主机得知其他信息,例如它的子网掩码、它的第一跳路由器地址(常称为默认网关)与它的本地 DNS 服务器的地址。

由于 DHCP 具有将主机连接进一个网络的网络相关方面的自动能力,故它又常被称为即插即用协议(plug-and-play protocol)或零配置(zeroconf)协议

DHCP 是一个客户 — 服务器协议。客户通常是新到达的主机,它要获得包括自身使用的 IP 地址在内的网络配置信息。在最简单场合下,每个子网将具有一台 DHCP 服务器。如果在某子网中没有服务器,则需要一个 DHCP 中继代理(通常是一台路由器),这个代理知道用于该网络的 DHCP 服务器的地址。

工作过程

对于一台新到达的主机而言,DHCP 协议是一个 4 个步骤的过程:

  1. DHCP 服务器发现:客户在 UDP 分组中向端口 67 发送 DHCP 发现报文(DHCP discover message),该 UDP 分组封装在一个 IP 数据报中,其中使用广播目的地址 255.255.255.255 并且使用“本主机”源 IP 地址 0.0.0.0。DHCP 客户将该 IP 数据报传递给链路层,链路层然后将该帧广播到所有与该子网连接的节点。
  2. DHCP 服务器提供:DHCP 服务器收到一个 DHCP 发现报文时,用 DHCP 提供报文(DHCP offer message)向客户做出响应,该报文向该子网的所有节点广播,仍然使用 IP 广播地址 255.255.255.255。因为在子网中可能存在几个 DHCP 服务器,该客户也许会发现它处于能在几个提供者之间进行选择的优越位置。每台服务器提供的报文包含有收到的发现报文的事务 ID、向客户推荐的 IP 地址、网络掩码以及 IP 地址租用期(address lease time),即 IP 地址有效的时间量。服务器租用期通常设置为几小时或几天。
  3. DHCP 请求:新到达的客户从一个或多个 服务器提供 中选择一个,并向选中的 服务器提供DHCP 请求报文(DHCP request message)进行响应,回显配置的参数。
  4. DHCP ACK:服务器用 DHCP ACK 报文(DHCP ACK message)对 DHCP 请求报文进行响应,证实所要求的参数。

一旦客户收到 DHCP ACK 后,交互便完成了,并且该客户能够在租用期内使用 DHCP 分配的 IP 地址。因为客户可能在该租用期超时后还希望使用这个地址,所以 DHCP 还提供了一种机制以允许客户更新它对一个 IP 地址的租用。

缺陷

从移动性角度看,每当节点连到一个新子网,要从 DHCP 得到一个新的 IP 地址,当一个移动节点在子网之间移动时,就不能维持与远程应用之间的 TCP 连接。

此外,学校机房、网吧等地方不使用 DHCP 而使用静态 IP 是为了方便监控。

参考

  1. James F. Kurose,Keith W. Ross.计算机网络:自顶向下方法[M].北京:机械工业出版社,2018:222-225.
  2. 为什么学校、网吧机房基本都不使用DHCP?