1.引言
为了把协议软件做成通用的和便于移植,协议软件的编写者不会把所有的细节都固定在源代码中。相反,他们把协议软件参数化。这样在很多台计算机上可以使用同一个经过编译的二进制代码。一台计算机和另一台计算机的许多区别,都可以通过一些不同的参数来体现。在协议软件运行之前必须给每一个参数赋值。
在协议软件中给这些参数赋值的动作叫做协议配置。连接到因特网的协软件需要配置的项目包括:
①IP地址
②子网掩码
③默认路由器IP地址
④(本地)域名服务器IP地址
2.DHCP
用人工的方式给上面的参数赋值很麻烦,而且容易出错。所以采用动态主机配置协议DHCP(Dynamic HostConfiguration Protocol)。
DHCP使用客户—服务器方式。需要IP地址的主机在启动时就想DHCP服务器广播发送发现报文(DHCPDISCOVER),这是主机就成为DHCP的客户。广播发现报文是运用受限的广播(255.255.255.255),因为主机还不知道DHCP服务器在哪里,并且此时的主机是没有IP地址的,所以将发现报文的源IP地址设置为0。当DHCP收到发现报文之后,DHCP服务器先在其数据库中查找该计算机的配置信息,若找到就返回找到的信息。若没有找到,则从服务器的IP地址池(addresspool)中取一个地址分配给该计算机。DHCP服务器的回答报文叫做提供报文(DHCPOFFER)。
但是我们并不愿意在每一个网络上都设置一个DHCP服务器,这样DHCP服务器的数量太多了。因此现在是使每一个网络至少有一个DHCP中继代理(通常是一台路由器),它配置了DHCP服务器的IP地址信息,也就是其知道该为该网络提供服务的DHCP服务器在哪里。当中继代理收到主机广播发送的发现报文之后,中继代理就以单播方式向DHCP服务器转发此报文,并等待其回答。当收到DHCP的提供报文之后,再转发给请求的主机。如下图:
DHCP服务器分配给客户的IP地址是临时的,称这段时间为租用期,具体的租用期由DHCP服务器决定,DHCP服务器发送的提欧诺个报文中给出了租用的数值。
需要注意的是,收到发现报文的DHCP服务器可能不止一个,所有收到发现报文的DHCP服务器都会向客户发送提供报文,DHCP客户从几个提供报文中选择一个,并向所选择的DHCP服务器发送请求报文(DHCPREQUEST)。
之后被选择的DHCP服务器发送确认报文(DHCPACK)。从这个时候开始DHCP客户就可以使用这个IP地址了。此时DHCP客户会设置两个计时器,若租用期是T,那么两个计时器分别是T1=0.5T和T2=0.875T。
若T1时间到则DHCP客户发送请求报文要求更新租用期,若DHCP服务器同意则发送确认报文,此时计时器重置;若DHCP服务器不同意,则发送否认报文(DHCPNACK),此时DHCP客户必须立即停止使用原来的IP地址,并重新申请IP地址。
若DHCP不响应租期过半时候的请求报文,那么当第二个计时器到时的时候,DHCP服务器必须发送请求报文要求更新租用期。
当然DHCP客户可以随时提前终止服务器提供的租用期,这时只需向DHCP服务器发送释放报文(DHCPRELESEASE)即可。
原文博客:http://blog.csdn.net/sicofield/article/details/9716293