1 DHCP DISCOVER
DHCP服务器根据和客户机绑定的状态来处理收到的报文,服务器可以处理以下几种报文:DHCPDISCOVER、DHCPREQUEST、DHCPDECLINE和DHCPRELEASE。 当服务器收到一个DHCPDISCOVER报文,它要为请求的客户机分配一个网络地址。假如没有可以分配的第这则发回一个DHCPNAK报文。假如有可以分配的地址,则这个地址可能是:客户机原来绑定的地址(这个地址必须在服务器可以分配的地址中);客户机申请的地址;服务器从可以分配的地址中选择的新地址。同时服务器还必须为客户机指定一个租用期,假如客户机在DHCPDISCOVER中没有指定租用期并且客户机已经分配了地址,服务器选择分配此地址时指定的租用期;假如客户机没有指定租用期并且客户机没有已经分配的地址,服务器选择一个缺省的租用期;假如客户机在DHCPDISCOVER中指定了租用期则服务器选择这个租用期或另外指定一个租用期。一旦地址和租用期确定了,服务器组建一个包含这些配置信息的DHCPOFFER报文发回。 当服务器收到一个DHCPREQUEST报文时,这个报文可能是客户机对DHCPOFFER的响应,也可能是客户机在地址的租用期快满时发送的来请求延长租用期的。假如报文里包含一个“Server Identifier”选项则是客户机对DHCPOFFER的响应,否则就是请求延长对已有地址的租用。 先考虑{dy}种情况,假如服务器是报文中“Server Identifier”选项指定的服务器,则服务器检查请求的参数是否能接受。假如请求可以接受则服务器纪录新的客户机绑定,并发送一个DHCPACK报文给客户机。假如请求不能接收则发送一个DHCPNAK报文。假如这个DHCPREQUEST报文是发送给另外的服务器的,客户机选择了另外的服务器来获得配置信息,则此服务器丢弃保留的此客户机的配置信息,并释放分配给此客户机的地址。 对于第二种情况,假如请求的参数和分配此地址时协商的参数一致或者现在请求的参数可以接受,服务器发送一个DHCPACK报文,否则发送一个DHCPNAK报文。假如在“客户机IP地址”字段中的地址和服务器纪录中的IP地址不符,则服务器发送一个DHCPNAK报文。 当服务器收到一个DHCPDECLINE报文时,说明客户机通过其他的方法发现服务器推荐的地址已经被使用了,此时服务器必须标记这个地址为已分配的,应该通知本地的系统治理员可能配置上有些错误。 当服务器收到一个DHCPRELEASE报文时,服务器标志此地址为未分配,同时服务器应该保留此客户机的初始化参数以便以后用来响应此客户机的请求。 客户机可以处理从服务器收到的以下几种报文:DHCPOFFER、DHCPACK和DHCPNAK。 在初始化状态,客户机组建一个DHCPDISCOVER报文,把其中的客户机IP地址字段设为0x00000000。客户机还可以通过在此报文中加入参数请求选向来请求一些配置参数。在此报文中还包含客户机产生的一个随机数放到xid字段用来识别从服务器广播的响应。同时客户机纪录此时的本地时间以便以后计算租用期是否到期。假如客户机收到一个响应xid和发送的请求的xid不一致,客户机会不做任何处理丢弃这个报文。 客户机收集一段时间内的DHCPOFFER报文,根据一定的依据从中选一个,提取服务器标识选项字段中的服务器的IP地址,然后检查其中提供的地址是否已经被使用,假如是则向服务器发送DHCPDECLINE报文。 在重绑定状态,客户机发送一个DHCPREQUEST报文给服务器,其中客户机IP地址字段填上本机的地址。客户机可以通过在报文中加入请求参数标来请求其他具体的配置参数。客户机要产生一个随机数加入到xid字段以匹配请求和响应,同时要纪录此时本地的时间用来计算租用期是否到期。在报文中不能有Server Identifier选项,客户机以广播的方式发送这个报文。当客户机收到一个从服务器发回的匹配的DHCPACK报文,客户机就配置好了并转移到绑定状态,客户机用发送请求时纪录的时间和响应中指定的租用期的长度的和的方式来表示租用期到期的时间。 假如客户机知道DHCP服务器的地址,则无论是在初始化状态还是在重绑定状态,客户机都用这个地址发送DHCPDISCOVER或DHCPREQUEST报文而不用广播地址。假如没用收到响应,客户机就再利用广播地址发送请求。
资料引用:http://www.knowsky.com/383913.html |