为什么你插上网线就能上网?DHCP协议的底层逻辑全解析
DHCP 动态主机配置协议
1.DHCP 协议介绍
在前面,我们讲到 OSI 的网络层时,提到使用 TCP/UDP 协议进行数据传输时,需要手动配置 IP 地址、子网掩码、默认网关等参数。随着网络规模的不断扩大,这种手动配置方式变得非常繁琐和容易出错。并且,我们目前使用的多数为 IPv4 地址,IPv4 地址极其有限,并且手动分配 IP 地址容易造成地址浪费。
同时,对于移动设备如笔记本电脑、智能手机等,在不同网络环境下需要频繁更改 IP 地址配置;手动修改 IP 设置不仅麻烦,还可能导致网络连接中断。
由此便产生了 DHCP 协议,DHCP(Dynamic Host Configuration Protocol)是一种动态分配 IP 地址的网络协议,通过自动分配 IP 地址及其他 TCP/IP 参数,DHCP 可以大幅简化网络连接的工作,并且可以避免手动配置 IP 地址时产生 IP 地址冲突(两个设备使用相同的 IP 地址)。
2.DHCP 协议工作原理
在 DHCP 中,主要包括三种角色:DHCP 服务器、DHCP 客户端和 DHCP 中继:

- DHCP服务器(DHCP Server)
- 分配IP地址和配置:DHCP 服务器负责分配 IP 地址以及提供其他网络配置参数(如子网掩码、默认网关和 DNS 服务器)给网络中的客户端设备
- 管理地址池:服务器维护一个 IP 地址池,管理可用的 IP 地址及其租约(lease)时间
- 响应请求:当 DHCP 客户端发出请求时,服务器响应相应的 DHCP 消息,并提供配置参数
- DHCP客户端(DHCP Client)
- 请求配置:DHCP 客户端是网络中的设备(如计算机、打印机或智能手机),它需要从 DHCP 服务器获取 IP 地址和其他网络配置信息
- 自动配置:客户端使用 DHCP 协议自动获取 IP 地址和网络配置,无需手动设置
- DHCP中继(DHCP Relay)
- 转发请求:DHCP 中继是位于客户端和服务器之间的中间设备(如路由器或交换机)。当客户端和服务器不在同一广播域时,中继负责将客户端的请求转发到服务器,并将服务器的响应转发回客户端
- 支持跨广播域:DHCP 中继使得 DHCP 服务可以跨越不同的网络段或子网,从而允许客户端和服务器在不同的网络中工作
3.DHCP 协议工作步骤
DHCP 基于 UDP 工作,其通信链路上的步骤如下:
- DHCP 客户端将广播发送 DHCP 发现报文(DHCP DISCOVER)事务 ID 和 DHCP 客户端的 MAC 地址,封装该报文的 IP 数据报的源 IP 地址为 0.0.0.0,这是因为主机目前还未分配到 IP 地址,因此使用该地址代替,目的 IP 地址为广播地址 255.255.255.255,之所以广播发送,是因为主机现在并不知道网络中有哪几个 DHCP 服务器
- 当接收到 DHCP Discover 消息时,服务器广播 DHCP Offer 消息,包含一个可用的 IP 地址及其他配置参数
- 客户端选择一个 Offer,并发送 DHCP Request 消息请求该 IP 地址
- 服务器确认并发送 DHCP Acknowledgment 消息,完成 IP 地址分配
- 至此,DHCP 的网络设置结束,然后通信链路上的主机之间就可以进行 TCP/IP 通信了
- 当不需要 IP 地址时,客户端可以发送 DHCP 解除包(DHCPRELEASE)进行解除;另外,DHCP 的设置中通常会有一个租期时间的设定,DHCP 客户端在这个时限内可以发送 DHCP 请求包通知想要延长这个期限

在前面,我们讲到 OSI 的网络层时,提到使用 TCP/UDP 协议进行数据传输时,需要手动配置 IP 地址、子网掩码、默认网关等参数。随着网络规模的不断扩大,这种手动配置方式变得非常繁琐和容易出错。并且,我们目前使用的多数为 IPv4 地址,IPv4 地址极其有限,并且手动分配 IP 地址容易造成地址浪费。
浙公网安备 33010602011771号