介绍
DHCP协议即动态主机配置协议(Dynamic Host Configuration Protocol)是一种网络管理协议,用于集中对用户IP地址进行动态管理和配置。DHCP协议采用客户端/服务器通信模式,由客户端(DHCP Client)向服务器(DHCP Server)提出配置申请,DHCP Server为网络上的每个设备动态分配IP地址、子网掩码、默认网关地址,域名服务器(DNS)地址和其他相关配置参数,以便和其他IP网络通信。
为什么要有DHCP协议?
在局域网内的每台设备都有一个内网ip,该ip具有唯一性,如果让网络管理员手动配置岂不是要花费大量的精力和时间,还要承担配置错误的风险。
最好的解决办法就是实现一个服务,可以管理多个网段的配置信息,当某个网段的配置发生变化时,管理员只需要更新DHCP服务器上的相关配置即可,实现集中化管理,这就是DHCP。
因此DHCP有如下优势:
- 准确的IP配置:IP地址配置参数必须准确,点分十进制的ip在配置时很容易出错,使用DHCP服务器可以最大程度的降低这种风险。
- 减少IP地址冲突:每个连接的设备都必须有一个IP地址,但是每个地址只能使用一次,手动配置地址时,在面对大量仅定期连接的端点(移动设备)时,会发生冲突情况,DHCP可以确保每个地址仅使用一次。
- IP地址管理的自动化:没有DHCP,网络管理员需要手动分配和撤销地址,这工作量太大了。DHCP允许集中化管理。
- 高效的变更管理:DHCP的使用时更换地址,范围或端点变得非常简单,只需要更改DHCP服务器的配置即可!
DHCP协议工作流程原理
DHCP协议采用UDP作为传输协议,DHCP客户端使用源端口号为68,目的端口号为67发送请求消息到DHCP服务器,DHCP服务器使用源端口号为67,目的端口号为68回应DHCP客户端。
DHCP的客户端和DHCP的服务器必须在同一个网段下才可以工作,当DHCP客户端和DHCP服务器不在同一个网段时,必须部署DHCP中继来转发DHCP客户端和DHCP服务器之间1的DHCP报文,在DHCP客户端看来,DHCP中继就像DHCP服务器;在DHCP服务器看来DHCP中继就像DHCP客户端。
触发DHCP协议分配IP地址的常见场景
- 设备首次接入网络,比如电脑、手机连接网络,若未配置静态IP。
- DHCP租约到期,DHCP分配的IP地址具有租期,租期过半时,客户端发送DHCP Request请求续约,若未续约,IP会被回收并重新分配。
- 网络接口(Wi-Fi/网卡)重启和设备重启,会触发DHCP请求确认或更新IP地址。
- 强制释放与重新获取,用户手动执行命令,(ipconfig/release + ipconfig/renew)。
- 切换子网。
DHCP流程
- 客户端首先发起DHCP发现报文(DHCP DISCOVER)的IP数据包,由于客户端没有IP地址,也不知道DHCP服务器的地址,所以使用的是UDP广播通信,其使用广播目的地址255.255.255.255(端口67)并且使用0.0.0.0(端口68)作为源IP地址。
- DHCP服务器用DHCP提供报文(DHCP OFFER)向客户端做出响应,该报文仍然使用IP地址IP广播地址255.255.255.255,该报文信息携带服务器提供可租约的IP地址、子网掩码、默认网关、DNS服务器以及IP地址租用期。
- 客户端收到一个或多个DHCP服务器后选择一个服务器,发送DHCP请求报文DHCP REQUEST进行响应。
- 最后,DHCP服务器用DHCP ACK报文对DHCP请求报文进行响应。
在DHCP交互全程,使用的都是UDP广播通信。
疑问
如果DHCP服务器和客户端不在同一个局域网内,路由器无法转发广播包,那岂不是就无法分配ip了吗?难道说每一个局域网都要分配一个DHCP服务器吗?
为了解决这一问题,就出现了DHCP中继代理,有了中继代理之后,对不同网段的IP地址分配也可以由一个DHCP服务器进行统一管理。
- DHCP客户端向DHCP中继代理发送DHCP请求包,而DHCP中继代理在收到广播包之后,再以单播的形式发给DHCP服务器。
- 服务器端收到该包之后向DHCP中继代理返回应答,并由DHCP以广播给DHCP客户端。