动态主机配置协议 (3)

2008-02-22 12:36:30来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5

- - - - - - - - - - - - - - - -

|B| 全为0 |

- - - - - - - - - - - - - - - -

B: 广播标记位

上图表示了标记位的格式。前面已经提到过了,DHCP的一个重要功能就是能够向客户提供网络配置参数,这种存储模型实际上就是DHCP服务为每个客户保存了一个关键字,这个关键字中保存了保存了用户特有的标记和客户的配置参数。关键字可能是一个二元组(IP子网号,硬件地址),这种设计考虑到不同子网内的硬件地址可能是一样的,所以要加入一个子网号加以区别。当然关键字也可以是(IP子网号,主机名),这是为了照顾客户机会经常在不同子网间转换,或者经常改变物理地址的情况。在协议规定是,关键字需要是(IP子网号,物理地址),当然了,如果客户在信息包中显式地应用了“客户标记”这一字段的话就不这样使用了。客户可以通过查询DHCP服务器取得配置信息。

DHCP的另外一个重要特点就是能够动态地分配网络地址,这种动态分配的机制是很简单的:客户会要求使用某一网络地址一段时间,服务器就对客户说:“好的,在这一段时间内,这个地址我不给别人。”当客户使用完这一地址后再次申请时,服务器总是优先将它使用过的地址再次分配给它。我们把这种分配称为一种“租用”。说到租用,当然了,客户也可以要求增加租用期,当客户不再使用这一地址时,它就把它还给服务器。客户也可以要求永久租用,这个永久对可不是永远,当服务器觉得客户机可能已经不存在时,它可以再次把这一地址分配给别的机器使用。当网络内地址不够用的时候,永久的分配就不可能了,当地址不够用的时候,由客户归还的地址还要被继续使用,这几乎是人人都可以想得到的,服务器可以使用配置信息库内的信息帮助它决定分配哪一个地址,比如说它可以选择最近最少使用的地址进行分配。为了安全起见,服务器应该在分配前使用ICMP协议进行探测,保证这个地址没有机器使用,客户也应该能够使用一些协议(如ARP)探测新接收的地址是不是被人使用。

下面我们来说一下服务器客户协议的内容。DHCP使用BOOTP消息格式,这种格式请见表1和图1。在每个由客户发送到服务器消息的'op'字段中包括了一个BOOTREQUEST,而在服务器发送到客户消息内的'op'字段则包括了一个BOOTREPLY。DHCP信息包内'options'字段包含了十进制数99,130,83和99,这几个值。其余的地方是称为“选项”的标记参数。有几个参数定义也没几天,大家应该注意其中的一个重要的选项“DHCP消息类型”选项,这一项必须在每个DHCP信息包中存在,其它的选项有的是必须的,有的不是必须的,有的根本就是可有可无。在下文中,消息格式就以这一选项的内容决定。

在下面的表2和图3中描述了DHCP协议包中信息的意义以及DHCP客户与服务器交换信息的流程图。下面我们就过程简述如下:

1. 客户会首先进行广播,它要地址当然是它先开口,它在本子网段内广播一个DHCPDISCOVER消息,这个消息内可能包括了它希望租用的网络地方和租用时间。BOOTP转发代理可以将这个消息传送到不在这个网段内的DHCP服务器上。

2. 每个有空闲地址的DHCP服务器都响应这个消息,在响应消息中包括了可用的地址,这个地址在消息的'yiaddr'字段中,其它的配置参数在DHCP选项中。服务器无需要保留已经分配的地址,虽然这样可能想起来更有效率。在分配时,因为未保留已经分配的地址,服务器必须想办法知道这个地址未被别的客户使用,服务器可以使用ICMP协议的回应请求进行。在分配地址时,服务器有时候可能需要使用BOOTP转发代理,这一点要在实现上给予支持。下表是各种消息及其应用:

 

消息 功能

------- ---

DHCPDISCOVER - 客户进行广播以确定本地可用的服务器。

DHCPOFFER - 服务器给客户的应答,在其中包括了配置参数。

DHCPREQUEST - 此消息是客户发送给服务器的,作用有三个:客户从一台服务器上请求配置信息(在这个时候客户也就拒绝了其它服务器发来的地址,客户就用这个地址了);在系统重新启动后,客户利用这个消息确认原来分配的网络地址仍然有效;客户还可以腹这个地址对特定的网络地址租用时间要求延期。

DHCPACK - 服务器发向用户的消息,包括了配置参数和网络地址。

DHCPNAK - 服务器发向用户的消息,告知客户当前使用的网络地址无效或租期已满。

DHCPDECLINE - 客户发向服务器的消息,告知服务器此地址已被使用。

DHCPRELEASE - 客户发向服务器的消息,告知服务器此地址不再使用。

DHCPINFORM - 客户发向服务器的消息,要求服务器发送本地配置信息,客户已经配置好了网络地址,不需要再发送网络地址了。

时间流图

3. 客户将会接收到一个或多个服务器发来的地址和配置参数。客户可以不用那么急于回应哪一个地址,它也可以挑的。当选择好了以后,客户广播DHCPREQUEST消息,在这个消息中的“服务器标记”字段中必须包括选定的服务器的标记,此消息中也可以包括希望获得的网络配置参数,而“请求IP地址”选项则要填写服务器发来信息包中'yiaddr'的内容,也就是服务器给客户提供的IP地址。DHCPREQUEST消息在本网段广播,并通过DHCP/BOOTP转发代理向不同网段转发。如果客户在规定时间内没有收到任何服务器的回应,它会再次发送DHCPDISCOVER。

 

4. 许多服务器会接收到DHCPREQUEST广播,那些没有被选择的服务器将DHCPREQUEST视为拒绝包。那个被选择的服务器会记录这个地址已经有人用了,并以包含配置参数的DHCPACK包返回给客户。“客户标记”字段和指定的网络地址用以唯一确定一个客户。服务器发送的DHCPACK包内的参数不应该和原来发送的DHCPOFFER包内的内容有冲突,服务器也不在这时再次检测提供的网络地址,在DHCPACK包内的'yiaddr'字段包括了选择的网络地址。如果被选的主机不能满足DHCPREQUEST包内的要求,它应该以DHCPNAK包回复。服务器可以将DHCPOFFER包内包括的地址设置为不可用,也可以不设置,但是如果服务器没有从客户那儿接收到DHCPREQUEST包,此地址一定要保证是可用的。

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:Daytime协议

下一篇:域名的概念与机制