DHCP协议
一、DHCP简介
1、产生背景:网络增大,手工配置存在很多问题【人员素质要求高、容易出错、灵活性差、IP地址资源利用率低、工作量大,不利于管理等】
2、DHCP相对于静态手工配置的优点【效率高、灵活性强、易于管理等】
二、DHCP的原理与配置
(一)、DHCP的基本工作过程【发现阶段、提供阶段、请求阶段、确认阶段】如下图:
【发现阶段】:
在发现阶段,DHCP客户端会以广播的方式给自己所在在广播域中的DHCP服务器都发送一个DHCP Discover 报文,目的是寻找网络中的DHCP Server,并表示自己需要获得一个IP地址
此广播报文采用传输层的UDP 68号端口发送(封装的目的端口为UDP 68号端口),经过网络层IP协议封装后,源IP地址为0.0.0.0(因为此时还没有分配IP地址),目的IP地址为255.255.255.255(有限广播IP地址)。因为此时,DHCP客户端没有分配到IP地址,也不知道DHCP服务器或DHCP中继的IP地址,所以在DHCP DISCOVER报文中Ciaddr(客户端IP地址)、Yiaddr(被分配的DHCP客户端IP地址)、Siaddr(下一个为DHCP客户端分配IP地址的DHCP服务器地址)、Giaddr(DHCP中继IP地址)这四个字段均为0.0.0.0,如下所示。另外,从中可以看到,在CHADDR字段和DHCP选项中ClientIdentifier字段中都标识了DHCP客户端网卡MAC地址DHCP:Client Ethernet Address (chaddr) =08002B2ED85E
【提供阶段】:
是网络中的DHCP Server响应所收到的DHCP Discover 报文,把准备提供的IP地址携带在DHCP Offer 报文中,并以单播的方式发送给DHCP 客户端(注意这里Offer 报文中携带的IP地址客户端还不能直接使用)
【请求阶段】:
DHCP客户端在收到的所有Offer 报文中选择接受第一个到达客户端的Offer(通常情况下选择第一个接收到的Offer) ,并向相应的DHCP Server 以广播的方式发送DHCP Request 报文,表示自己愿意接受该Offer (在这个DHCP Request 报文中携带有R上的DHCP Server 的标识—称为Server Identifier,表示DHCP Client 只愿意接受R上的Offer,R也是通过分析这个标识来确定DHCP Client 只愿意接受自己的Offer
而该二层广播域中其他的DHCP服务器也会收到DHCP Client 所发出的DHCP Request 报文,它们则通过分析这个标识来确定DHCP Client 已经拒绝接受自己的Offer)
在DHCP request报文封装的IP协议头部中,客户端的 Source Address仍然是 0.0.0.0,数据包的 Destination 仍然是 255.255.255.255。但在DHCP request报文中Ciaddr、Yiaddr、Siaddr、Giaddr 字段的地址均0.0.0.0
【确认阶段】:
如果在提供阶段所携带的IP地址能正常地分配给DHCP Client 使用的话,那么R会以单播的方式给DHCP Client 发送一个DHCP Ack 报文,此时DHCP Client 获取地址成功;但是如果因为一些原因,在提供阶段所携带的IP地址不能分配给DHCP Client 的话,这时R则会给DHCP Client 发送一个DHCP Nak 报文,而当DHCP Client 收到R的DHCP Nak 报文后,则表示获取IP地址失败,需要重新进入到发现阶段。
在DHCP客户端在获得了一个IP地址以后,就可以发送一个免费ARP请求探测网络中是否还有其它主机使用IP地址,来避免由于DHCP服务器地址池重叠而引发的IP冲突。以上四个阶段如图11-19所示,相当于DHCP客户端与DHCP服务器的四次握手过程。
当DHCP Client 正常获得IP地址后,如下图:
从DHCP Server 获取的IP地址有一个租约时间,DHCP协议规定租约时间缺省不少于1小时,通常情况下,租约时间缺省值为24小时。
在DHCP协议中规定,在缺省情况下,当DHCP Client 使用IP地址到达T1时(租约时间的1/2),DHCP Client会以单播的方式给R发送一个DHCP Request 报文(请求续租),当到达时间T2(租约时间的7/8,即租约时间的87.5%)之前,若DHCP Client 收到R的DHCP Ack报文,则续租成功,重新开始租约期的计时;若没有收到,则DHCP Client 会在T2时刻再次以广播的方式发送DHCP Request 报文,请求续租,这时如果DHCP Client 在租约时间到达之前收到R的DHCP Ack报文,则续租成功,重新开始租约期的计时,如果没收到,则续租失败,DHCP Client 不能继续使用这个IP地址,需要重新从发现阶段开始向DHCP服务器申请新的IP地址
(二)、DHCP中继
1、DHCP中继的使用场景
从前面DHCP的工作原理我们可以知道,DHCP Client 必须和DHCP Server 在同一个二层广播域中,才能接收到彼此发送的DHCP报文,DHCP报文是无法跨越二层广播域传播的。这时,我们可以有两种方法解决这个问题:
(1)、在网络中的每个网段都设置一台DHCP Server,但是这个方法代价较大,很不经济,造成资源的很大浪费,所以现实中一般不推荐此方法
(2)、只设置一个DHCP Server,利用DHCP中继技术DHCP Relay 来实现一个DHCP Server 同时为多个二层广播域中的DHCP Client 服务,这样既节省成本,又便于集中管理
2、DHCP中继的工作原理如下图:
在DHCP中继的工作原理中和前面的DHCP工作原理基本相同,只是中间DHCP Relay 负责DHCP Client 和DHCP Server 之间的DHCP报文的转发,这里要注意的是:DHCP Relay 与DHCP Client 之间是以广播的方式进行交换DHCP报文的,而DHCP Relay 与DHCP Server 之间是以单播的方式来交换DHCP报文的。
dhcp的客户机的ip选择的问题:
首先会申请上次接入网络的ip地址,如果这个ip地址未被占用而且是处于改dhcp的网段里面的ip地址,就会优先选择这一个ip地址,如果没有,那么我们就会在范围内从小到大的选择。
DHCP客户机的ip地址的租期问题:
当客户机的租约期到%50的时候,会向DHCP服务器发送DHCP REQUEST消息包。
如果客户机接收到该服务器回应的DHCP ACK消息包,客户机就根据包中所提供的新的租期以及其它已经更新的TCP/IP参数,更新自己的配置,IP租用更新完成。
如果没有收到该服务器的回复,则客户机继续使用现有的IP地址,因为当前租期还有50%。
如果在租期过去50%的时候没有更新,则客户机将在租期过去87.5%的时候再次向为其提供IP地址的DHCP联系。
如果还不成功,到租约的100%时候,客户机必须放弃这个IP地址,重新申请。
如果此时无DHCP可用,客户机会使用111.111.0.0/16(你的dhcp服务器)中随机的一个地址,并且每隔5分钟再进行尝试