南阳理工学院软件学院李相海在TCP/IP网络上,每台工作站在要使用网络上的资源之前,都必须进行基本的网络配置,诸如IP地址、子网掩码、默认网关、DNS的配置等。通常采用DHCP服务器技术来实现网络的TCP/IP动态配置与管理,这是网络管理任务中应用最多、最普通的一项管理技术。掌握DHCP协议的原理和工作过程掌握DHCP服务器的安装、配置与维护熟悉DHCP客户端的配置掌握复杂网络中DHCP服务器的部署在TCP/IP网络中,计算机之间通过IP地址互相通信,因此管理、分配与设置客户端IP地址的工作非常重要。以手工方式设置IP地址,不仅非常费时、费力,而且也非常容易出错,尤其在大中型网络中,手工设置IP地址更是一项非常复杂的工作。如果让服务器自动为客户端计算机配置IP地址等相关信息,就可以大大提高工作效率,并减少IP地址故障的可能性。DHCP是动态主机分配协议(DynamicHostConfigurationProtocol)的简称,是一个简化主机IP地址分配管理的TCP/IP标准协议。管理员可以利用DHCP服务器,从预先设置的IP地址池中,动态地给主机分配IP地址,不仅能够保证IP地址不重复分配,也能及时回收IP地址,以提高IP地址的利用率。TCP/IP目前已经成为互联网的公用通信协议,在局域网上也是必不可少的协议。用TCP/IP协议进行通信时,每一台计算机(主机)都必须有一个IP地址用于在网络上标识自己。对于一个设立了因特网服务的组织机构,由于其主机对外开放了诸如、FTP、E-mail等访问服务,通常要对外公布一个固定的IP地址,以方便用户访问。如果IP地址由系统管理员在每一台计算机上手动进行设置,把它设定为一个固定的IP地址时,就称为静态IP地址方案。而对于大多数拨号上网的用户,由于其上网时间和空间的离散性,为每个用户分配一个固定的静态IP地址是不现实的,如果ISP(InternetServiceProvider,互联网服务供应商)有10000个用户,就需要10000个IP地址,这将造成IP地址资源的极大浪费。截至2008年3月底,我国的IP地址已经达到1.4亿个,超过日本居世界第二,而我国上网的网民数量达到了2.53亿,超过美国成为全球第一,面临着IP地址与网络用户高速发展不匹配的问题。在局域网中,对于网络规模较大的用户,系统管理员给每一台计算机分配IP地址的工作量就会很大,而且常常会因为用户不遵守规则而出现错误,例如导致IP地址的冲突等。同时在把大批计算机从一个网络移动到另一网络,或者改变部门计算机所属子网时,同样存在改变IP地址的工作量大的问题。DHCP就是因此应运而生的,采用DHCP的方法配置的计算机IP地址的方案称为动态IP地址方案。在动态IP地址方案中,每台计算机并不设置固定的IP地址,而是在计算机开机时才被分配一个IP地址,这样可以解决IP地址不够用的问题。在DHCP网络中有三类对象,分别是DHCP客户端、DHCP服务器和DHCP数据库。DHCP是采用客户端/服务器(Client/Server)模式,有明确的客户端和服务器角色的划分,分配到IP地址的计算机被称为DHCP客户端(DHCPClient),负责给DHCP客户端分配IP地址的计算机称为DHCP服务器,DHCP数据库是DHCP服务器上的数据库,存储了DHCP服务配置的各种信息。DHCP前身是BOOTP(BootstrapProtocol,引导程序协议),所以先介绍BOOTP。BOOTP也称为自举协议,它使用UDP协议来使一个工作站自动获取配置信息。BOOTP原本是用于无盘工作站连接到网络服务器的,网络的工作站使用BOOTROM而不是硬盘起动并连接上网络服务的。为了获取配置信息,协议软件广播一个BOOTP请求报文,收到请求报文的BOOTP服务器查找出发出请求的计算机的各项配置信息(如IP地址、默认路由地址、子网掩码等),将配置信息放入一个BOOTP应答报文,并将应答报文返回给发出请求的计算机。这样,一台网络中的工作站就获得了所需的配置信息。由于计算机发送BOOTP请求报文时还没有IP地址,因此它会使用全广播地址作为目的地址,使用“0.0.0.0”作为源地址。BOOTP服务器可使用广播(Broadcast)将应答报文返回给计算机,或使用收到的广播帧上的网卡的物理地址进行单播(Unicast)。但是BOOTP设计用于相对静态的环境,管理员创建一个BOOTP配置文件,该文件定义了每一台主机的一组BOOTP参数。配置文件只能提供主机标识符到主机参数的静态映射,如果主机参数没有要求变化,BOOTP的配置信息通常保持不变。配置文件不能快速更改,此外管理员必须为每一台主机分配一个IP地址,并对服务器进行相应的配置,使它能够理解从主机到IP地址的映射。由于BOOTP是静态配置IP地址和IP参数的,不可能充分利用IP地址和大幅度减少配置的工作量,非常缺乏“动态性”,已不适应现在日益庞大和复杂的网络环境。DHCP是BOOTP的增强版本,此协议从两个方面对BOOTP进行有力的扩充:第一,DHCP可使计算机通过一个消息获取它所需要的配置信息,例如:一个DHCP报文除了能获得IP地址,还能获得子网掩码、网关等;第二,DHCP允许计算机快速动态获取IP地址,为了使用DHCP的动态地址分配机制,管理员必须配置DHCP服务器,使得它能够提供一组IP地址。任何时候一旦有新的计算机联网,新的计算机将与服务器联系并申请一个IP地址。服务器从管理员指定的IP地址中选择一个地址,并将它分配给该计算机。DHCP允许有三种类型的地址分配如下。自动分配方式:当DHCP客户端第一次成功的从DHCP服务器端租用到IP地址之后,就永远使用这个地址。动态分配方式:当DHCP第一次从HDCP服务器端租用到IP地址之后,并非永久的使用该地址,只要租约到期,客户端就得释放这个IP地址,以给其它工作站使用。当然,客户端可以比其它主机更优先的更新租约,或是租用其它的IP地址。手工分配方式:DHCP客户端的IP地址是由网络管理员指定的,DHCP服务器只是把指定的IP地址告诉客户端。动态地址分配是DHCP的最重要和新颖的功能,与BOOTP所采用的静态分配地址不同的是,动态IP地址的分配不是一对一的映射,服务器事先并不知道客户端的身份。可以配置DHCP服务器,使得任意一台客户端都可以获得IP地址并开始通信。为了使自动配置成为可能,DHCP服务器保存着网络管理员定义的一组IP地址等TCP/IP参数,DHCP客户端通过与DHCP服务器交换信息协商IP地址的使用。在交换中,服务器为客户端提供IP地址,客户端确认它已经接收此地址。一旦客户端接收了一个地址,它就开始使用此地址进行通信。将所有的TCP/IP参数保存在DHCP服务器,使网络管理员能够快速检查IP地址及其它配置参数,而不必前往每一台计算机进行操作,此外由于DHCP的数据库可以在一个中心位置(即DHCP服务器)完成更改,因此重新配置时也无需对每一台计算机进行配置。同时DHCP不会将同一个IP地址同时分配给两台计算机,从而避免了IP地址的冲突。DHCP客户端为了分配地址和DHCP服务器进行报文交换的过程如下。1.IP租约的发现阶段发现阶段是DHCP客户端寻找DHCP服务器的过程。客户端启动时,以广播方式发送DHCPDISCOVER发现报文消息,来寻找DHCP服务器,请求租用一个IP地址。由于客户端还没有自己的IP地址,所以使用0.0.0.0作为源地址,同时客户端也不知道服务器的IP地址,所以它以255.255.255.255作为目标地址。网络上每一台安装了TCP/IP协议的主机都会接收到这种广播信息,但只有DHCP服务器才会做出响应。2.IP租约的提供阶段当客户端发送要求租约的请求后,所有的DHCP服务器都收到了该请求,然后所有的DHCP服务器都会广播一个愿意提供租约的DHCPOFFER提供报文消息(除非该DHCP服务器没有空余的IP可以提供了),在DHCP服务器广播的消息中包含以下内容:源地址,DHCP服务器的IP地址;目标地址,因为这时客户端还没有自己的IP地址,所有用广播地址255.255.255.255;客户端地址,DHCP服务器可提供的一个客户端使用的IP地址;另外还有客户端的、硬件地址、子网掩码、租约的时间长度和该DHCP服务器的标识符等。3.IP租约的选择阶段如果有多台DHCP服务器向DHCP客户端发来的DHCPOFFER提供报文消息,则DHCP客户端只接受第一个收到的DHCPOFFER提供报文消息,然后就以广播方式回答一个DHCPREQUEST请求报文消息,该消息中包含向它所选定的DHCP服务器请求IP地址的内容。之所以要以广播方式回答,是为了通知所有的DHCP服务器,它将选择某台DHCP服务器所提供的IP地址,其他的DHCP服务器会撤销它们提供的租约。4.IP租约的确认阶段当DHCP服务器收到DHCP客户端回答的DHCPREQUEST请求报文消息之后,它便向DHCP客户端发送一个包含它所提供的IP地址和其它设置的DHCPACK确认报文消息,告诉DHCP客户端可以使用它所提供的IP地址。然后DHCP客户端便将其TCP/IP协议与网卡绑定,可以在局域网中与其他设备之间通信了。当IP地址使用时间达到租期的一半时,将向DHCP服务器发送一个新的DHCP请求,服务器接收到该信息后回送一个DHCP应答报文信息,以重新开始一个租用周期。该过程就像是续签租赁合同,只是续约时间必须在合同期的一半时进行。在进行IP地址的续租中有以下两种特殊情况:1.DHCP客户端重新启动时不管IP地址的租期有没有到期,DHCP客户端每次重新登录网络时,就不需要再发送DHCPDISCOVER发现报文消息了,而是直接发送包含前一次所分配的IP地址的DHCPREQUEST请求报文信息。当DHCP服务器收到这一消息后,它会尝试让DHCP客户端继续使用原来的IP地址,并回答一个DHCPACK确认报文消息。如果此IP地址已无法再分配给原来的DHCP客户端使用时(例如此IP地址已分配给其它DHCP客户端使用),则DHCP服务器给DHCP客户端回答一个DHCPNACK否认报文消息。当原来的DHCP客户端收到此DHCPNACK否认报文消息后,它就必须重新发送DHCPDISCOVER发现报文消息来请求新的IP地址。2.IP地址的租期超过一半时DHCP服务器向DHCP客户端出租的IP地址一般都有一个租借期限,期满后DHCP服务器便会收回出租的IP地址。如果DHCP客户端要延长其IP租约,则必须更新其IP租约。客户端在50%租借时间过去以后,每隔一段时间就开始请求DHCP服务器更新当前租借,如果DHCP服务器应答则租用延期。如果DHCP服务器始终没有应答,在有效租借期的87.5%时,客户端应该与其它的DHCP服务器通信,并请求更新它的配置信息。如果客户端不能和所有的DHCP服务器取得联系,租借时间到期后,必须放弃当前的IP地址,并重新发送一个DHCPDISCOVER报文开始上述的IP地址获得过程。作为优秀的IP地址管理工具,DHCP具有以下优点:1、提高效率DHCP使计算机自动获得IP地址信息并完成配置,减少了由于手工设置而可能出现的错误,并极大地提高了工作效率,降低了劳动强度。利用TCP/IP进行通信,仅有IP地址是不够的,常常还需要网关、WINS、DNS等设置,DHCP服务器除了能动态提供IP地址外,还能同时提供WINS、DNS主机名、域名等附加信息,完善IP地址参数的设置。2、便于管理当网络使用的IP地址范围改变时,只需修改DHCP服务器的IP地址池即可,而不必逐一修改网络内的所有计算机的IP地址。3、节约IP地址资源在DHCP系统中,只有当DHCP客户端请求时才由DHCP服务器提供IP地址,而当计算机关机后,又会自动释放该IP地址。通常情况下,网络内的计算机并不都是同时开机,因此,较小数量的IP地址,也能够满足较多计算机的需求。DHCP服务优点不少,但同时也存在着缺点:DHCP不能发现网络上非