DHCP(Dynamic Host Configuration Protocol)动态主机设置协定,DHCP是一个局域网的网络协议,使用UDP协议工作,其前身是BOOTP协议
DHCP工作原理:
一)、DHCP客户端初始化
1. 广播寻找DHCP Server(DHCP Discover报文)
当DHCP客户机第一次登录网络的时候(也就是客户机上没有任何IP地址数据时),它会通过UDP 67端口向网络上发出一个DHCP Discover数据包(包中含有客户机的MAC地址和计算机名等信息)因为客户机还不知道自己属于哪一个网络,所以封包的源地址为0.0.0.0,目标地址为255.255.255.255,然后再附上DHCP Discover的信息,向网络进行广播。
DHCP Discover的等待时间预设为1秒,也就是当客户机将第一个DHCP Discover封包送出去之后,在1秒之内没有得到回应的话,就会进行第二次DHCP Discover广播。若一直没有得到回应,客户机会将这一广播包重新发送四次(以2,4,8,16秒为间隔,加上1-1000毫秒之间随机长度的时间)。如果都没有得到DHCP Server的回应,客户机会从169.254.0.0/16这个自动保留的私有IP地址中选用一个IP地址。并且每隔5分钟重新广播一次,如果收到某个服务器的响应,则继续IP租用过程。
2. 提供IP地址租用(DHCP Offer报文)
当DHCP Server收到客户机发出的DHCP Discover广播包,它会从那些还没有租出去的地址中,选择最前面的空置IP,连同其它TCP/IP设定,通过UDP 68端口响应给客户机一个DHCP Offer数据包(包中含有IP地址、子网掩码、地址租期等信息)。此时还是使用广播进行通讯,源IP地址为DHCP Server的IP地址,目标地址为255.255.255.255。同时,DHCP Server为此客户保留它提供的IP地址,从而不会为其它DHCP客户分配此IP地址。
由于客户机在开始的时候还没有IP地址,所以在其DHCP Discover封包内会带有其MAC地址信息,并且有一个XID编号来辨别该封包,DHCP Server响应的DHCP Offer封包则会根据这些资料传递给要求租约的客户。
3. 接受IP地址租约(DHCP Request报文)
如果客户机收到网络上多台DHCP服务器的响应,只会挑选其中一个DHCP OFFER(一般是最先到达的那个),并且会向网络发送一个DHCP Request广播数据包(包中含有客户端的MAC地址、接受的租约中的IP地址、提供此租约的DHCP服务器地址等),告诉所有DHCP Server它将接受哪一台服务器提供的IP地址,所有其它的DHCP服务器撤销它们的提供以便将IP地址提供给下一次IP租用请求。此时,由于还没有得到DHCP Server的最后确认,客户端仍然使用0.0.0.0为源IP地址,255.255.255.255为目标地址进行广播。
4. 租约确认(DHCP ACK报文)
当DHCP Server接收到客户机的DHCP Request之后,会广播返回给客户机一个DHCP ACK消息包,表明已经接受客户机的选择,并将这一IP地址的合法租用以及其他的配置信息都放入该广播包发给客户机。
客户机在接收到DHCP ACK广播后,会向网络发送三个针对此IP地址的ARP解析请求以执行冲突检测,查询网络上有没有其它机器使用该IP地址;如果发现该IP地址已经被使用,客户机会发出一个DHCP Decline数据包给DHCP Server,拒绝此IP地址租约,并重新发送DHCP Discover信息。此时,在DHCP服务器管理控制台中,会显示此IP地址为BAD_ADDRESS。
如果网络上没有其它主机使用此IP地址,则客户机的TCP/IP使用租约中提供的IP地址完成初始化,从而可以和其他网络中的主机进行通讯。
二)、DHCP客户端租期续约
客户机会在租期过去50%的时候,直接向为其提供IP地址的DHCP Server发送DHCP Request消息包。如果客户机接收到该服务器回应的DHCP ACK消息包,客户机就根据包中所提供的新租期以及已经更新的TCP/IP参数,更新自己的配置,IP租用更新完成。如果没有收到该服务器的回复,则客户机继续使用现有的IP地址,因为当前租期还有50%。
如果在租期过去50%的时候没有更新,则客户机将在租期过去87.5%的时候再次向为其提供IP地址的DHCP联系。如果还不成功,到租约的100%时候,客户机必须放弃这个IP地址,重新申请。如果此时无DHCP可用,客户机会使用169.254.0.0/16中随机的一个地址,并且每隔5分钟再进行尝试。
三)、DHCP协议8个封装包作用:
- DHCP Discover ------>由客户端发广播包请求DHCP服务器
- DHCP Offer ------>DHCP服务器响应客户端的dhcp discover报文并指定相应的配置参数
- DHCP Request ------>由客户端发给DHCP服务器来请求配置参数或者请求租期续约,告知服务器我将使用这个地址
- DHCP Ack ------>由服务器发给客户端,告知你可以使用这个地址
- DHCP Decline ------>当客户端发现地址已经被使用时,用来通知服务器
- DHCP Inform ------>客户端已经有IP地址时用它来向服务器请求其它参数(网关、dns)
- DHCP Nak ------>由服务器发送给客户端来表明客户端请求的地址不正确(已被使用)或者租期已过期
- DHCP Release ------>客户端要释放地址时用来通知服务器
[Huawei]ip pool kang #创建地址池kang [Huawei-ip-pool-kang]lease day 3 hour 5 #租期为3天5小时 [Huawei-ip-pool-kang]static-bind ip-address 1.1.1.200 mac-address 1234-5678-abcd #IP与mac地址静态绑定 [Huawei-ip-pool-kang]excluded-ip-address 1.1.1.240 1.1.1.254 #排除不被分配的IP