动态主机配置协议( 三 )


4
用户IP地址,此字段仅当用户处于BOUND,RENEW或REBINDING状态和能够响应ARP请求时使用 。
yiaddr
4
客户IP地址
siaddr
4
用于bootstrap过程中的IP地址
giaddr
4
转发代理IP地址
chaddr
16
客户硬件地址
sname
64
可选的服务器主机名
file
128
启动文件名
options
不定
可选的参数字段
options字段的长度不定,DHCP客户可能会从服务器那里接收到长度大于576字节的包 。DHCP客户也可以使用最大DHCP包长度字段要求服务器传送的包长度在一定限度之内 。在客户使用DHCP进行配置的时候,DHCP需要使用TCP/IP软件,在配置好IP地址之前,TCP/IP软件应该能够接收并转发发送到客户硬件地址上的IP包;DHCP服务器和BOOTP转发代理在TCP/IP软件未配置好之前不能向未接收硬件单播报文的客户传送DHCP消息 。假如客户在TCP/IP软件未能配置好之前实在不能接收IP单播报文,DHCP可以使用“标记”域进行工作 。请注重下图中的那个B,它代表广播标记 。至于这个标记的具体内容,我们在文章的后面几节内讨论 。至于其它各位,它们是保留的,它们的值只能由客户设置为0 。服务器和转发代理不会理会这一字段的内容 。
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信息包中存在,其它的选项有的是必须的,有的不是必须的,有的根本就是可有可无 。在下文中,消息格式就以这一选项的内容决定 。

推荐阅读