动态主机配置协议( 八 )


o 假如客户未在DHCPDISCOVER内要求租用时间,而且用户还未有网络地址,就返回本地配置的默认租用时间,要不然的话
o 假如用户在DHCPDISCOVER包内要求了租用时间(这时就不要管用户是不是已经分配网络地址了),服务器要么答应它,要么为它选择另外的租用时间 。

DHCPOFFER
DHCPACK
DHCPNAK
"op"
BOOTREPLY
BOOTREPLY
BOOTREPLY
"htype"
请参阅其它资料,这里不做讨论
"hlen"
硬件地址字节长度
"hops"
0
0
0
"xid"
同用户DHCPDISCOVER内的"xid"
同用户DHCPDISCOVER内的"xid"
同用户DHCPDISCOVER内的"xid"
"secs"
0
0
0
"ciaddr"
0
0或同DHCPREQUST内的’ciaddr’
0
"yiaddr"
提供给客户的IP地址
提供给客户的IP地址
0
"siaddr"
下一个BOOTSTRAP服务器地址
下一个BOOTSTRAP服务器地址
0
"flags"
同用户DHCPDISCOVER内的"flags"
同用户DHCPDISCOVER内的"flags"
同用户DHCPDISCOVER内的"flags"
"giaddr"
同用户DHCPDISCOVER内的"giaddr"
同用户DHCPREQUEST内的"giaddr"
同用户DHCPREQUEST内的"giaddr"
"chaddr"
同用户DHCPDISCOVER内的’chaddr’
同用户DHCPREQUEST内的’chaddr’
同用户DHCPREQUEST内的’chaddr’
"sname"
服务器名或选项
服务器名或选项
未使用
"file"
客户启动文件名或选项
客户启动文件名或选项
未使用


一旦决定了网络地址和租用时间,服务器要发出带有配置参数的DHCPOFFER 。对于配置参数的考虑要取决于以下规则: 网络地址和租用时间的决定前面已经说过了,这里就不再哆嗦了 。而其它配置参数要符合:
-- 假如服务器对某一选项已经有显式指定的值,必须使用这个值,假如没有显式指定这样的值
-- 假如服务器发现有“主机需求文档”中定义的参数,服务器返回的信息中必须包括这样的值,假如没有定义这样的数
-- 服务器不返回此参数的值
服务器必须提供尽可能多的配置参数,而且通常情况下一个参数只出现一次 。
DHCPREQUEST消息可能来自客户对DHCPOFFER的响应 。假如在DHCPREQUEST内包括“服务器标记”选项,此消息是对DHCPOFFER的响应;否则可是对延长租期的确认 。在DHCPACK内的参数不得和DHCPOFFER内的参数冲突,客户也应该使用DHCPACK内的参数进行配置 。
客户在下面几种情况下发送DHCPREQUEST 。
o DHCPREQUEST在SELECTING状态产生:
客户将选择的服务器填充在“服务器标记”,而"ciaddr"必须为0,“请求的IP地址”必须和发送来的DHCPOFFER内的yiaddr值一致 。一定要注重,客户在接收到多个DHCPOFFER之后会选择一个自己认为最合适的,客户需要在DHCPREQUEST中指出它选择了哪一个服务器 。服务器有可能根本收不到响应,因此在DHCPOFFER时,服务器并未分配这个地址,它可以用这个地址响应其它用户的请求 。
o DHCPREQUEST在INIT-REBOOT状态产生:
“服务器标记”不填,“请求的IP地址”填充原先指定的网络地址,"ciaddr"必须为0 。客户是为了确认原来获得的地址和参数,假如地址,或参数,或网络不对,服务器应该发送DHCPNAK 。假如服务器内没有客户的资料,它就保持沉默,或给网络治理员发出警告 。假如DHCPREQUEST内的"giaddr"是0x0,客户和服务器在同一子网,服务器必须广播DHCPNAK消息,因为客户可能没有正确的网络地址或子网掩码,客户可能无法响应ARP请求 。假如"giaddr"不为0,客户和服务器不在同一子网,那么DHCPNAK中的广播选项必须设置,以让转发代理广播这一消息 。

推荐阅读