动态主机设置协议(Dynamic Host Configuration Protocol,DHCP)是局域网的网络协议,属于应用层协议,基于UDP传输并使用67/68端口,主要用于自动分配IP地址及相关网络配置参数,支持动态管理和集中配置。该协议通过租约机制管理IP地址有效期,包含动态分配、静态分配和自动分配三种模式,可分配子网掩码、默认网关、DNS服务器等参数,客户端通过发现、提供、请求、确认四阶段交互流程获取地址 [2] [4-6]。
DHCP采用客户端/服务器模式,服务器通过地址池分配网络参数,中继代理实现跨网段通信。租约管理包含50%和87.5%续约规则,支持地址重复利用与冲突检测。协议包含Discover、Offer、Request等8类报文,安全防护措施包括DHCP Snooping技术、IP-MAC绑定和动态ARP检查 [2-4] [7] [10]。IPv6版本DHCPv6基于RFC 3315标准,支持前缀分配与无状态配置,使用547/546端口及组播通信 [8-9]。
该协议前身为BOOTP协议,1993年10月由RFC 2131确立为标准协议。现行版本包含IPv4的DHCPv4和IPv6的DHCPv6,通过选项字段扩展功能,具备中继代理位置标识和厂商特定信息设置能力 [3] [5] [9-10]。
中文名
动态主机设置协议
外文名
Dynamic Host Configuration Protocol

适用性

播报
DHCP用一台或一组DHCP服务器来管理网络参数的分配,这种方案具有容错性。即使在一个仅拥有少量机器的网络中,DHCP仍然是有用的,因为一台机器可以几乎不造成任何影响地被增加到本地网络中。
甚至对于那些很少改变地址的服务器来说,DHCP仍然被建议用来设置它们的地址。如果服务器需要被重新分配地址(RFC 2071)的时候,就可以在尽可能少的地方去做这些改动。对于一些设备,如路由器和防火墙,则不应使用DHCP。把TFTP或SSH服务器放在同一台运行DHCP的机器上也是有用的,目的是为了集中管理。
DHCP也可用于直接为服务器和桌面计算机分配地址,并且通过一个PPP代理,也可为拨号及宽带主机,以及住宅NAT网关和路由器分配地址。DHCP一般不适用于使用在无边际路由器和DNS服务器上。

历史

播报
DHCP于1993年10月成为标准协议,其前身是BOOTP协议。当前的DHCP定义可以在RFC 2131中找到,而基于IPv6的建议标准(DHCPv6)可以在RFC 3315中找到。

原理

播报
动态主机设置协议(DHCP)是一种使网络管理员能够集中管理和自动分配IP网络地址的通信协议。在IP网络中,每个连接Internet的设备都需要分配唯一的IP地址。DHCP使网络管理员能从中心结点监控和分配IP地址。当某台计算机移到网络中的其它位置时,能自动收到新的IP地址。
DHCP使用了租约的概念,或称为计算机IP地址的有效期。租用时间是不定的,主要取决于用户在某地连接Internet需要多久,这对于教育行业和其它用户频繁改变的环境是很实用的。通过较短的租期,DHCP能够在一个计算机比可用IP地址多的环境中动态地重新配置网络。DHCP支持为计算机分配静态地址,如需要永久性IP地址的Web服务器。
DHCP和另一个网络IP管理协议BOOTP类似。目前两种配置管理协议都得到了普遍使用,其中DHCP更为先进。某些操作系统,如Windows NT/2000,都带有DHCP服务器。DHCP或BOOTP客户端是装在计算机中的一个程序,这样就可以对其进行配置操作。

协议结构

播报
协议结构
8 bits
16 bits
24 bits
32 bits
Op
Htype
Hlen
Hops
Xid
Secs
Flags
Ciaddr
Yiaddr
Siaddr
Giaddr
Chaddr (16 bytes)
Sname (64 bytes)
File (128 bytes)
Option (variable)
  • Op:消息操作代码,既可以是引导请求(BOOTREQUEST)也可以是引导答复(BOOTREPLY)
  • Htype:硬件地址类型
  • Hlen:硬件地址长度
  • Xid:处理ID
  • Secs:从获取到IP地址或者续约过程开始到现在所消耗的时间
  • Flags:标记
  • Ciaddr:客户机IP地址
  • Yiaddr:“你的”(客户机)IP地址
  • Siaddr:在bootstrap中使用的下一台服务器的IP地址
  • Giaddr:用于导入的接替代理IP地址
  • Chaddr:客户机硬件
  • Sname:任意服务器主机名称,空终止符
  • File:DHCP发现协议中的引导文件名、空终止符、属名或者空,DHCP供应协议中的受限目录路径名
  • Options:可选参数字段。参考定义选择列表中的选择文件 [1]
参考资料