什么是DHCP
DHCP全称是Dynamic Host Configuration Protocol,中文全称为动态主机配置协议。
DHCP通常被应用在大型的局域网络环境中,主要作用是集中管理和分配IP地址,使网络环境中的主机动态地获得IP地址、Gateway地址、DNS服务器地址等信息,并能够提升地址的使用率。
DHCP解决的问题。
DHCP可以解决手工分配IP地址的问题,可以避免IP地址冲突的问题,可以自动分配IP地址,使其能达到最佳的网络性能。此外,DHCP还可以保护网络环境中的主机不被未知的代理程序所干扰。
DHCP协议的工作原理:
服务器在监听状态下等待客户端的请求
客户端发出请求寻找服务器上的IP和其他网络配置信息。
服务器根据客户端的请求,返回相应的IP和其他网络配置信息。
客户端根据服务器返回的信息,自动更新其本地配置,使得后续的网络连接能够正常进行。
DHCP的IP地址分配方式主要有两种,分别是“静态分配”和“动态分配”。
IP地址的分配是以静态分配优先。
DHCP协议报文包括八种报文
报文 | 作用 |
---|---|
DHCP DISCOVER | DHCP交互的第一个报文,用来寻找DHCP服务器 |
DHCP Offer | 服务器响应DHCP DISCOVER的请求,提供IP和其他配置信息 |
DHCP Request | 广播回应服务器的DHCP OFFER报文 |
DHCP ACK | 服务器对客户端的DHCP REQUEST报文的确认报文 |
DHCP NAK | 服务器对客户端的DHCP REQUEST报文的拒绝报文 |
DHCP Decline | 客户端发现服务器送来的IP发生冲突,会发送该报文 |
DHCP Release | 客户端主动释放IP地址,服务端可以重新利用 |
DHCP Inform | 客户端再请求更详细的上网参数的(网关、DNS等) |
首次接入网络的DHCP客户端不知道DHCP服务器的IP地址,为了找到DHCP服务器,DHCP客户端以广播方式发送DHCP Discover报文(目的IP地址为255.255.255.255)给同一网段内的所有设备(包括DHCP服务器或中继)。DHCP Discover报文中携带了客户端的MAC地址、需要请求的参数列表选项、广播标志位等信息。
与DHCP客户端位于同一网段的DHCP服务器都会接收到DHCP Discover报文,DHCP服务器选择跟接收DHCP Discover报文接口的IP地址处于同一网段的地址池,并且从中选择一个可用的IP地址,然后通过DHCP OFFER报文发送给DHCP客户端。
此时的IP地址不一定是最终能用的IP地址
若等待DHCP Request报文超过16s,就将这个IP地址分配给别的客户端。
通常,DHCP服务器的地址池中会指定IP地址的租期,如果DHCP客户端发送的DHCP DISCOVER报文中携带了期望租期,二者进行进行比较,选择其中时间较短的租期分配给客户端。
为了防止IP地址冲突
DHCP服务器在发送DHCP OFFER报文前通过发送源地址为DHCP服务器IP地址、目的地址为预分配出去IP地址的ICMP ECHO REQUEST报文对分配的IP地址进行地址冲突探测。
如果在指定的时间内没有收到应答报文,表示网络中没有客户端使用这个IP地址,可以分配给客户端;
如果指定时间内收到应答报文,表示网络中已经存在使用此IP地址的客户端,则把此地址列为冲突地址。
如果有多个DHCP服务器向DHCP客户端回应DHCP Offer报文,则DHCP客户端一般只接收第一个收到的DHCP Offer报文,然后以广播方式发送DHCP Request报文,该报文中包含客户端想选择的DHCP服务器标识符和客户端IP地址。
DHCP客户端广播发送DHCP Request报文通知所有的DHCP服务器,它将选择某个DHCP服务器提供的IP地址,其他DHCP服务器可以重新将曾经分配给客户端的IP地址分配给其他客户端。
当DHCP服务器收到DHCP客户端发送的DHCP REQUEST报文后,DHCP服务器回应DHCP ACK报文,表示DHCP REQUEST报文中请求的IP地址分配给客户端使用。
当DHCP服务器收到DHCP客户端发送的DHCP Request报文后,如果DHCP服务器由于某些原因(例如协商出错或者由于发送Request过慢导致服务器已经把此地址分配给其他客户端)无法分配DHCP Request报文中的IP地址,则发送DHCP NAK报文作为应答,通知DHCP客户端无法分配此IP地址。DHCP客户端需要重新发送DHCP Discover报文来申请新的IP地址。
客户端检测IP地址是否冲突:
DHCP客户端收到DHCP ACK报文,会广播发送免费ARP报文,探测本网段是否有其他终端使用服务器分配的IP地址,如果在指定时间内没有收到回应,表示客户端可以使用此地址。如果收到了回应,说明有其他终端使用了此地址,客户端会向服务器发送DHCP Decline报文,并重新向服务器请求IP地址,同时,服务器会将此地址列为冲突地址。当服务器没有空闲地址可分配时,再选择冲突地址进行分配,尽量减少分配出去的地址冲突。
DHCP服务器通常会在内部维护一个IP地址池,记录已经分配给客户端的IP地址和其他设备正在使用的IP地址。当接收到一个新的DHCP请求时,服务器会检查该请求中的IP地址是否已经存在于已分配IP地址列表中。如果该地址已经被使用,服务器会发送一个DHCP NAK消息给客户端,指示该地址冲突,并重新提供一个可用的IP地址。
想查看单臂路由的DHCP,可以点击这个链接,文章里面有配置哦
R1(config)#int e0/0
R1(config-if)#no shutdown
R1(config-if)#ip address 192.168.10.254 255.255.255.0
R1(config-if)#ex
R1(config)#int e0/1
R1(config-if)#no shutdown
R1(config-if)#ip address 192.168.20.254 255.255.255.0
R1(config-if)#ex
R1(config)#ip dhcp pool PC1 ## 创造地址池PC1
R1(dhcp-config)#network 192.168.10.0 255.255.255.0 ## 下发范围
R1(dhcp-config)#default-router 192.168.10.254 ## 网关(跨网段通信)
R1(dhcp-config)#dns-server 8.8.8.8 ## DNS(域名解析)
R1(config)#ip dhcp excluded-address 192.168.10.250 192.168.10.254 ##禁止下发的
R1(config)#ip dhcp pool PC2 ## 创造地址池
R1(dhcp-config)#host 192.168.20.100 255.255.255.0 ## 指定下发的地址
R1(dhcp-config)#default-router 192.168.20.254 ## 网关
R1(dhcp-config)#dns-server 8.8.8.8 ## DNS
R1(dhcp-config)#client-identifier 01aabb.cc00.7000 ##绑定MAC地址
注意,此处的 01 千万不要忘记加了,否则MAC地址绑定不成功
我们是在以太网环境中,又因为01表示以太网
必须得加上哦
注意 :此处我路由器替代PC,所以,需要关闭路由功能哦
PC(config)#no ip routing ## 关闭路由功能
PC(config)#int e0/0
PC(config-if)#no shutdown
PC(config-if)#ip address dhcp ##用DHCP获取IP地址
PC2(config)#no ip routing ## 关闭路由功能
PC2(config)#int e0/0
PC2(config-if)#no shutdown
PC2(config-if)#ip address dhcp client-id e0/0 ##静态获取IP地址
DHCP的优势主要有以下几点:
① 集中管理和分配IP地址,使资源得到更加合理的利用;
② 保护网络环境中的主机不被未知的代理程序所干扰;
③ 解决了手工分配IP地址的问题,避免了IP地址冲突的问题;
④ 自动分配IP地址,提升网络性能。
DHCP的未来发展趋势。随着网络技术的不断发展,DHCP也将会不断改进和完善。未来,DHCP可能会引入更多的功能和特性,比如更高效的IP地址分配算法、更灵活的网络配置方式、更安全的用户认证机制等。同时,DHCP也将会
R1
!
ip dhcp excluded-address 192.168.10.250 192.168.10.254
!
ip dhcp pool PC1
network 192.168.10.0 255.255.255.0
default-router 192.168.10.254
dns-server 8.8.8.8
!
!
ip dhcp pool PC2
host 192.168.20.100 255.255.255.0
client-identifier 01aa.bbcc.0070.00
default-router 192.168.20.254
dns-server 8.8.8.8
!
!
interface Ethernet0/0
ip address 192.168.10.254 255.255.255.0
no shutdown
!
interface Ethernet0/1
ip address 192.168.20.254 255.255.255.0
no shutdown
!