二 使用DHCP服务的必要性
之所以要使用DHCP服务来为客户端自动分配IP地址,其主要作用有以下两个方面。
(1)简化网络配置
采用DHCP自动分配IP地址后,管理员就无须为每一个客户手动配置IP地址了,从而减轻了网络管理员的负担。这在规模稍大的网络中感受特别明显。
(2)提高IP地址的利用率
DHCP客户端在断开网络连接后,可以释放原来使用的IP地址,继续分配给其他用户使用。这对于网络IP地址资源紧缺的网络环境特别有用。如一个公司使用了标准的C类局域网网段192.168.0.0,可能实际网络用户数要稍大于这样一个C类网段所能承受的用户数(254个),但其中可能有些部门通常会有较多用户不在公司上网,如果采用DHCP自动分配方式,就可以解决IP地址数不足的问题。
以上当然是从局域网方面来考虑的,在因特网中,更是如此。
Internet在规划时,采用的是IPv4(IP第4版)的协议标准,即32 bit的IP地址标准。Internet的迅猛发展使得IPv4当初的规划已经捉襟见肘。如果全世界所有能够上网的计算机同时连接Internet,IP地址资源早就不够使用了。尽管目前正在制订IPv6的新的IP协议标准(采用128 bit来表示IP地址),但由于IPv4已经得到广泛的应用,因此IPv6的普及还需要时日。由于全世界所有能够连接Internet的计算机不可能同时在线,所以Internet上的ISP(Internet Services Provider,Internet服务提供商)对普通的联网用户可以使用DHCP服务来分配动态的IP地址,以解决IP地址不足的问题。当然这不是唯一的方式,也不可能是彻底的方式,因为事实上还可能因为所分配的IP地址数太少,使得即使不是所有用户同时在线,仍可能会有用户分配不到IP地址而上不了网。解决IP地址不足的其他方式,如重新划分子网方式,则是一种效率更高的方式,具体将在本系列丛书中的《网管员必读--超级网管经验谈》(第2版)一书中介绍。
三 IP地址自动分配技术
我们知道,IP地址分配方式有两种:手动分配静态IP地址和本章介绍的DHCP自动分配IP地址。而DHCP服务的提供是需要配置专门的DHCP服务器的。但事实上,我们在一些小型对等网中经常发现,网络中并没有配置DHCP服务,也没有为客户端手动配置静态IP地址,而用ipconfig命令一查,仍可见到客户端有一个IP地址。这是为什么呢?这个IP地址又是从哪里来的呢?
原来这就是微软Windows系统的一个IP地址自动分配技术在起作用了。Windows 98或者Windows XP这样的客户机,如果并没有设置IP地址,操作系统将自动给计算机分配一个B类的IP地址。默认分配的IP地址网段是"自动专用IP寻址(APIPA)"。APIPA将分配从169.254.0.1到169.254.255.254的IP地址和子网掩码255.255.0.0。APIPA不指派默认网关、域名系统(DNS)服务器或Windows Internet名称服务(WINS)服务器。
在客户机与网络连接时,在既没有分配静态IP地址,又无DHCP服务器的情况下,自动配置IP地址技术就会使客户机不停地向网络上发出"ping"信号以确定该IP地址是否正在使用。如果有别的计算机正在使用该地址,将重新选择一个新的地址,然后重新测试,直到配置一个可用的IP地址为止。DHCP客户机会在配置IP地址后,每隔5分钟检查一次DHCP服务器,看是否能够获得IP地址。所以网络中即使没有DHCP服务器,客户机也永远不会报告"没有设置IP地址"的错误。
这时可能就会有读者要问,既然Windows客户机自己就能够自动分配IP地址,而且还可以自行选择不冲突的IP地址,为什么还要DHCP服务器呢?这就得从这种自动IP地址分配技术本身来说起了。
首先,这种IP地址自动分配技术所分配的IP地址范围是从169.254.0.0开始的B类地址,而且是不可更改的,因此不一定满足需要。如在常见的192.168.0.0网段的局域网中,分配了这类地址的客户端就不可能与其他用户进行网络连接了,因为不在同一网段。另外,在这种IP地址自动分配技术的使用中,管理员无法对网络中的客户机IP地址进行监控,完全是Windows系统自发的行为。而DHCP服务则可以灵活地根据实际的网络环境配置不同的IP地址池。
四 DHCP与BOOTP协议的区别与联系
bootstrap协议(BOOTP)是先于DHCP开发的主机配置协议,主要用于无盘工作站网络中。DHCP协议在BOOTP的基础上进行了改进,并消除了BOOTP作为主机配置服务所具有的特殊限制。RFC 951文档定义了BOOTP。
1.BOOTP与DHCP的相似性
由于BOOTP和DHCP之间的关系,两个协议共享某些定义特征。公用元素包括以下几个。
(1)每种格式结构都用于在服务器和端之间交换消息
BOOTP和DHCP使用几乎相同的请求消息(由客户端发送)和回复消息(由服务器发送)。任何一种协议中的消息都使用576字节的单个用户数据报协议(UDP)来封装每个协议消息。对于BOOTP和DHCP,消息头除以下一种情况外,其余的都相同:用于携带可选数据的最终消息头字段。对于BOOTP,这个可选字段被称做"特定供应商区域",并限制为64个八位字节。对于DHCP,该区域被称做"选项"字段,最多可携带312个八位字节的DHCP选项信息。
(2)使用众所周知的UDP端口进行客户端/服务器通信
BOOTP和DHCP均使用相同的保留协议端口在服务器和客户端之间发送和接收消息。BOOTP和DHCP服务器均使用67号UDP端口来监听和接收客户端请求消息。BOOTP和DHCP客户端一般保留68号UDP端口,用于接受来自BOOTP服务器或DHCP服务器的消息回复。
由于DHCP和BOOTP消息使用几乎相同的格式类型和数据包结构,并且一般使用众所周知的相同服务端口,因此BOOTP和DHCP中继代理程序通常将BOOTP和DHCP消息视为基本相同的消息类型,而不做区分。
(3)作为配置服务的完整组成部分的IP地址分配
BOOTP和DHCP都在启动期间将IP地址分配给客户端,只是它们使用不同的分配方法。BOOTP通常为每个客户端提供单个IP地址的固定分配,在BOOTP服务器数据库中永久保留该地址。DHCP通常提供可用IP地址的动态、租用分配,在DHCP服务器数据库中暂时保留每个DHCP客户端地址。
2.BOOTP/DHCP的差别
BOOTP和DHCP的主机配置方式有明显的差别。表1对比了它们在功能上的差异。
表1 BOOTP和DHCP协议主机配置方式的区别
|
BOOTP |
DHCP |
|
DHCP之前设计的 |
BOOTP之后设计的 |
|
计划配置具有有限引导能力的无盘工作站 |
计划要配置经常重新分配,且具有本地硬盘驱动器和完全引导能力的联网计算机 |
|
动态BOOTP的IP地址租约默认为30天 |
DHCP的IP地址租约默认为8天 |
|
支持被称为“供应商扩展”的有限数量的客户端配置参数 |
支持被称为“选项”的较大以及可扩展的客户端配置参数集 |
|
以下为双阶段bootstrap配置过程: Ø 客户端联系BOOTP服务器以确定地址和选择引导文件名称。 Ø 客户端与日常文件传送协议(TFTP)服务器联系以进行其引导映像的文件传送 |
DHCP的单阶段引导配置过程:在这个过程中DHCP客户端与DHCP服务器协商来确定其IP地址并获得网络运行所需要的任何其他初始配置的详细信息 |
|
除了在系统重新启动时以外,BOOTP客户端不使用BOOTP服务器重新绑定或续订配置 |
DHCP客户端不需要重新启动系统来使用DHCP服务器重新绑定或续订配置。另外,客户端以设置的固定间隔进入重新绑定状态,以使用DHCP服务器来续订其租用地址分配。该过程在后台进行并且对用户是透明的 |