DHCP(RFC 2131,2132)是对BOOTP的扩展,这种扩展体现在两个方面:
能在一个DHCP消息中为客户提供所有的网络配置信息,如IP地址,子网掩码、默认网关的IP地址、DNS服务器等等。
能为客户动态配置TCP/IP参数。随着客户在网络不同物理位置的移动,DHCP能根据客户当前所在的子网情况为客户动态改变配置,分配相应的TCP/IP参数。
此外, DHCP还在其它一些方面降低了网络管理的复杂性:
可用的和已用的IP地址能得到更准确的监测和控制,这在IP地址有限而计算机较多时尤为重要
所有计算机的IP编址信息的改变都能在一台DHCP服务器上集中配置;也可以进行团组设置,通过对团组进行操作来一次性改变多台机器的设置
……
DHCP组件
DHCP协议:用于在DHCP服务器和客户机之间交流TCP/IP配置参数(DHCP协议数据封装在UDP中)
DHCP服务:用于管理DHCP客户请求并维护TCP/IP配置参数数据库
DHCP作用域
DHCP作用域是一个管理分组,它标识同一个物理子网所有DHCP客户机的配置参数范围。在DHCP服务器能进行动态配置前,必须限定作用域。
DHCP消息使用BOOTP端口(67)
当一个客户机使用DHCP获取网络配置时,总是在六个状态之一,如下的状态转移图描述了导致客户机在六个状态之间转移的事件和消息。
当客户机启动时,首先进入INITIALIZE状态。为开始获得其网络配置,需要首先和本地DHCP服务器通信,发送DHCPDISCOVER消息,并进入SELECT状态。
本地网上的所有DHCP服务器都会收到该DHCPDISCOVER消息,但是只有预先规划为响应该客户请求的服务器能进行响应,发送一个DHCPOFFER消息,在DHCPOFFER消息中包含了服务器提供给客户的配置信息,客户在SELECT状态收到服务器的响应消息后(如果有多个响应,则只与第一个)进一步协商租用,向服务器发出一个DHCPREQUEST请求,并进入REQUEST
服务器在收到DHCPREQUEST请求后,响应一个确认消息DHCPACK,租用开始。客户收到确认后进入BOUND状态,开始使用相应的配置信息。
客户在进入BOUND状态后,启动三个计时器,分别计时更新、重新绑定和过期,服务器可以在DHCPACK中为这些计时器指定值,若未指定,则使用默认值,第一个计时器的默认时间为总租用时间的一半(默认的最小租用期为1个小时) ,当其值达到时,客户就需要更新租用。
为进行更新租用,客户要向先前向其获得租用的服务器发送一个DHCPREQUEST请求(其中应包含客户当前使用的IP地址) ,并进入RENEW状态等待响应。
服务器可以有两种响应:
响应DHCPACK,同意客户继续使用该IP地址,并可以同时发送一个新的计时器值,客户收到确认后,回到BOUND状态。
响应DHCPNACK,不同意客户继续使用该IP地址,则客户将不能再使用该IP地址,并进入INITIALIZE状态
如果在更新时不能收到服务器的响应,则第二个计时器(重新绑定)达到总租用时间的87.5%时,客户将从RENEW状态进入REBIND状态,此时,客户假定原来的服务器已不可用,重新在本地网广播DHCPREQUEST消息(其中应包含客户当前使用的IP地址),如果有任何一个服务器响应DHCPNACK,则回到BOUND状态,继续使用当前IP地址,重置计时器。否则,返回INITIALIZE状态。
客户端在计数器没有超时的任何时间内可以随时终止租用,为终止一个租用,客户发送一个DHCPRELEASE消息给服务器,之后就不能在发送任何数据了,并返回INITIALIZE状态。
DHCP消息格式:
DHCP消息和BOOTP格式一样,但部分字段的内容和意义有变化。
和BOOTP不同的两个字段:
FLAG字段(16位)只有最高一位有意义。
B设置是请求服务器用硬件广播而非单播,以便确保主机能收到请求的IP地址。
DCHP选项:
例:
领取专属 10元无门槛券
私享最新 技术干货