随着网络规模的扩大和网络复杂度的增加,配置变得更加复杂。此外,计算机和移动设备(如移动笔记本电脑或无线终端)的数量急剧增加,导致IP地址频繁更换,IP资源不足。动态主机配置协议 (DHCP) 用于为主机动态分配 IP 地址。
一、什么是 DHCP?
动态主机配置协议(DHCP)是一种为互联网终端动态提供配置参数的协议。当终端提交申请时,DHCP服务器可以为终端提供IP地址、网关、DNS服务器地址等参数。基本的 DHCP 协议由 3 个角色组成:DHCP 服务器、DHCP 客户端和 DHCP Snooping/relay(可选)。
![](https://www.vsol.com.cn/wp-content/uploads/2023/03/image-222.webp)
在 TCP/IP 网络上,每个工作站必须在访问网络及其资源之前执行基本的网络配置。需要配置的关键参数包括 IP 地址、子网掩码、默认网关和 DNS。
在大型网络中,确保所有主机都具有正确的配置可能是一项艰巨的管理任务,尤其是对于包含漫游用户和笔记本电脑的动态网络。计算机经常从一个子网移动到另一个子网并从网络中删除。大量计算机的手动配置或重新配置可能需要很长时间,并且IP主机配置错误可能导致网络通信失败。
因此,需要简化IP地址配置,实现IP地址集中管理。动态主机配置协议 (DHCP) 就是为此目的而设计的。
1. DHCP可以减少配置错误。
DHCP 将手动 IP 地址配置导致的错误数量降至最低。例如,将正在使用的 IP 地址分配给另一台设备的可能性大大降低。
2. DHCP减少网络管理工作量。
TCP/IP 配置集中自动完成,无需网络管理员手动干预。网络管理员可以集中定义全局网络和特定子网的 TCP/IP 配置。DHCP 选项可以自动将所有附加的 TCP/IP 值分配给客户端。客户地址必须经常更新。例如,远程访问客户端可能随处移动,需要在新位置重新启动时进行高效自动配置。此外,大多数路由器都可以转发 DHCP 配置请求,减少了在每个子网上设置 DHCP 服务器的需要除非其他原因有必要。
二、DHCP 是如何工作的?
● DHCP 服务器
DHCP 服务器处理来自客户端或侦听/中继的地址分配、租约更新和释放请求,并将 IP 地址和其他网络配置分配给客户端。
![](https://www.vsol.com.cn/wp-content/uploads/2023/03/image-223.webp)
● DHCP 客户端
DHCP 客户端与 DHCP 服务器交换数据包以获取 IP 地址和其他网络配置。DHCP协议用于从DHCP服务器动态获取IP地址等参数,方便客户端配置和集中管理。
![](https://www.vsol.com.cn/wp-content/uploads/2023/03/image-224.webp)
● DHCP 地址申请流程
![](https://www.vsol.com.cn/wp-content/uploads/2023/03/image-230.webp)
1. DHCP 进程 – 发现
客户端通过广播本地网段的DHCP Discover报文来发现网络中的DHCP服务器。
![](https://www.vsol.com.cn/wp-content/uploads/2023/03/image-63.png)
发现阶段:
DHCP 客户端搜索 DHCP 服务器。
在发现阶段,DHCP 客户端通过发送 DHCP Discover 报文来搜索 DHCP 服务器。由于客户端不知道 DHCP 服务器的 IP 地址,所以 DHCP 客户端在网络上广播 DHCP Discover 报文。所有收到 DHCP Discover 报文的 DHCP 服务器都会发送响应报文。然后 DHCP 客户端可以知道 DHCP 服务器在网络上的位置。
![](https://www.vsol.com.cn/wp-content/uploads/2023/03/image-64.png)
2. DHCP 流程 – 提供
服务器使用可用的 IP 地址响应客户端。此地址并未真正分配,而是在分配前使用 ICMP 回显请求(或 ARP)数据包进行检查。
![](https://www.vsol.com.cn/wp-content/uploads/2023/03/image-226.webp)
Offer phase:
DHCP 服务器为 DHCP 客户端提供 IP 地址。
DHCP 服务器从 DCHP 客户端接收到 DHCP Discover 报文,从其地址池中选择一个合适的 IP 地址,并发送一个 DHCP Offer 报文,该报文中包含 IP 地址、IP 地址租期和其他配置参数(如网关地址和域名称服务器地址)到 DHCP 客户端。
3. DHCP 进程 – 请求
如果客户端收到多个 HCP Offer 报文,DHCP 客户端会根据内容选择其中一个进行响应。如果客户端之前已经获得了IP地址,则将地址写入DHCP请求报文中Options字段的Requested IP Address字段并发送给服务器。
![](https://www.vsol.com.cn/wp-content/uploads/2023/03/image-227.webp)
选择阶段:
DHCP 客户端选择一个 IP 地址。
如果多个 DHCP 服务器向一个 DHCP 客户端发送 DHCP Offer 报文,则 DHCP 客户端只会收到最先到达的 DHCP Offer 报文。然后,DHCP客户端广播一个DHCP请求报文,携带服务器标识(Option54),即客户端选择的DHCP服务器的IP地址。
DHCP Request 报文以广播方式发送,通知所有 DHCP 服务器客户端选择了 Option54 中指示的 DHCP 服务器提供的 IP 地址。因此,其他 DHCP 服务器可以回收其预先分配的 IP 地址
4. DHCP 进程 – ACK
服务器收到DHCP Request报文后,将客户端的网络地址(网络地址和硬件地址)与分配的IP地址绑定,然后将IP地址发送给客户端。
![](https://www.vsol.com.cn/wp-content/uploads/2023/03/image-65.png)
DHCP 服务器确认 IP 地址已分配给 DHCP 客户端。
DHCP服务器收到DHCP客户端发来的DHCP Request报文后,根据DHCP Request报文中携带的MAC地址查找对应的租用记录,如果找到记录,则DHCP服务器发送包含IP地址的DHCP ACK报文,客户端的其他设置。DHCP客户端收到DHCP ACK报文后,会广播一个免费的ARP报文,检测是否有其他主机在使用服务器分配的IP地址。如果在指定时间内没有收到响应,则客户端使用 IP 地址。
5. DHCP 进程 – NAK
服务器收到DHCP Request报文后,如果发现请求的地址不可用,则返回DHCP NAK。
![](https://www.vsol.com.cn/wp-content/uploads/2023/03/image-228.webp)
如果DHCP服务器收到DHCP Request报文后没有找到租约记录,或者由于特定原因分配IP地址失败,DHCP服务器会发送DHCP NAK报文通知DHCP客户端没有可用的IP地址。DHCP 客户端需要重新发送 DHCP Discover 报文申请新的 IP 地址 获取 IP 地址后,DHCP 客户端在上线前检查网关的使用状态。如果网关地址不正确或网关故障,DHCP 客户端以四步方式请求新的 IP 地址。
6. DHCP 过程 – 地址更新
当客户端地址达到租约期限(T1)的 50% 时,客户端发送 DHCP 请求单播数据包以更新租约。当客户端地址达到租约期限(T2)的 97.5% 时,客户端会发送一个 DHCP 请求广播包来更新租约。
![](https://www.vsol.com.cn/wp-content/uploads/2023/03/image-229.webp)
当 IP 地址达到租期的 50%(T1)时,DHCP 客户端会自动向 DHCP 服务器发送 DHCP 请求报文以更新租期。如果接收到DHCP ACK报文,如果接收到DHCP NAK报文,则续租成功,并重新启动申请流程。当IP地址达到租期的87.5%(T2)时,如果DHCP客户端没有收到DHCP服务器的任何响应,DHCP客户端会自动向DHCP服务器发送广播报文,更新IP地址租期。如果收到 DHCP ACK 报文,则租约续订成功。如果收到 DHCP NAK 数据包,则再次启动应用程序进程。如果客户端在其 IP 地址租期到期之前没有收到任何服务器的任何响应,
● DHCP 网络应用
在实时网络上,IP 地址通常是从本地地址池和远程地址池中分配的。OLT将IPv4地址组织成一个IPv4地址池进行管理,有以下两种方式:
1、本地地址池由OLT管理。OLT在本地地址池中分配、更新和回收IP地址。
2、远程地址池是外部DHCP服务器的镜像。它不包含实际的IP地址,而是指定地址池对应的DHCP服务器。使用远程地址池时,OLT可以代表用户发起请求或中继用户向DHCP服务器申请、更新或释放IP地址的请求。例如,DHCP 侦听或中继。