目录
一、DHCP基础
1.背景
随着网络规模的扩大和网络复杂度的提高,网络配置变得越来越复杂,再加上用户计算机的数量增加和位置的不固定性,出现了IP地址变化频繁,以及IP地址不足的问题
2.DHCP的作用
实现用户主机动态、合理的IP地址分配,减轻管理员压力,提高IP地址的利用率,可以使用DHCP服务来为用户主机配置IP地址,子网掩码,默认网关等网络参数。
3.DHCP的结构
最基本的DHCP网络结构中包括DHCP客户端和DHCP服务器两种设备角色。DHCP客户端通过DHCP请求获取IP地址等网络参数的设备。DHCP服务器负责为DHCP客户端分配网络参数,可以是主机、服务器OS、网络设备等。
若仅仅只有DHCP客户端和服务器,那么DHCP客户端与服务器必须在同一网段,否则需要DHCP中继设备,这个设备位于客户端和服务器之间,可以有多个,负责转发DHCP服务器和客户端之间的交互报文,协助DHCP服务器动态分配网络参数。
二、DHCP报文类型以及格式
1.DHCP DISCOVER
以广播方式发送,一发现网络中的DHCP服务器
2.DHCP OFFER
DHCP服务器以广播方式向DHCP客户端发送应答报文,告知用户服务器可以为其提供IP地址
3.DHCP REQUEST
①IP地址自动分配时:选择第一个收到OFFER应答报文的服务器作为自己的目标服务器,然后以广播的方式告知所有服务器
②DHCP客户端在成功获取IP地址后,向DHCP服务器以单播方式请求延续租约。
4.DHCP ACK
DHCP服务器以广播方式发送ACK报文,响应客户端的REQUEST报文,通知用户可以使用分配的IP地址。
5.DHCP NAK
DHCP客户端以广播的方式发送NAK应答报文,响应客户端的REQUEST报文,通知用户拒绝分配IP地址。
6.DHCP RELEASE
当DHCP客户端不需要使用IP地址时,会主动向DHCP服务器以单播方式发送RELEASE请求报文,请求DHCP服务器释放对应的IP地址。
7.DHCP DECLINE
当客户端发现服务器分配给它的IP地址发声冲突时会通过单播方式发送此报文来通知服务器,并且会重新向服务器申请地址。
三、DHCP IP地址的分配原理
DHCP客户端以UDP68号端口进行数据传输,DHCP服务器以UDP67号端口进行数据传输,在整个DHCP服务器为DHCP客户端初次提供IP地址自动分配的过程中,要经过一下4个阶段。(不考虑DHCP中继)
1.发现阶段
DHCP客户端在网络中以广播的方式发送DHCP DISCOVER请求报文,发现DHCP服务器,请求IP地址租约。
2.提供阶段
DHCP服务器通过DHCP OFFER报文以广播方式向DHCP客户端提供IP地址分配。
3.选择阶段
DHCP客户端通过DHCP REQUEST报文以广播方式确认选择第一个DHCP服务器为它提供IP地址自动分配服务
4.确认阶段
被选择的DHCP服务器通过DHCP ACK报文以广播方式把在DHCP OFFER报文中准备的IP地址租约给DHCP客户端。
5.DHCP报文交互流程
(1)DHCP客户端设备使能DHCP客户端功能时,会以广播方式发送DHCP DISCOVER报文,查找定位DHCP服务器
(2)在与DHCP客户端同局域网(中间没有隔离三层设备)中的所有DHCP服务器均可以收到客户端发送的DHCP DISCOVER报文,然后各自从自己的IP地址池冲选取一个为分配的IP地址,以广播方式向DHCP客户端发送DHCP OFFER报文。这个报文包含分配给客户端的IP地址和其他配置信息。
(3)若有多个DHCP服务器向DHCP客户端发送DHCP OFFER报文,DHCP客户端将会收到的第一个DHCP OFFER报文以广播方式发送DHCP REQUEST报文,在报文的DHCP Option50中包含客户端要请求的IP地址,也是被选的DHCP服务器为它预分配的IP地址。
(4)收到DHCP客户端发送的DHCP REQUEST报文以后,各DHCP服务器根据其中的IP地址信息可以知道自己是否被选中,没有被选中的DHCP服务器会直接丢弃该请求报文,被选中的DHCP服务器以Ping方式检查一下要分配给客户端的IP地址在网络中是否存在冲突。
确认不冲突以后以广播方式发送DHCP ACK报文
若DHCP服务器收到DHCP REQUEST报文后,没有找到可分配的IP地址,则以阿广播方式发送DHCP NCK报文作为应答,告知DHCP客户端无法分配合适的IP地址
(5)DHCP客户端收到DHCP ACK报文之后,会获取的IP地址等信息进行配置和使用,DHCP客户端在获得一个IP地址以后,会发送一个免费的APR请求报文来探测网络中是否还有其他主机也在使用它所分配到的这个IP地址,若有主机使用该IP地址,DHCP客户端会以单播方式向DHCP服务器发送DHCP DECINE报文,通知服务器该IP地址已被占用。然后重新申请一个IP地址。
(6)DHCP客户端还可以通过单播方式向DHCP服务器发送DHCP RELEASE报文主动释放原来所分配的IP地址,收到DHCP RELEASE报文后,DHCP服务器把该IP地址收回分配给其他DHCP客户端。
四、DHCP IP地址更新原理
DHCP客户端在申请到IP地址后,会保存3个定时器:租约期更新定时器、租约期重绑定定时器和租约期失效定时器,他们分别用来控制租约期更新、租约期重新绑定和租约期失效。
租约期更新定时器=1/2租约期
租约期重绑定定时器=7/8租约期
租约期失效定时器=租约期
DHCP服务器为DHCP客户端分配IP地址时会指定租约期,若DHCP服务器没有指定定时器的值,DHCP客户端会使用默认值,默认租期约为1天。
当租约期满后DHCP服务器会收回原来分配的这个IP地址,若DHCP服务器客户端希望继续使用该地址,则需要向DHCP服务器提出更新IP地址租约的申请。具体如下图:
①IP地址租约期限达到1/2时,向对应的DHCP服务器以单播方式发送DHCP REQUEST报文,以进行IP租约的更新。
②同意续约时,DHCP服务器向客户端以单播方式应答DHCP ACK报文,可以继续使用此IP地址,否则以单播方式应答DHCP ACK报文,此IP地址到期后不再分配给该客户端。
③若上面的更新申请失败,默认情况下,重绑定定时器会在租约期剩余7/8(12.5%)的时候超时,超时后DHCP客户端会认为原DHCP服务器不可用,于是开始重新在网络上以广播的方式发送DHCP REQUEST报文,此时,网络上任何一台DHCP服务器都可以应答DHCP ACK或者DHCP NAK报文。具体图示如下:
若收到DHCP ACK报文,DHCP客户端重新进入绑定状态,复位租约期更新定时器,若收到DHCP NAK报文,DHCP客户端进入初始化状态,立刻停止使用现有的IP地址,重新申请IP地址。
五、两种DHCP服务器的地址池及应用场景
1.全局地址池
所有接口(包括VLAN、子接口等三层接口)上线的用户都可以选择该地址池内的的地址,一般用于DHCP服务器和DHCP客户端在不同IP网段(要配置DHCP中继)但是也可以用于DHCP服务器和DHCP客户端在同一IP网段的时候。
2.接口地址池
只有从指定接口上线的用户才可以从该地址池中分配地址,仅应用于DHCP服务器和DHCP客户端在同一网段的情况
3.地址池选择原则
(1)无DHCP中继,DHCP服务器选择与接收DHCP请求报文的接口IP地址处于同一网段的地址池。
(2)有DHCP中继场景下,DHCP服务器选择与DHCP请求报文中giaddr字段(标识客户端所在网段)位于同一网段的地址池。
4.介绍几种经典场景下两种地址池的运用
(1)DHCP客户端与DHCP服务器不在同一IP网段,必须配置DHCP中继,只能采用全局地址池模式。
(2)DHCP客户端与DHCP服务器物理接口在同一IP网段,既可以采用全局地址池模式,也可以采用接口模式。
(3)DHCP客户端与DHCP服务器子接口在同一IP网段,既可以采用全局地址池模式,也可以采用接口地址池模式