📄 动态主机配置协议.htm
字号:
align=justify>DHCP客户全权负责消息的再次传送。客户必须采用一种算法来决定采用何种算法来选择隔多长时间再次发送。这个时间要选择的合适,不要服务器的应答还没有来,客户就不烦麻而重新发送了,说起来容易,实际上还是很即使做到的,因为网络的结构与性能都是不好预测的。机器在重新发送前可以通知用户。</P>
<P
align=justify>通常情况下,DHCP服务器和BOOTP转发代理试图把DHCPOFFER,DHCPACK和DHCPNAK直接传送给客户。IP目的地址被设备在DHCP
'yiaddr'域内,而数据链路层地址设置在'chaddr'域内。但是,请注意,如果客户还没有设置IP时,它不会接收这种传送的。这样的客户需要在发送给客户的包内将广播位设置为1,这样服务器和转发代理就会在客户所在子网内广播这个消息。如果能够直接接收,就不要为网络造成不必要的负担,不要采用广播的形式了。</P>
<P
align=justify>如果客户要求广播,服务器和转发代理应该向IP广播地址发送这个包。如果客户未要求广播,则直接使用IP协议传送就是了,这时需要使用'yiaddr'域内的IP地址和'chaddr'域内的数据链路层地址。</P>
<P
align=justify>DHCP服务器不必理会所有的请求,管理员可以对服务器采用严格的管理机制,只对这个网络中注册的客户响应。本文是讨论服务器理会的客户和服务器之间的关系。服务器在为客户服务时必须保留客户的唯一标记,客户可以直接在发送的请求包内设置“客户标记”域,这样服务器和客户的所有消息中都必须包括这个唯一的标记,也靠这个标记来识别客户。如果客户未使用这个域,服务器使用'chaddr'域来达到唯一标记的目的,但这样做可能会有意想不到的结果,因为这个域一般和网络适配器相关,是硬件地址,这个适配器却可以被别的客户使用,这时候事情就坏了。有时候可以选择DNS名和一个客户相关,这时候网络就是被分配给DNS域而不是一个硬件单元。而客户在识别服务器方面就没这么麻烦了,反正从谁那儿用都一样。</P>
<P align=justify>DHCP服务器的动作要视客户的响应而定,服务器可能从客户那儿接收如下几种包:</P>
<P align=justify>o DHCPDISCOVER</P>
<P align=justify>o DHCPREQUEST</P>
<P align=justify>o DHCPDECLINE</P>
<P align=justify>o DHCPRELEASE</P>
<P align=justify>o DHCPINFORM</P>
<P align=justify> </P>
<P align=justify>下面我们就开始看一下服务器对各种消息的响应。</P>
<P align=justify> </P>
<P
align=justify>当服务器接到DHCPDISCOVER时,服务器为客户选择一个网络地址,如果没有可用的网络地址了,服务器需要把这个情况向管理员报告。如果有可用地址,新地址要么是客户现在使用的地址;要么是客户原来使用的,现在还未被分配给别的客户使用;要么是客户在“请求的IP地址”选项标记的地址,而且这个地址还未被分配给别的客户使用;要么这个地址是根据客户所在网段分配的,要么是根据转发代理进行分配的。那当然,有时候因为管理的原理,服务器即使有空闲的地址也不会分配给未经过授权的用户,或许还会为用户指定一个地址,即使这个客户未提出任何申请。在一些网络结构中,特别是是分网段的结构中,DHCP客户会得到一个不是本网段地址的网络地址,这是正常的。在没有接收到客户对DHCPOFFER的回应以前,服务器不得将这个地址给别的客户使用。</P>
<P align=justify> </P>
<P align=justify>下面是服务器选择租用时间的规则:</P>
<P align=justify> </P>
<P align=justify>o
如果客户未在DHCPDISCOVER内要求延长租用时间(或指定租用时间),服务器返回先前指定给此地址的最小的租用时间。(请注意:客户必须显式地要求对以前租用的地址租用时间延期),要不然的话</P>
<P align=justify>o
如果客户未在DHCPDISCOVER内要求租用时间,而且用户还未有网络地址,就返回本地配置的默认租用时间,要不然的话</P>
<P align=justify>o
如果用户在DHCPDISCOVER包内要求了租用时间(这时就不要管用户是不是已经分配网络地址了),服务器要么答应它,要么为它选择另外的租用时间。</P>
<P align=justify></FONT> </P>
<TABLE cellSpacing=1 cellPadding=7 width="100%" border=1>
<TBODY>
<TR>
<TD vAlign=top width="25%"><FONT face=宋体 size=3><B>
<P align=center>域</B></FONT></P></TD>
<TD vAlign=top width="25%"><FONT face=宋体 size=3><B>
<P align=center>DHCPOFFER</B></FONT></P></TD>
<TD vAlign=top width="25%"><FONT face=宋体 size=3><B>
<P align=center>DHCPACK</B></FONT></P></TD>
<TD vAlign=top width="25%"><FONT face=宋体 size=3><B>
<P align=center>DHCPNAK</B></FONT></P></TD></TR>
<TR>
<TD vAlign=top width="25%"><FONT face=宋体 size=3>
<P align=justify>'op'</FONT></P></TD>
<TD vAlign=top width="25%"><FONT face=宋体 size=3>
<P align=justify>BOOTREPLY</FONT></P></TD>
<TD vAlign=top width="25%"><FONT face=宋体 size=3>
<P align=justify>BOOTREPLY</FONT></P></TD>
<TD vAlign=top width="25%"><FONT face=宋体 size=3>
<P align=justify>BOOTREPLY</FONT></P></TD></TR>
<TR>
<TD vAlign=top width="25%"><FONT face=宋体 size=3>
<P align=justify>'htype'</FONT></P></TD>
<TD vAlign=top width="75%" colSpan=3><FONT face=宋体 size=3>
<P align=justify>请参阅其它资料,这里不做讨论</FONT></P></TD></TR>
<TR>
<TD vAlign=top width="25%"><FONT face=宋体 size=3>
<P align=justify>'hlen'</FONT></P></TD>
<TD vAlign=top width="75%" colSpan=3><FONT face=宋体 size=3>
<P align=justify>硬件地址字节长度</FONT></P></TD></TR>
<TR>
<TD vAlign=top width="25%"><FONT face=宋体 size=3>
<P align=justify>'hops'</FONT></P></TD>
<TD vAlign=top width="25%"><FONT face=宋体 size=3>
<P align=justify>0</FONT></P></TD>
<TD vAlign=top width="25%"><FONT face=宋体 size=3>
<P align=justify>0</FONT></P></TD>
<TD vAlign=top width="25%"><FONT face=宋体 size=3>
<P align=justify>0</FONT></P></TD></TR>
<TR>
<TD vAlign=top width="25%"><FONT face=宋体 size=3>
<P align=justify>'xid'</FONT></P></TD>
<TD vAlign=top width="25%"><FONT face=宋体 size=3>
<P align=justify>同用户DHCPDISCOVER内的'xid'</FONT></P></TD>
<TD vAlign=top width="25%"><FONT face=宋体 size=3>
<P align=justify>同用户DHCPDISCOVER内的'xid'</FONT></P></TD>
<TD vAlign=top width="25%"><FONT face=宋体 size=3>
<P align=justify>同用户DHCPDISCOVER内的'xid'</FONT></P></TD></TR>
<TR>
<TD vAlign=top width="25%"><FONT face=宋体 size=3>
<P align=justify>'secs'</FONT></P></TD>
<TD vAlign=top width="25%"><FONT face=宋体 size=3>
<P align=justify>0</FONT></P></TD>
<TD vAlign=top width="25%"><FONT face=宋体 size=3>
<P align=justify>0</FONT></P></TD>
<TD vAlign=top width="25%"><FONT face=宋体 size=3>
<P align=justify>0</FONT></P></TD></TR>
<TR>
<TD vAlign=top width="25%"><FONT face=宋体 size=3>
<P align=justify>'ciaddr'</FONT></P></TD>
<TD vAlign=top width="25%"><FONT face=宋体 size=3>
<P align=justify>0</FONT></P></TD>
<TD vAlign=top width="25%"><FONT face=宋体 size=3>
<P align=justify>0或同DHCPREQUST内的</FONT><FONT size=3>’</FONT><FONT
face=宋体 size=3>ciaddr</FONT><FONT size=3>’</FONT></P></TD>
<TD vAlign=top width="25%"><FONT face=宋体 size=3>
<P align=justify>0</FONT></P></TD></TR>
<TR>
<TD vAlign=top width="25%"><FONT face=宋体 size=3>
<P align=justify>'yiaddr'</FONT></P></TD>
<TD vAlign=top width="25%"><FONT face=宋体 size=3>
<P align=justify>提供给客户的IP地址</FONT></P></TD>
<TD vAlign=top width="25%"><FONT face=宋体 size=3>
<P align=justify>提供给客户的IP地址</FONT></P></TD>
<TD vAlign=top width="25%"><FONT face=宋体 size=3>
<P align=justify>0</FONT></P></TD></TR>
<TR>
<TD vAlign=top width="25%"><FONT face=宋体 size=3>
<P align=justify>'siaddr'</FONT></P></TD>
<TD vAlign=top width="25%"><FONT face=宋体 size=3>
<P align=justify>下一个BOOTSTRAP服务器地址</FONT></P></TD>
<TD vAlign=top width="25%"><FONT face=宋体 size=3>
<P align=justify>下一个BOOTSTRAP服务器地址</FONT></P></TD>
<TD vAlign=top width="25%"><FONT face=宋体 size=3>
<P align=justify>0</FONT></P></TD></TR>
<TR>
<TD vAlign=top width="25%"><FONT face=宋体 size=3>
<P align=justify>'flags'</FONT></P></TD>
<TD vAlign=top width="25%"><FONT face=宋体 size=3>
<P align=justify>同用户DHCPDISCOVER内的'flags'</FONT></P></TD>
<TD vAlign=top width="25%"><FONT face=宋体 size=3>
<P align=justify>同用户DHCPDISCOVER内的'flags'</FONT></P></TD>
<TD vAlign=top width="25%"><FONT face=宋体 size=3>
<P align=justify>同用户DHCPDISCOVER内的'flags'</FONT></P></TD></TR>
<TR>
<TD vAlign=top width="25%"><FONT face=宋体 size=3>
<P align=justify>'giaddr'</FONT></P></TD>
<TD vAlign=top width="25%"><FONT face=宋体 size=3>
<P align=justify>同用户DHCPDISCOVER内的'giaddr'</FONT></P></TD>
<TD vAlign=top width="25%"><FONT face=宋体 size=3>
<P align=justify>同用户DHCPREQUEST内的'giaddr'</FONT></P></TD>
<TD vAlign=top width="25%"><FONT face=宋体 size=3>
<P align=justify>同用户DHCPREQUEST内的'giaddr'</FONT></P></TD></TR>
<TR>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -