原文:
https://www.cnblogs.com/tlnshuju/p/7356311.html
图解DHCP的4步租约过程
当一个DHCP客户机启动时,会自己主动将自己的IP地址配置成0.0.0.0。因为使用0.0.0.0不能进行正常通信,所以客户机就必须通过DHCPserver来获取一个合法的地址。
为客户机不知道DHCPserver的IP地址,所以它使用0.0.0.0的地址作为源地址,使用UDP68port作为源port,使用255.255.255.255作为目标地址,使用UDP67port作为目的port来广播请求IP地址信息(见图一)。广播信息中包括了DHCP客户机的MAC地址和计算机名,以便使DHCPserver能确定是哪个客户机发送的请求。
假设有:DHCPserver就将此IP地址做上标记,增加到DHCP OFFER的消息中,然后DHCPserver就广播一则包含下列信息的DHCP OFFER消息:
DHCP客户机从接收到的第一个DHCP OFFER消息中选择IP地址。发出IP地址的DHCP server将该地址保留。这样该地址就不能提供给其它DHCP客户机。当客户机从第一个DHCP server接收DHCP OFFER并选择IP地址后,DHCP租约的第三过程发生。客户机将DHCP REQUEST消息广播到全部的DHCP server,表明它接受提供的内容。DHCP REQUEST消息包含为该客户机提供IP配置的server的服务标识符(IP地址)。DHCPserver查看server标识符字段。以确定它自己是否被选择为指定的客户机提供IP地址,假设那些DHCP OFFER被拒绝。则DHCP server会取消提供并保留其IP地址以用于下一个IP租约请求。
图三:客户机选择IP
假设DHCP REQUEST不成功。比如客户机试图租约先前的IP地址,但该IP地址不再可用。或者由于客户机移到其它子网,该IP无效时,DHCPserver将广播否定确认消息DHCP NAK。当客户机接收到不成功的确认时,它将又一次開始DHCP租约过程。
IP地址的租约更新
DHCP服务器分配给客户端的IP地址有一定的租借期限,称为租约。当租约到期后,服务器会收回该IP地址。如果客户端还想继续使用该IP地址,需要申请延长租约时间。
在DHCP客户端的租约时间到达1/2时,客户端会向为它分配IP地址的DHCP服务器发送request单播报文,以进行IP租约的更新。如果服务器判断客户端可以继续使用这个IP地址,就回复ACK报文,通知客户端更新租约成功。如果此IP地址不能再分配给客户端,则回复NAK报文,通知客户端续约失败。
如果客户端在租约到达1/2时续约失败,客户端会在租约到7/8时间时,广播发送request报文进行续约。DHCP服务器处理同首次分配IP地址的流程。
DHCP共有八种报文,分别为DHCP Discover、DHCP Offer、DHCP Request、DHCP ACK、DHCP NAK、DHCP Release、DHCP Decline、DHCP Inform。各报文类型功能如表所述。
DHCP报文类型 |
描述 |
DHCP Discover |
DHCP客户端请求地址时,并不知道DHCP服务器的位置,因此DHCP客户端会在本地网络内以广播方式发送请求报文,这个报文成为Discover报文,目的是发现网络中的DHCP服务器,所有收到Discover报文的DHCP服务器都会发送回应报文,DHCP客户端据此可以知道网络中存在的DHCP服务器的位置。 |
DHCP Offer |
DHCP服务器收到Discover报文后,就会在所配置的地址池中查找一个合适的IP地址,加上相应的租约期限和其他配置信息(如网关、DNS服务器等),构造一个Offer报文,发送给用户,告知用户本服务器可以为其提供IP地址。< 只是告诉client可以提供,是预分配,还需要client通过ARP检测该IP是否重复> |
DHCP Request |
DHCP客户端可能会收到很多Offer,所以必须在这些回应中选择一个。Client通常选择第一个回应Offer报文的服务器作为自己的目标服务器,并回应一个广播Request报文,通告选择的服务器。DHCP客户端成功获取IP地址后,在地址使用租期过去1/2时,会向DHCP服务器发送单播Request报文续延租期,如果没有收到DHCP ACK报文,在租期过去3/4时,发送广播Request报文续延租期。 |
DHCP ACK |
DHCP服务器收到Request报文后,根据Request报文中携带的用户MAC来查找有没有相应的租约记录,如果有则发送ACK报文作为回应,通知用户可以使用分配的IP地址。 |
DHCP NAK |
如果DHCP服务器收到Request报文后,没有发现有相应的租约记录或者由于某些原因无法正常分配IP地址,则发送NAK报文作为回应,通知用户无法分配合适的IP地址。 |
DHCP Release |
当用户不再需要使用分配IP地址时,就会主动向DHCP服务器发送Release报文,告知服务器用户不再需要分配IP地址,DHCP服务器会释放被绑定的租约。 |
DHCP Decline |
DHCP客户端收到DHCP服务器回应的ACK报文后,通过地址冲突检测发现服务器分配的地址冲突或者由于其他原因导致不能使用,则发送Decline报文,通知服务器所分配的IP地址不可用。 |
DHCP Inform |
DHCP客户端如果需要从DHCP服务器端获取更为详细的配置信息,则发送Inform报文向服务器进行请求,服务器收到该报文后,将根据租约进行查找,找到相应的配置信息后,发送ACK报文回应DHCP客户端。< 极少用到> |