文章目录
- 什么是 DHCP?
- DHCP 的产生背景
- DHCP 的工作过程
- 工作流程
- 地址分配机制
- DHCP 中继代理
- 总结
什么是 DHCP?
动态主机配置协议(DHCP,Dynamic Host Configuration Protocol)是一种网络管理协议,用于自动分配IP地址及其他网络配置参数(如子网掩码、默认网关、DNS服务器地址等)给网络中的设备。它基于客户端/服务器架构,通过集中管理IP地址池,简化了网络设备的配置过程。
DHCP
协议允许网络管理员通过中央服务器来动态分配和管理 IP 地址以及其他网络配置参数,从而减少了网络管理的复杂性。
DHCP 的产生背景
在 DHCP
出现之前,网络管理员需要手动为每台设备配置 IP 地址,这种方式不仅繁琐,还容易导致 IP 地址冲突和资源浪费。随着网络规模的扩大和设备数量的增加,这种手动配置的方式已无法满足需求。因此,IETF 设计了 DHCP
协议,以实现动态、自动化的 IP 地址分配。
DHCP 的工作过程
DHCP
使用客户/服务器方式:
-
在
DHCP
服务器上运行DHCP
服务器进程,也可简称为DHCP
服务器 -
在用户主机上运行
DHCP
客户进程,也可简称为DHCP
客户。
DHCP
是 TCP/IP 协议体系应用层中的协议,它使用运输层的 UDP 所提供的服务。DHCP报文在运输层会被封装成为 UDP用户数据报,DHCP
服务器使用的UDP端口是67,DHCP
客户使用的UDP端口是68,这两个 UDP
端口都是熟知端口。
封装有 DHCP
报文的 UDP 用户数据报
,在网络层会被封装成 IP 数据报
,然后再根据所使用的网络接口,封装成相应的数据链路层的帧进行发送,如封装为以太网帧。
工作流程
DHCP
的工作流程主要包括以下四个阶段:
-
发现阶段(DHCP Discover):客户端以广播方式发送
DHCP Discover
报文,寻找可用的 DHCP 服务器。 -
提供阶段(DHCP Offer):服务器收到请求后,从地址池中选择一个可用的IP地址,并向客户端发送
DHCP Offer
报文。 -
请求阶段(DHCP Request):客户端收到 Offer 后,选择一个服务器的 Offer,并发送
DHCP Request
报文,请求确认分配的IP地址。 -
确认阶段(DHCP Ack):服务器确认客户端的请求,发送 DHCP Ack 报文,正式分配IP地址及其他配置信息。
这是一个四步的交互过程,包括客户端的广播请求、服务器的提供回应、客户端的确认地址和服务器的确认并更新数据库。
-
客户端广播请求(Discover)
-
当
DHCP
客户端(如计算机、路由器等)启动时,它会在网络上广播一个 DHCP Discover 消息(因为主机现在并不知道网络中有哪几个DHCP服务器),请求可用的 IP 地址和其他网络配置参数。这个广播消息会被网络上的所有设备接收,但只有DHCP服务器会对此作出响应。 -
DHCP Discover
消息报文封装有事务ID、DHCP 客户端的 MAC 地址等信息
-
-
DHCP服务器提供回应(Offer)
-
当 DHCP 服务器接收到客户端的
DHCP Discover
广播后,它会从预定义的IP地址池中选择一个未使用的IP地址,根据其中封装的 DHCP 客户端的 MAC 地址实查找自己的数据库,看是否有针对该 MAC 地址的配置信息。如果有,则使用这些配置信息来构建并发送 DHCP 提供报文;则采用默认配置信息来构建并发送 DHCP 提供报文。并通过广播或单播方式向客户端发送一个 DHCP Offer 消息。
DHCP 服务器从自己的 IP 地址池中挑选待租用给主机的IP地址时,会使用ARP确保所选IP地址未被网络中其他主机占用。
-
这个
Offer
消息中包含了分配的 IP 地址、子网掩码、地址租期、默认网关、DNS
服务器地址等配置信息。 -
如果网络中存在多个 DHCP 服务器,客户端可能会收到多个
Offer
消息。在这种情况下,客户端通常会选择第一个收到的Offer或根据其他标准(如服务器优先级)选择一个Offer。
-
-
DHCP客户端确认地址(Request)
-
客户端在收到
DHCP Offer
后,DHCP 客户会根据 DHCP 提供报文中的事物 ID,来判断该报文是否是自己所请求的报文,然后发送一个 DHCP Request 消息给选定的 DHCP 服务器,表示它接受该服务器提供的IP地址和其他配置参数。这个
Request
消息是一个广播消息(目的IP地址为广播地址),因为首先需要征得该服务器的同意,之后才能正式使用向该DHCP服务器租用的IP地址。DHCP 请求报文中封装有事物 ID、DHCP 客户端的 MAC 地址、接受的租约中的 IP 地址、提供此租约的 DHCP 服务器端的 IP 地址等信息。
-
-
DHCP服务器确认并更新数据库(Ack/Decline)
-
当 DHCP 服务器收到客户端的
DHCP Request
消息后,它会发送一个 DHCP Ack 消息作为响应(目的IP地址为广播地址),确认客户端可以使用请求的IP地址和其他配置参数。这个Ack
消息也会更新DHCP服务器的数据库,标记该 IP 地址已经被分配出去。 -
此时,
DHCP
服务器仍会使用ARP
检测所分配到的 IP 地址是否已被网络中其他主机占用,如果 DHCP 服务器提供的 IP 地址已经被其他客户端使用(由于某种原因),则服务器会发送一个 DHCP DECLINE 消息给客户端,撤销地址租约,表示IP地址分配失败,客户端需要重新发送DHCP Discover
消息以获取新的IP地址。若未被占用,则可以使用租约中的IP地址与网络中其他主机通信了
-
地址分配机制
DHCP 提供了两种主要的地址分配机制:
-
动态分配:为客户端分配一个有使用期限的IP地址(租期)。租期到期前,客户端需要续租。这种方式适用于临时接入网络的设备。
-
静态分配:网络管理员可以为特定设备分配固定的IP地址,避免手动配置错误
在工作过程中:
-
DHCP客户端更新租约(Request/Discover)
-
当 DHCP 客户端已经和某个 IP 地址绑定后,经过 0.5 倍的租用期时间后,为了更新 IP 地址的租约,它会发送 DHCP REQUEST 单播报文。在这种情况下,客户端知道服务器的具体地址,因此可以直接向该地址发送单播请求。
-
DHCP 服务器若同意,则发回 DHCP ACK 确认报文,这样,DHCP 客户就得到了新的租用期。
-
DHCP 服务器若不同意,则发回DHCP NACK否认报文,这时,DHCP 客户必须立即停止使用之前租用的IP地址,并重新发送 DHCP Discover 发现报文来重新申请IP地址。
-
DHCP 服务器者未做出响应,则在租用期过了 87.5% 时,DHCP 客户必须重新发送
DHCP REQUEST
请求报文,然后继续等待 DHCP 服务器可能做出的反应。 -
若 DHCP 仍未做出响应,当租用期到期后,DHCP 客户必须立即停止使用之前租用的 IP 地址,并重新发送 DHCP 发现报文来重新申请 IP 地址。
-
-
DHCP客户终止租用期(Release)
- DHCP 客户可以随时提前终止 DHCP 服务器所提供的租用期,这时只需向 DHCP 服务器发送 DHCP RELEASE 释放报文段即可。
DHCP 中继代理
在每一个网络上都设置一个 DHCP
服务器会使 DHCP
服务器的数量太多。因此,在实际应用中,是使每一个网络至少有一个DHCP中继代理(通常是一台路由器),它配置了 DHCP
服务器的 IP 地址信息,作为各网络中计算机与 DHCP
服务器的桥梁。
总结
DHCP
是一种高效的网络管理协议,通过自动分配 IP 地址和网络配置信息,极大地简化了网络管理流程,提高了网络的灵活性和可扩展性。它在现代网络中扮演着不可或缺的角色,尤其是在局域网、无线网络和云计算环境中。