#### 1、DHCP概述
1)DHCP是什么
-DHCP:Dynamic Host Configuration Protocol :动态主机配置协议
-DHCP是一种集中对用户IP地址进行动态管理和配置的技术
2)DHCP技术背景:
-网络规模不断扩大,计算机和移动终端越来越多,都需要上网,都需要不断更新IP地址,所以安全高效的给这些终端主机分配IP地址就变的特别重要:
-所以可以动态的为主机分配IP地址的技术出现-DHCP
3)DHCP的作用
-作用:实现IP地址的动态分配和集中管理,为主机动态的分配IP地址
-优势:避免手工配置IP地址,提高工作效率,避免出错,且能快速适应网络的变化
4)DHCP角色
**DHCP客户端:**需要获取IP地址的设备,如:计算机、服务器、手机、IP电话等
**DHCP服务器:**负责为DHCP客户端分配IP地址等网络参数的设备
**DHCP中继**(中转站-可选):负责DHCP服务器和DHCP客户端之间的DHCP报文
&:如果DHCP客户端和DHCP服务器在同一网段,能够直接交互报文,不需要DHCP中继
&:如果DHCP客户端和DHCP服务器不在同一个网段,DHCP服务器无法收到DHCP客户端发送请求报文,此时,需要通过DHCP中继来转发DHCP报文
备注:企业网络中一般不需要部署DHCP中继
#### 2、DHCP服务器给首次接入网络的客户端分配网络参数的工作原理
客户端首次接入网络从DHCP服务器中获取IP地址,会经过4个阶段
1)发现阶段:客户端**广播**发送DHCP Discover报文(**DHCP发现报文**)
2) 提供阶段:服务器收到客户端发的报文后,会**单播**回复DHCP Offer报文(**DHCP回应报文**)
3) 选择阶段:客户端收到Offer报文后,会再次**广播**发送DHCP Request报文(**DHCP请求报文**)
4) 确认阶段:服务器收到客户端发报文后,会**单播**回复DHCP ACK报文(**DHCP确认报文**)
#### 3、DHCP工作过程解析:
1)客户端广播发DHCP Discover报文:作用:客户端找DHCP服务器,请求IP地址
2)服务器单播回复DHCP Offer报文:作用:服务器给客户端发IP地址、网关、DNS等
3)客户端广播发送DHCP Request报文:作用:客户端广播告知所有的服务器,选择了某某IP地址
4)服务器单播回复DHCP ACK报文 :作用:确认分配结果,只有发了ACK报文,客户端才可以使用IP
3、基于全局的DHCP实验
需求:PC1/PC2能够自动获取IP地址、网关、DNS
配置步骤:
第一步:在系统视图下开启DHCP功能
第二步:配置DHCP地址池
--创建IP地址池
--配置可分配的IP地址段
--配置网关地址
--配置DNS地址
--配置租期
第三步:配置R1路由器接口的IP地址
--这个接口接收客户端发的报文,这个接口的IP地址,即客户端的网关地址
--在这个接口下开启基于全局的DHCP功能
第四步:验证结果
R1的配置:
[R1]dhcp enable //开启DHCP功能
[R1]ip pool tedu //创建DHCP地址池
[R1-ip-pool-tedu]network 192.168.1.0 mask 24 //配置可分配的地址段
[R1-ip-pool-tedu]gateway-list 192.168.1.254 //配置网关地址
[R1-ip-pool-tedu]dns-list 8.8.8.8 //配置DNS地址
[R1-ip-pool-tedu]lease day 1 //配置租期
[R1-ip-pool-tedu]quit
[R1]int g0/0/0
[R1-G0/0/0]ip address 192.168.1.254 24 //此接口IP地址和网关地址一致
[R1-G0/0/0]dhcp select global //在接口下开启基于全局的DHCP
验证与测试:
PC1和PC2选择获取地址的方式为DHCP
然后PC1和PC2在命令行中,使用ipconfig 命令查看IP地址
5)数据抓包
4、基于接口的DHCP实验
2)需求:PC1/PC2能够自动获取IP地址、网关、DNS
3)配置步骤:
第一步:在系统视图下开启DHCP功能
第二步:配置基于接口的DHCP
-配置接口的IP地址和掩码
-在接口下开启基于接口的DHCP功能
-在接口下配置DNS地址
-在接口下配置租期
R1配置:
[R1]dhcp enable //开启dhcp功能
[R1]int g0/0/0
[R1-G0/0/0]ip address 192.168.1.254 24
[R1-G0/0/0]dhcp select interface //开启基于接口的dhcp 功能
[R1-G0/0/0]dhcp server dns-list 8.8.8.8
[R1-G0/0/0]dhcp server lease day 1
验证与测试:
PC1和PC2选择获取地址的方式为DHCP
然后PC1和PC2在命令行中,使用ipconfig 命令查看IP地址
5、扩展小命令:
基于接口的dhcp:
<R1>reset ip pool interface GigabitEthernet0/0/0 all
//重置基于接口的IP地址池,把发出去的IP地址都回收
[R1-G0/0/0]dhcp server excluded-ip-address 192.168.1.250 192.168.1.253
//在接口下做地址排除,排除的IP地址不做dhcp分发,
[R1]display ip pool interface GigabitEthernet0/0/0 used //查看接口地址池中已分发的IP地址
[R1]display ip pool interface GigabitEthernet0/0/0 all //查看接口地址池中全部地址信息
基于全局的dhcp:
<R1>reset ip pool name tedu all //重置基于全局的IP地址池,回收IP地址
[R1-ip-pool-tedu]excluded-ip-address 192.168.1.250 192.168.1.253
//在基于全局的IP地址池中做地址排除,排除的IP地址不做dhcp分发
<R1> display ip pool name tedu all //查看全局IP地址池中全部地址信息
<R1> display ip pool name tedu used //查看全局IP地址池中已分发的IP地址
Pool-name : tedu
Lease : 2 Days 0 Hours 0 Minutes
DNS-server0 : 8.8.8.8
Gateway-0 : 192.168.1.254
Mask : 255.255.255.0
-----------------------------------------------------------------------------
起始地址 结束地址 全部 已分发的地址 未分发的 冲突 排除的
Start End Total Used Idle(Expired) Conflict Disable
-----------------------------------------------------------------------------
192.168.1.1 192.168.1.254 253 2 250(0) 0 1
-----------------------------------------------------------------------------
Network section :
--------------------------------------------------------------------------
Index IP MAC Lease Status
--------------------------------------------------------------------------
250 192.168.1.251 5489-9811-58ce 2346 Used
251 192.168.1.252 5489-985f-7ebf 1801 Used
```
扩展知识,仅供参考:DHCP工作过程详解:
1)客户端广播发DHCP Discover报文:作用:客户端请求IP地址
客户端这个时候没有IP地址,如何封装数据包中的源IP地址呢?
客户端并不清楚谁是DHCP服务器,如何封装数据包中的目的IP地址呢?
所以:源IP:0.0.0.0 目标IP:255.255.255.255
源MAC地址为客户端的MAC地址,目的MAC地址为全FFFF的广播MAC地址
&:客户端发送Discover报文的时候,携带自己的MAC地址
2)服务器单播回复DHCP Offer报文:作用:服务器给客户端分发IP地址、网关、DNS等
&:如果服务器中有很多IP地址池,服务器怎么判断应该给客户端分配那个地址池里面的IP地址呢?
&:服务器根据接收客户端报文的那个接口所在的IP地址池,选择一个可用的IP地址,分给客户端
3)客户端广播发送DHCP Request报文:作用:客户端广播告知所有的服务器,选择了某某IP地址
&:DHCP服务器分配给客户端的IP地址,客户端不一定会用,服务器等待16秒,
如果16秒内客户端回复Request报文,IP地址就确定分配给客户端,如果16秒内,
客户端没有回应报文,服务器会把这个IP地址在分配给别的主机。
&:客户端发送Request报文的时候,是以广播方式发送,目的是告诉所有的DHCP服务器,
我已经选择好IP地址了,你们不要在给我发IP了,请把IP地址分配给其他的主机
4)服务器单播回复DHCP ACK报文 :作用:确认分配结果,只有发了ACK报文,客户端才可以使用IP
&: DHCP客户端收到DHCP ACK报文,会广播发送免费ARP报文(源IP和目的IP都是自己的IP地址 )
如果探测到这个IP地址绑定了别的MAC地址,就代表网络中有别的主机在使用这个IP地址,
会产生冲突,此时客户端会发送Decline(拒绝报文)告知服务器,让服务器重新分配IP地址。
&:如果DHCP服务器由于某些原因不能将这个IP地址分配给客户端了
(比如,客户端回应Request报文过慢,超过16秒了,这个IP地址被别的主机抢走了),
这种情况,DHCP服务器,会回应DHCP NAK报文,告知客户端,你太慢了,
这个地址已经分配给别的主机了,你在从第一步开始,重新发 discover报文
#### 7、DHCP客户端重用曾经使用过的地址的工作原理
1) 选择阶段:客户端**广播**发送DHCP Request报文,请求曾经使用过的IP地址。
2) 确认阶段:服务器**单播**回复DHCP ACK报文,通知DHCP客户端继续使用这个IP地址
#### 8、租期
1)租期T1:
&:当IP地址的租用时间到达50%时,客户机会以单播方式向服务器发送Request 请求报文,请求更新IP地址租期。
&:DHCP 服务器如果回复DHCP ACK确认报文给客户机,代表租期更新成功,从0开始
2)租期T2
&:如果DHCP服务器一直没有回应,那么在IP地址的租用时间到达87.5%时,客户机会以广播方式向服务器发送Request 请求报文,请求更新IP地址租期
&:DHCP服务器如果回复DHCP ACK 确认报文给客户机,代表租期更新成功,从0开始