DHCP协议详解

DHCP是BOOTP的扩展,是基于C/S模式的,它提供了一种动态指定IP地址和配置参数的机制。这主要用于大型网络环境和配置比较困难的地方。DHCP服务器自动为客户机指定IP地址,指定的配置参数有些和IP协议并不相关,但这必没有关系,它的配置参数使得网络上的计算机通信变得方便而容易实现了。DHCP使IP地址的可以租用,对于许多拥有许多台计算机的大型网络来说,每台计算机拥有一个IP地址有时候可能是不必要的。租期从1分钟到100年不定,当租期到了的时候,服务器可以把这个IP地址分配给别的机器使用。客户也可以请求使用自己喜欢的网络地址及相应的配置参数。

DHCP是对BOOTP的扩展,它的包格式和BOOTP也一样,这样它就可以使用BOOTP的中转发代理来发送DHCP包了,这使得BOOTP和DHCP之间可以实现互操作。对于BOOTP转发代理来说,发的是DHCP包还是BOOTP包,它根本分不清楚。它们使用的服务器端口号是67和68,但是有些地方还有些不同:

DHCP定义了一种可以使IP地址使用一段有限时间的机制,在客户期限到了的时候可以重新分配这个IP地址。
DHCP为用户提供所有IP配置参数。
DHCP包长度比BOOTP包长度稍长。既然包比BOOTP的长,那也不是白带的,这多出的长度里包括了网络配置参数。
DHCP的包都比BOOTP的长,那协议也复杂了。DHCP有七种消息类型,而BOOTP只有两种。
下图中我们可以清楚地看到客户机请求获得网络地址和配置参数的最初几个步骤:

第一步的时候客户发出包的名称叫DHCPDISCOVER,而服务器返回包的名称叫DHCPOFFER。

1.BOOTP转发代理接收到请求包,并负责向DHCP其它网络内的DHCP服务器转发。

2.DHCP服务器以DHCPOFFER响应客户的要求,这个包内包括可用的IP地址和参数。

3.BOOTP转发代理接收包,并对它进行检查。如果它觉得没有问题,就向客户转发。

4.如果客户在发出DHCPOFFER包后一段时间内没有接收到回应,它有机会重新发送请求10次,否则就通知用户。客户机可以同时接收到许多个服务器的应答,它可以自己决定用哪一个。下图是客户决定了以后,向服务器发送应答时的情况。

5.当客户选定了某个目标服务器后,它会广播DHCPREQUEST包,用以通知选定的服务器和未选定的服务器。

6.转发工作仍然由BOOTP转发担任。

7.收到DHCPREQUEST包服务器会检查收到的包,如果包内的地址和提供的地址一致,证明现在客户机选择的是这台服务器提供的地址,如果不是,自己提供的地址被拒绝了。

8.被选定的服务器在接收到DHCPREQUEST包以后,因为某些原因可能不能向客户提供这个网络地址或参数,它可以向客户发送DHCPNAK包,如果可以提供则可以发送DHCPACK包。

客户在收到包后,检查内部的网络地址和租用时间,如果客户觉得这个包有问题,它可以发送DHCPDECLINE包拒绝这个地址,然后重新发送DHCPDISCOVER包。如果觉得没有问题,就可以接受这个配置参数。同样当客户接收到DHCPNAK包时,它也可以发送DHCPDISCOVER包。客户可以在租期到期之前释放网络地址,这通过发送DHCPRELEASE包来实现。

用户下一次可以再次获得相同的IP地址。在这一过程中,许多步骤就可以不用麻烦了,老客户当然要方便一点了。

1.客户在发送的DHCPREQUEST包内包括自己以前使用的IP地址。

2.此包由BOOTP转发代理转发。

3.DHCP服务器检查DHCPREQUEST包内包括的配置参数。

4.它如果是原来提供这个网络地址的参数的服务器,它会认出这些数来,并以DHCPACK包回应。

5.客户接收到DHCPACK包后,它可以接收或拒绝,如果拒绝它可以申请新的网络地址。

当然了,如果服务器觉得客户的请求是无效的,服务器会以DHCPNAK包响应,客户接收到这个包后,会重新会获得网络地址而发送DHCPDISCOVER包。
 
在常见的小型网络中(例如家庭网络和学生宿舍网),网络管理员都是采用手工分配IP地址的方法,而到了中、大型网络,这种方法就不太适用了。在中、大型网络,特别是大型网络中,往往有超过100台的客户机,手动分配IP地址的方法就不太合适了。因此,我们必须引入一种高效的IP地址分配方法,幸好,DHCP(DynamicHostConfigurationProtocol)为我们解决了这一难题。

  DHCP的优缺点

  DHCP服务优点不少:网络管理员可以验证IP地址和其它配置参数,而不用去检查每个主机;DHCP不会同时租借相同的IP地址给两台主机;DHCP管理员可以约束特定的计算机使用特定的IP地址;可以为每个DHCP作用域设置很多选项;客户机在不同子网间移动时不需要重新设置IP地址。

  但同时也存在不少缺点:DHCP不能发现网络上非DHCP客户机已经在使用的IP地址;当网络上存在多个DHCP服务器时,一个DHCP服务器不能查出已被其它服务器租出去的IP地址;DHCP服务器不能跨路由器与客户机通信,除非路由器允许BOOTP转发。

  工作流程

  DHCP服务的工作过程是这样的:

  1.发现阶段,即DHCP客户机寻找DHCP服务器的阶段。DHCP客户机以广播方式(因为DHCP服务器的IP地址对于客户机来说是未知的)发送DHCPdiscover发现信息来寻找DHCP服务器,即向地址255.255.255.255发送特定的广播信息。网络上每一台安装了TCP/IP协议的主机都会接收到这种广播信息,但只有DHCP服务器才会做出响应(如图1)。

2.提供阶段,即DHCP服务器提供IP地址的阶段。在网络中接收到DHCPdiscover发现信息的DHCP服务器都会做出响应,它从尚未出租的IP地址中挑选一个分配给DHCP客户机,向DHCP客户机发送一个包含出租的IP地址和其他设置的DHCPoffer提供信息(如图2)。

3.选择阶段,即DHCP客户机选择某台DHCP服务器提供的IP地址的阶段。如果有多台DHCP服务器向DHCP客户机发来的DHCPoffer提供信息,则DHCP客户机只接受第一个收到的DHCPoffer提供信息,然后它就以广播方式回答一个DHCPrequest请求信息,该信息中包含向它所选定的DHCP服务器请求IP地址的内容。之所以要以广播方式回答,是为了通知所有的DHCP服务器,他将选择某台DHCP服务器所提供的IP地址(如图3)。

4.确认阶段,即DHCP服务器确认所提供的IP地址的阶段。当DHCP服务器收到DHCP客户机回答的DHCPrequest请求信息之后,它便向DHCP客户机发送一个包含它所提供的IP地址和其他设置的DHCPack确认信息,告诉DHCP客户机可以使用它所提供的IP地址。然后DHCP客户机便将其TCP/IP 协议 与网卡绑定,另外,除DHCP客户机选中的服务器外,其他的DHCP服务器都将收回曾提供的IP地址(如图4)。

5.重新登录。以后DHCP客户机每次重新登录网络时,就不需要再发送DHCPdiscover发现信息了,而是直接发送包含前一次所分配的IP地址的DHCPrequest请求信息。当DHCP服务器收到这一信息后,它会尝试让DHCP客户机继续使用原来的IP地址,并回答一个DHCPack确认信息。如果此IP地址已无法再分配给原来的DHCP客户机使用时(比如此IP地址已分配给其它DHCP客户机使用),则DHCP服务器给DHCP客户机回答一个DHCPnack否认信息。当原来的DHCP客户机收到此DHCPnack否认信息后,它就必须重新发送DHCPdiscover发现信息来请求新的IP地址。

  6.更新租约。DHCP服务器向DHCP客户机出租的IP地址一般都有一个租借期限,期满后DHCP服务器便会收回出租的IP地址。如果DHCP客户机要延长其IP租约,则必须更新其IP租约。DHCP客户机启动时和IP租约期限过一半时,DHCP客户机都会自动向DHCP服务器发送更新其IP租约的信息。

  为了便于理解,我们把DHCP客户机比做餐馆里的客人,DHCP服务器比做服务员(一个餐馆里也可以有多个服务员),IP地址比做客户需要的食物。那么可以这样描述整个过程:客人走进餐馆,问:“有没有服务员啊?”(DHCPdiscover),多个服务员同时回答:“有,我这有鸡翅”“有,我这有汉堡”(DHCPoffer)。客人说:“好吧,我要一份汉堡”(DHCPrequest,这个客人比较死板,总是选择第一次听到的食物),端着汉堡的服务员回应了一声:“来啦”(DHCPack),并把食物端到客人面前,供其享用(将网卡和IP地址绑定)。客人下次来的时候,就直接找上次那个服务员点自己喜欢的汉堡了(DHCPrequest),如果还有汉堡,服务员会再次确认并上菜(DHCPack),而如果已经卖完了,服务员则会告诉客人:“不好意思,已经卖完了”(DHCPnack)。当然,服务员隔一段时间会来收拾一次桌子,除非客人特别说明这菜还要继续吃的,服务员会将剩菜端走。
上期我们详细介绍了DHCP的工作原理,接下来,我们就向大家说明如何在服务器上配置DHCP服务,我们选取了两种最为常见的服务器操作系统Windows2000Server和Linux作为讲解实例,另外我们还会介绍如何在常见的网络设备上配置DHCP。

  Windows2000Server

  Windows2000Server在DHCP上下了很大的功夫,不仅解决了NT4.0中的种种问题,而且还增加了许多新的特性。例如和DNS的集成,加强的DHCP监视和管理,DHCP集群服务器,DHCP目录授权等等。

  下面是在Windows2000中配置DHCP服务的实例

  1.安装DHCP服务。用管理员账号登录,在控制面板中双击“添加/删除程序”,选择“添加/删除Windows组件”,启动Windows组件向导,选中“网络服务”,单击“详细信息”,选中“动态主机分配协议”,单击“确定”,即可在该服务器上安装DHCP服务。

  2.要想使刚安装的DHCP服务器能为客户机分配IP地址,必须首先在域中为该服务器授权。使用管理员账号登录计算机,在“管理工具”菜单中打开DHCP控制台;在控制树中,右键单击想要授权的服务器,在弹出菜单中,单击“授权”,即可完成对该服务器的授权。

  小知识:授权(Authorize),这个功能非常实用和必要,因为在旧版本的DHCP服务器中任何用户都可以创建一台DHCP服务器,该服务器也可以为用户分配IP地址,这样就可能造成地址冲突,在Windows2000Server中这个问题得到了有效的解决:任何DHCP服务器只有在目录服务中被授权之后才能为客户分配IP地址,否则即使该服务器收到租用请求,也不能为客户机分配IP地址。

  3.创建并配置作用域。在控制树中,右键单击要用来分配地址的服务器,选中“新建作用域”,在接下来的向导中,依次设置作用域名、作用域的起始地址、输入子网掩码、排除的地址或地址范围、DHCP租约期限信息。名称项只是作提示用,可填任意内容。IP地址范围中有起始地址、结束地址和子网掩码的选项,我们可以分别填入10.0.0.1,10.255.255.254,255.0.0.0(如图1)。如果有必要,可在后面的选项中输入要保留的IP地址或IP地址范围。租约期限选项可设定DHCP服务器所分配的IP地址的有效期,比如设8天。最后,分配好DNS、WINS服务器,并激活作用域。

设置IP地址范围



  RedHatLinux

  在Linux上配置DHCP需要的文件有/etc/dhcpd.conf,/var/state/dhcp/

  dhcpd.leases,相关工具有/etc/rc.d/init.d/dhcpd。下面是在RedHatLinux上配置DHCP的实例:

  1.设置DHCP服务器的FQDN名

  optiondomain-name"clinet.com"

  2.设置DNS的服务器地址

  optiondomain-name-servers10.1.1.1;

  3.设置子网掩码

  optionsubnet-mask255.255.0.0;

  4.设置租约时间

  如果客户端不能请求一个指定的租用期,就使用该参数来定义该地址租用的时间长度default-lease-time1200;
如果客户端可以请求一个制订的租用期,就使用该命令来定义最长的租用时间max-lease-time87600

  5.设置子网的网段及相关范围配置

  subnet10.0.0.0netmask255.0.0.0;

  {

  range10.0.0.210.10.10.10;//指定子网的IP范围

  optionbroadcast-address10.0.0.255;//指定子网的广播地址

  optionrouters10.0.0.1;//指定网关的IP

  }

  6.给客户绑定静态IP

  hostclinet{

  hardwareethernet00:50:BA:CA:2E:D2;

  fixed-address10.10.10.10;

  }

  网络设备

  有时候,在一些中高端的网络设备(路由器、交换机)上已经集成了DHCP服务,我们便可以在网络设备上实现DHCP服务,不使用专门的主机做DHCP服务器,以节省成本。

  下面是在cisco路由器上配置DHCP的实例

  1.指定不自动分配的IP地址范围

  ipdhcpexcluded-address10.1.1.110.1.1.19//指定从10.1.1.1到10.1.1.19的IP地址是手工分配的

  2.设置DHCP地址池

  ipdhcppoolglobal//这条命令指定了DHCP地址池的名称
network10.1.0.0255.255.0.0//动态分配的IP地址范围,这里是10.1.0.0网段所有的IP地址(前面指定的非自动分配地址除外)

  3.设置DHCP附加信息

  domain-nameclient.com//为客户机配置域后缀

  dns-server10.1.1.110.1.1.2//为客户机配置DNS服务器的地址,这里是10.1.1.1和10.1.1.2

  netbios-name-server10.1.1.510.1.1.6//为客户机配置WINS服务器地址,这里是10.1.1.5和10.1.1.6

  netbios-node-typeh-node//为客户机配置节点模式(影响名称解释的顺利�如h-node是先通过wins服务器解释)

  default-router10.1.0.10010.1.0.101//为客户机配置默认网关

  4.设置租约期限

  lease8//设置租约时间为8天

  5.有时候我们需要为DHCP服务器设置子地址池,例如我们希望10.1.1.0/24这个网段的客户机的网关为10.1.1.100,我们这样设置:

  ipdhcppoolsubglobal

  network10.1.1.0255.255.255.0//global的子地址池,将从global继承域名等选项

  default-router10.1.1.10010.1.1.101//为客户机配置默认网关

  6.相关的DHCP调试命令

  noservicedhcp//停止DHCP服务

  showipdhcpbinding//显示地址分配情况

  showipdhcpconflict//显示地址冲突情况。
分享至
一键收藏,随时查看,分享好友!
0人
了这篇文章
类别: 基础知识┆阅读( 0)┆评论( 0) ┆ 返回博主首页┆ 返回博客首页
上一篇 DNS协议概述 下一篇 网络名词解释

你可能感兴趣的:(职场,协议,DHCP,休闲)