您的位置:首页 > 其它

DHCP工作原理及协议详解

2016-10-18 22:31 176 查看
注1:在DHCP Discover报文中,客户端在请求地址时,一般会申请它之前使用过的地址,所以在option 50的字段中会存在上一次使用的地址。如果该客户所在的网络中此IP仍然可用,服务器就可以准许该申请。否则,就要看该服务器是授权的还是非授权的。 授权服务器会拒绝请求,使得客户立刻申请一个新的IP。非授权服务器仅仅忽略掉请求,导致一个客户端请求的超时,于是客户端就会放弃此请求而去申请一个新的IP地址。 注2:DHCP请求报文中主要涉及的四种报文,客户端发往服务器的均是以广播报文的格式发送,而服务器发往客户端的报文则可能是广播包也可能是单播包,判断的条件是第一个discover报文中bootp flags的参数,如果是0x0000则服务器发往客户端使用单播,如果为0x8000则使用广播。



DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是IETF为实现IP的自动配置而设计的协议,它可以为客户机自动分配IP地址、子网掩码以及缺省网关、DNS服务 器的IP地址等TCP/IP参数。了解DHCP工作过程可以帮助我们排除有关DHCP服务遇到的问题。DHCP 协议是基于UDP层之上的应用,本文结合抓报所得数据分析DHCP协议实现原理一、先了解一下需要抓取的DHCP报文客户发出的IP租用请求报文  DHCP客户机初始化TCP/IP,通过UDP端口67向网络中发送一个DHCPDISCOVER广播包,请求租用IP地址。该 广播包中的源IP地址为0.0.0.0,目标IP地址为255.255.255.255;包中还包含客户机的MAC地址和计算机名。DHCP回应的IP租用提供报文  任何接收到DHCPDISCOVER广播包并且能够提供IP地址的DHCP服务器,都会 通过UDP端口68给客户机回应一个DHCPOFFER广播包,提供一个IP地址。该广播包的源IP地址为DCHP服务器IP,目标IP地址为 255.255.255.255;包中还包含提供的IP地址、子网掩码及租期等信息。客户选择IP租用报文  客户机从不止一台DHCP服务器接收到提供之后,会选择第一个收到的DHCPOFFER 包,并向网络中广播一个 DHCPREQUEST消息包,表明自己已经接受了一个DHCP服务器提供的IP地址。该广播包中包含所接受的IP地址和服务器的IP地址。 所有其他的DHCP服务器撤消它们的提供以便将IP地址提供给下一次IP租用请求。DHCP服务器发出IP租用确认报文  被客户机选择的DHCP服务器在收到DHCPREQUEST广播后,会广播返回给客户机一个DHCPACK消息包,表明已经接受客户机的选择,并将这一IP地址的合法租用以及其他的配置信息都放入该广播包发给客户机。客户配置成功后发出的公告报文  客户机在收到DHCPACK包,会使用该广播包中的信息来配置自己的TCP/IP,则租用过程完成,客户机可以在网络中通信。至此一个客户获取IP的DHCP服务过程基本结束,不过客户获取的IP一般是用租期,到期前需要更新租期,这个过程是通过租用更新数据包来完成的。客户IP租用更新报文(1)在当前租期已过去50%时,DHCP客户机直接向为其提供IP地址的DHCP服务器发 送DHCPREQUEST消息包。如果客户机接收到该服务器回应的DHCPACK消息包,客户机就根据包中所提供的新的租期以及其它已经更新的 TCP/IP参数,更新自己的配置,IP租用更新完成。如果没收到该服务器的回复,则客户机继续使用现有的IP地址,因为当前租期还有50%。(2)如果在租期过去50%时未能成功更新,则客户机将在当前租期过去87.5%时再次向为其提供IP地址的DHCP联系。如果联系不成功,则重新开始IP租用过程。(3)如果DHCP客户机重新启动时,它将尝试更新上次关机时拥有的IP租用。如果更新未能 成功,客户机将尝试联系现有IP租用中列出的缺省网关。如果联系成功且租用尚未到期,客户机则认为自己仍然位于与它获得现有IP租用时相同的子网上(没有 被移走)继续使用现有IP地址。 如果未能与缺省网关联系成功,客户机则认为自己已经被移到不同的子网上,将会开始新一轮的IP租用过程。  DHCP客户机在发出IP租用请求的DHCPDISCOVER广播包后,将花费1秒钟的 时间等待DHCP服务器的回应,如果1秒钟没有服务器的回应,它会将这一广播包重新广播四次(以2,4,8和16秒为间隔,加上1~1000毫秒之间随机 长度的时间)。四次之后,如果仍未能收到服务器的回应,则运行Windows 2000的DHCP客户机将从169.254.0.0/16这个自动保留的私有IP地址(APIPA)中选用一个IP地址,而运行其他操作系统的DHCP 客户机将无法获得IP地址。DHCP客户机仍然每隔5分钟重新广播一次,如果收到某个服务器的回应,则继续IP租用过程。

用户从DHCP获取IP过程如下:1、 用户发出DHCPDISCOVER报文;开始抓报文时首先执行的IPCONFIG/RELEASE命令的作用是用来释放IP,这条报 文后面分析,在释放IP后执行的更新IP命令IPCONFIG/RENEW将发起一个DHCP过程,分析从这里开始。现在,客户机没有地址,它就会发出一 个DHCPDiscover报文,该报文是广播报文,所有的具有DHCP Server功能的服务器都会收到该报文。图DHCP5在图中我们可以看到该报文在链路层中发的确实是广播报文。由于DHCP协议是初始化协议,更简单的说,就是让终端获取IP 地址的协议,既然终端连IP地址都没有,何以能够发出IP报文呢?为了解决这个问题,DHCP报文的封装采取了如下措施:1、首先链路层的封装必须是广播形式,即让在同一物理子网中的所有主机都能够收到这个报文。在Ethernet_II格式的网络中,就是目标MAC为全1。2、由于终端没有IP地址,IP头中的原IP规定填为全0。3、当终端发出DHCP请求报文,它并不知道DHCP SERVER的IP地址,因此IP头中的目标IP填为子网广播IP——全1,以保证DHCP SERVER的IP协议栈不丢弃这个报文。4、上面的措施保证了DHCP SERVER能够收到终端的请求报文,但仅凭链路层和IP层信息,DHCP SERVER无法区分出DHCP报文,因此终端发出的DHCP请求报文的UDP层中的原端口为68,目标端口DstPort为67。即DHCP SERVER通过知名端口号67来判断一个报文是否是DHCP报文。DHCP协议的报文中主要数据格式详解Boot record type为1时表示是Client的请求,为2时表示是Server的应答。Hardware address typeClient 的网络硬件地址类型,1表示Client 的网络硬件是10MB的以太网类型/Hardware address lengthClient 的网络硬件地址长度,6表示Client 的网络硬件地址长度是6bytes(即以太网类型的6bytes的MAC地址)。HOPS跳数,表示当前的DHCP报文经过的DHCP RELAY(中级)的数目,每经过一个DHCP中继,此字段就会加1,此字段的作用是限制DHCP报文不要经过太多的DHCP RELAY,协议规定,当“hops”大于4(现在也有规定为16)时,这个DHCP报文就不能再进行处理,而是丢弃。Transaction id事务ID,Client每次发送DHCP请求报文时选择的随机数,用来匹配server的响应报文是对哪个请求报文的响应。Client会丢弃“ID”不匹配的响应报文。Elapsed boot time秒数,用来表示client开始DHCP请求后的时间流逝秒数flags标志,在 BOOTP中此字段是保留不用的,在DHCP协议中也只使用了其左边的最高位。Client self-assigned IPaddress客户机IP地址Client IP address server分配给client的IP地址Next Server to use in bootstrap服务器IP地址Relay AgentDHCP中继代理IP地址Client hardware address客户机硬件地址MACHost name 服务器的主机名Boot file nameClient 的启动配置文件名Vendor Information tag选项字段,此字段中包含了大量可选的终端初始配置信息和网络配置信息,对于BOOTP协议,此字段为64bytes,对于DHCP协议,此字段为64---312 bytes。其中最常用的选项列表如下:Dhcp message typecode = 53, length = 1, value= 1-8,此字段表示DHCP报文类型Router Ipcode = 3, length = IP地址长度, value=client的默认网关的 IP地址;DNS Ipcode = 6, length = IP地址长度的倍数, value= client的DNS服务器的IP地址序列;Wins Ipcode = 44, length = IP地址长度的倍数, value= client的WINS服务器的 IP地址序列;Client idcode = 61, length = client的网络硬件地址的长度+2, value=“htype”+“hlen”+ client的网络硬件地址;server idcode = 54, length = IP地址长度, value= DHCP SERVER的IP地址;其中我们要注意Transaction ID=CF04CD61和DHCP Message Type一项中type=Discover,前一项表示会话ID,即DHCP Server发回的响应报文中该结构的数值要与发出去的DHCP Discover中的该结构数值一样,后一项说明DHCP报文类型为Discover类型报文。2 DHCP SERVER回送DHCPOFFER报文从图中可以看出,DHCPOFFER报文是单播而不是广播,报文明确给出了目标MAC和 IP,这一点不同与一般的技术文章介绍。其实,DHCP SERVER给终端的响应报文是根据DHCP报文中的内容决定是广播还是单播,一般都是广播形式。通讯源端口是67,目标端口为68,客户端通过端口号 68来判断一个报文是否是DHCP SERVER的响应报文,Transaction ID=CF04CD61,表示这个报文是与图DHCP7中的DHCPDiscover报文相关的报文,因为二者标示一致。从DHCP Server回应的DHCPOffer报文中我们还可以得到DHCP拟分配给客户端的初始配置信息和网络配置信息,其中Client self-assigned IP address =0.0.0.0表示客户机还没有使用该地址Client server-assigned IP address =10.177.124.73表示DHCP Server分配给该客户机的IP地址Server IP ID=218.290.240它标示了客户机下一次发出DHCPRequest报文时,哪个DHCP Server会发出回应DHCP Message Typee=DHCP Offer表示这是一个对DHCPDiscover的回应报文Request IP address lease time =6000 表示租期是100分钟Domain Name Server=218.29.0.251域名服务器地址Gateway address=10.177.124.254网关地址Subnet mask=255.255.255.0 表示这个地址的网段是一个标准的C类地址网段所有发送DHCP Offer信息包的服务器将保留它们提供的一个IP地址。在该地址不再保留之前,该地址不能分配给其他的客户。用户发出DHCPREQUEST报文客户以广播的方式发送DHCP Request信息包作为响应。注意其中的DHCP Message Type一项中type=Request表示这是一个请求报文。客户利用DHCP Request询问服务器其它的配置选项,如:DNS或网关地址如图DHCP11DHCP SERVER回送DHCPACK报文该信息包是以单播的方式发送的。当服务器接收到DHCP Request信息包时,它以一个DHCP Acknowledge信息作为响应,其内容同DHCPOFFER类似,并在“选项”字段中增加了IP地址使用租期选项。宣告确认CLIENT收到DHCPACK报文后(经过上面的处理后,有且只有一个DHCPACK报 文),会检查DHCP SERVER分配给自己的IP地址是否能够使用,如在以太网类型的网络中,CLIENT会发出一个ARP请求来确定DHCP SERVER分配的IP地址是否已经被别人使用,如果可以使用,则CLIENT成功获得IP地址,并根据IP地址使用租期自动启动续延过程。DHCP协议报文的种类前面反复提到DHCP Message Type项,这里列出所有DHCP协议报文的种类。DHCP协议采用CLIENT-SERVER方式进行交互,其报文格式共有8种,具体含义如下:1:DHCPDISCOVER(0x01),此为Client开始DHCP过程的第一个报文2:DHCPOFFER(0x02),此为Server对DHCPDISCOVER报文的响应3:DHCPREQUEST(0x03),此报文是Slient开始DHCP过程中对server的DHCPOFFER报文的回应,或者是client续延IP地址租期时发出的报文4:DHCPDECLINE(0x04),当Client发现Server分配给它的IP地址无法使用,如IP地址冲突时,将发出此报文,通知Server禁止使用IP地址5:DHCPACK(0x05),Server对Client的DHCPREQUEST报文的确认响应报文,Client收到此报文后,才真正获得了IP地址和相关的配置信息。6:DHCPNAK(0x06),Server对Client的DHCPREQUEST报文的拒绝响应报文,Client收到此报文后,一般会重新开始新的DHCP过程。7:DHCPRELEASE(0x07),Client主动释放server分配给它的IP地址的报文,当Server收到此报文后,就可以回收这个IP地址,能够分配给其他的Client。8:DHCPINFORM(0x08),Client已经获得了IP地址,发送此报文,只是为了从DHCP SERVER处获取其他的一些网络配置信息,如route ip,DNS Ip等,这种报文的应用非常少见。是一个运行IPCONFIG/RELEASE后释放IP的报文,从图中可以看出DHCP Message Type是7,他的作用是主动释放server分配给它的IP地址的报文,Server收到此报文后,就可以回收这个IP地址,能够分配给其他的Client。上面提到的都是在已经开机的情况下获得的报文,如果计算机重新启动,是不是完全按照文章提到的四步得到IP参数。其中包含关机前获得的IP=192.168.0.22,这是不同与前面提到的 10.177.124.X段的IP。原来客户机保留了上一次获得的地址,客户机在重新启动时,如果租用期未超过50%,它就会认为它已经知道该与哪台 DHCP服务器进行联系,于是就跳过前两步,并发送另一个DhcpRequest报文给同一个服务器。如果该IP地址仍然可用的话,该DHCP服务器将给 这台客户机返回另一个确认消息。 同样,DHCP服务器上也会保留(在租用期内的)客户机的地址。如果你的DHCP服务器中的租用期设的足够长,你就会发现,重启一台客户机后,客户机总是 得到同一个地址。这正是由于客户机、服务器能保存已分配地址所造成的。如果一台客户机未从该DHCP服务器获取过地址,或者它获得的地址已过期,那么它将需要经过全部四个步骤才能得到一个IP地址。由于图太多没有将图上传。###################################################################第一部分

DHCP原理
客户发出的IP租用请求报文

DHCP客户机初始化TCP/IP,通过UDP端口67向网络中发送一个DHCPDISCOVER广播包,请求租用IP地址。该 广播包中的源IP地址为0.0.0.0,目标IP地址为255.255.255.255;包中还包含客户机的MAC地址和计算机名。

DHCP回应的IP租用提供报文

任何接收到DHCPDISCOVER广播包并且能够提供IP地址的DHCP服务器,都会通过UDP端口68给客户机回应一个DHCPOFFER广播包,提 供一个IP地址。该广播包的源IP地址为DCHP服务器IP,目标IP地址为255.255.255.255;包中还包含提供的IP地址、子网掩码及租期 等信息。

客户选择IP租用报文

客户机从不止一台DHCP服务器接收到提供之后,会选择第一个收到的DHCPOFFER包,并向网络中广播一个 DHCPREQUEST消息包,表明自己已经接受了一个DHCP服务器提供的IP地址。该广播包中包含所接受的IP地址和服务器的IP地址。 所有其他的DHCP服务器撤消它们的提供以便将IP地址提供给下一次IP租用请求。

DHCP服务器发出IP租用确认报文

被客户机选择的DHCP服务器在收到DHCPREQUEST广播后,会广播返回给客户机一个DHCPACK消息包,表明已经接受客户机的选择,并将这一IP地址的合法租用以及其他的配置信息都放入该广播包发给客户机。

客户配置成功后发出的公告报文

客户机在收到DHCPACK包,会使用该广播包中的信息来配置自己的TCP/IP,则租用过程完成,客户机可以在网络中通信。

至此一个客户获取IP的DHCP服务过程基本结束,不过客户获取的IP一般是用租期,到期前需要更新租期,这个过程是通过租用更新数据包来完成的。

客户IP租用更新报文

我们知道在TCP/IP网络应用中,网络用户PC只有在获取了一个网络地址,才可以和其他的网络用户进行通讯,在实际应用中,我们经常会遇到一些问题:比 如IP地址发生冲突、由于网关或DNS服务器地址的设置出现错误而无法访问网络中的其他主机、由于机器的经常变动位置而不得不频繁地修改IP地址。基于这 些在网络管理中所存在的种种问题,解决的方法是引入DHCP服务,以动态的方式实现客户机器的信息配置。下面从DHCP原理出发并结合本人在授课过程的实 际经验为依据,对DHCP的应用以及在实际应用中我们会遇到的各类问题和相应的解决方法做深入的探讨。
一、DHCP服务是什么 DHCP称为动态主机配置协议。DHCP服务允许工作站连接到网络并且自动获取一个IP地址。配置DHCP服务的服务器可以为每一个网络客户提供一个IP地址、子网掩码、缺省网关、一个WINS服务器的IP地址,以及一个DNS服务器的IP地址。
二、DHCP服务在实际应用中的常见问题
1、在一个子网内是否可以存在多台DHCP服务器,如果存在的话,那么该子网中的客户机能否正确获取地址,将会获取哪个DHCP服务器所分配的地 址,是否能控制客户机器能从管理人员所设置的DHCP服务器中获取地址而不会从一些非法用户自建的DHCP服务器中取得非法得IP?
2、如果网络中存在多个子网,而子网的客户机需要DHCP服务器提供地址配置,那么是采取在各个子网都安装一台DHCP服务器,还是只在某一个子网中安装DHCP服务器,让它为多个子网的客户机分配IP地址,应该如何实现?
3、如果采取在一个子网中安装DHCP服务器,让它为多个子网的客户机分配IP地址,那么应该需要在一台DHCP服务器中创建多个不同范围的作用域,而我们如何可以准确地保证相应范围的地址分配给相应子网地主机呢?
4、如果客户机器无法从DHCP服务器中获取IP地址,那么Windows2000客户机器将会如何处理自己的TCP/IP设置?
三、DHCP的工作原理
要解析第二点中所提的问题,首先要搞清楚DHCP的实际的工作过程及原理,下面就对此做简单介绍:DHCP是一个基于广播的协议,它的操作可以归结为四个阶段,这些阶段是IP租用请求、IP租用提供、IP租用选择、IP租用确认。
1、IP租用请求:在任何时候,客户计算机如果设置为自动获取IP地址,那么在它开机 时,就会检查自己当前是否租用了一个IP地址,如果没有,它就向DCHP请求一个租用,由于该客户计算机并不知道DHCP服务器的地址,所以会用 255.255.255.255作为目标地址,源地址使用0.0.0.0,在网络上广播一个DHCPDISCOVER消息,消息包含客户计算机的媒体访问控制(MAC)地址(网卡上内建的硬件地址)以及它的NetBIOS名字。
2、IP租用提供:当DHCP服务器接收到一个来自客户的IP租用请求时,它会根据自己的作用域地址池为该客户保留一个IP地址并且在网络上广播一个来实现,该消息包含客户的MAC地址、服务器所能提供的IP地址、子网掩码、租用期限,以及提供该租用的DHCP服务器本身的IP地址。
3、IP租用选择:如果子网还存在其它DHCP服务器,那么客户机在接受了某个DHCP服务器的DHCPOFFER消息后,它会广播一条包含提供租用的服务器的IP地址的DHCPREQUEST消息,在该子网中通告所有其它DHCP服务器它已经接受了一个地址的提供,其他DHCP服务器在接收到这条消息后,就会撤销为该客户提供的租用。然后把为该客户分配的租用地址返回到地址池中,该地址将可以重新作为一个有效地址提供给别的计算机使用。
4、IP租用确认: DHCP服务器接收到来自客户的DHCPREQUEST消息,它就开始配置过程的最后一个阶段,这个确认阶段由DHCP服务器发送一个DHCPACK包给客户,该包包括一个租用期限和客户所请求的所有其它配置信息,至此,完成TCP/IP配置。
四、DHCP服务常见问题的解决方案
本文第二点中我们所提出的问题有四点,以下就此4个问题做相应的分析并给出我个人的一些解决方案,相信可以对学习DHCP服务的自学者会有一定的帮助,这些问题也是在实际教学中学生提出疑问最多的知识难点。
1、根据客户计算机的IP租用原理可以知道,在一个子网内,如果存在多台DHCP服务器来提供地址配置信息,这是不违反请求、分配原则的,因为只要 中有一台客户计算机在该子网中提出IP地址租约请求,由于请求是广播形式的,所以在子网中可以有任意数量的特定DHCP服务器响应一个IP租用请求,而客 户请求后选中的是这些任意特定DHCP服务器中的某一台,这个选择具有随机性,但有一点要注意的是客户只能为每一张网络接口卡接受一个租用提供,上面所谓 特定的DHCP服务器是指那些经过系统授权的DHCP服务器,而非授权的DHCP服务器将无法在网络中提供正常的地址分配服务,这一点非常重要,因为这样 一来客户机器将只会在管理员设定的地址范围中取得地址,Windows 2000操作系统的这一新增功能,通过对DHCP服务器进行认证避免了非法DHCP服务器分配非法IP地址造成的IP地址冲突,在实际应用中,客户机器获 取非法的地址经常是造成网络瘫痪和无法正常通讯的一大原因。综合上面的分析可以做出第一个问题的结论:在一个子网中可以存在多台DHCP服务器来提供地址 分配,但能够作为地址提供的不是任意的DHCP服务器,而应该是经过系统认证的那些,客户机请求地址时最终从那一台经过认证机器中获取时随机的。此外,从 另一个角度看,在相同子网上使用多个 DHCP 服务器,将为它所服务的 DHCP 客户机提供更强的容错能力,如下图所示,在一个子网内(网络号为192.168.1.0 掩码为255.255.255.0)共用两个 DHCP 服务器,其中的DHCP服务器1不可用的话,DHCP服务器2可以取代它并继续租用新的地址或续订现有客户机。可以建议采用的解决方案是使用 80/20 规则来划分两个 DHCP 服务器之间的作用域地址,具体做法可以是将服务器 1 配置成可使用大多数地址(约 80%),服务器 2 可以配置成让客户机使用其他地址(约 20%)。
2、如果在一个网络中存在多个子网,而多个子网的主机都需要DHCP服务器来提供地址配置信息,那么我们可以采用的方法是在每一个子网中安装一台 DHCP服务器,让它们来为各个子网分配IP地址,但从节约资源利用出发,我们一般情况下不这样做,可以采取在一个子网中安装DHCP服务器,让它来为多 个子网分配IP地址,实现多子网地址分配可以借助DHCP的中继代理功能实现,而作为中继代理的设备可以是一台提供中继代理程序的Windows2000 服务器或是一个符合RFC1542规定的路由器,具备 DHCP/ BOOTP Relay Agent 的功能(DHCP relay agent能够把 DHCP/BOOTP 广播信息从一个网段转播到另一个网段上)。以管理的局域网分为三个子网,用Win2000服务器连接。 下面是实现跨子网使用DHCP服务器的具体解决方案:
(1)安装DHCP中继代理程序:在Windows2000服务器的“路由和远程访问”窗口中,依次展开“本地服务器→IP路由选择→常规”选项, 右键点击“常规”选项,在弹出的菜单中选择“新增路由协议”,然后在“新路由协议”窗口中选择“DHCP中继代理程序”,接着点击“确定”按钮。
(2)指定DHCP服务器:右键点击刚刚添加的“DHCP中继代理程序”选项,在弹出菜单中选择“属性”,进入“DHCP中继代理程序属性”对话 框,在“常规”标签页的“服务器地址”栏中输入子网1中DHCP服务器的IP地址:192.168.1.2,然后点击“添加”按钮,最后点击“确定”按钮 关闭该对话框。
(3)配置访问接口:右键点击“DHCP中继代理程序”选项,在弹出菜单中选择“新增接口”,然后在“DHCP中继代理程序的新接口”对话框中的 “接口”列表框中选中可以访问子网1中的DHCP服务器的接口,这里新增的接口应该是接口二和接口三,接着点击“确定”按钮。然后在弹出的“DHCP中继 站属性”对话框中,选中“中继DHCP数据包”选项,这样就启用了它的中继功能,最后点击“确定”按钮。
(4)DHCP服务器中配置一个超级作用域,其中包含三个普通作用域,作用域地址范围可以分别设置为 192.168.1.10~192.168.1.254(分配给子网1的PC使用);192.168.2.10~192.168.2.254(分配给子网 2的PC使用);192.168.3.10~192.168.3.254(分配给子网3的PC使用),必须记住DHCP只能为每一个子网分配一个范围。 完成以上配置后,子网2和子网3中的DHCP客户机PC2及PC3就可以通过主机A的DHCP中继代理程序访问子网1中的DHCP服务器。
3、解决了单台DHCP服务器为多个子网分配IP地址后,我们还要搞清楚的一个问题是,如果某一个子网的PC如子网2中的PC2或子网3中的PC3 发出地址请求信息后,主机A可以作为中继代理对他们的请求传达子网1中的DHCP服务器,但该DHCP服务器如何可以确定并准确地将作用域 192.168.2.0网段的地址分给PC2而把作用域192.168.3.0网段的地址分给PC3呢?这个是多数学生可能存在的疑问,要搞清楚这个问 题,可以参考以下的原理分析来找答案:
以子网2中的主机PC2为例,DHCP 客户机PC2在子网2 上广播 DHCP/BOOTP discover 消息 (DHCPDISCOVER),广播是将消息以 UDP (User Datagram Protocol)数据包的形式通过 67 端口发出,当中继代理(relay agent)主机A接收到这个消息后,它检查包含在这个消息报头中的网关IP 地址,如果网关IP 地址为 0.0.0.0 ,则用 relay agent主机A的接口二的IP地址192.168.2.1替换它,然后将其转发到 DHCP 服务器所在的子网1上(主机A还担任路由器功能)。当在子网1中的 DHCP服务器收到这个消息后,它开始检查消息中的网关IP地址,然后判断该网关地址是否包含在DHCP的某一个作用域范围内,从而决定它是否可以使用相 应的作用域的地址来提供IP地址租约,当然,本例中DHCP服务器将会从作用域192.168.2.10~192.168.2.254选取一个地址来配置 PC2;也就是说DHCP客户机的请求地址消息中的网关IP地址 (GIADDR) 将是DHCP服务器用来确定从那个DHCP 范围中挑选IP地址来配置客户机的依据。
4、如果DHCP客户机无法找到DHCP服务器,则它从微软保留的 B 类网段 169.254.0.0 中挑选一个 IP 地址作为自己的 IP 地址,子网掩码为 255.255.0.0 ,所挑选的地址由DHCP客户机利用ARP 广播来 确定自己所挑选的 IP 地址是否已被网络上的其它设备使用,如果该 IP 地址已被使用,那么客户机会再挑选另一个IP地址重新进行测试,而且最多可以重试十个IP 地址,直到成功获取配置。在此之后,客户机会在后台继续每隔 5 分钟尝试与DHCP服务器进行通信,一旦与服务器取得联络,则客户机放弃自动设置的 IP 地址,而使用服务器分配的 IP 地址和其它配制信息。所以当你在某一天发现你的PC的IP地址是个B类的地址169.254.0.0/16网段的地址时,你就应该知道那是怎么一回事了 吧。
至此,我们分析了几个关于DHCP服务的应用方面的疑难问题,并且给出了相应的解决方案,对于DHCP服务在教学中我们还遇到许多一些其他问题,比 如说DHCP服务器本身的地址是否一定要由管理员静态指定,设置为自动获取将会有什么后果?为什么把客户机器向DHCP服务器请求地址称为地址租用,租用 时间的长短对网络中IP地址的管理与应用有哪些帮助?如何可以使用DHCP服务让一个自动获取IP的主机能在任何时候都能取得指定的一个固定地址?这些问 题都要求教师在教学当中要认真地去探究该服务的每一个细节的知识点,才可以对该知识点的原理以及在实际中的应用进行透彻的讲授,也是我们熟练掌握和使用 DHCP服务的前提。

第二部分
DHCP的工作流程分为四步:

一、客户机请求 IP(DHCPdiscover)
二、服务器响应(DHCPoffer)
三、客户机选择 IP(DHCPrequest)
四、服务器确认 IP租约(DHCPack/DHCPnak)

下面我们就来分别讲一下:

一、客户机请求 IP(DHCPdiscover)
当客户机设置使用 DHCP协议获取 IP时,客户机将使用 0.0.0.0作为源地址,使用255.255.255.255作为目标地址来广播请求 IP地址的信息。广播信息中包含 DHCP客户机的MAC地址和计算机名。(这里的 MAC地址可不是 FFFF.FFFF.FFFF的 MAC 广播哦~)

二、服务器响应(DHCPoffer)
由于是广播所以同一网段内的计算机都会“听”到!DHCP服务器当然也不例外。DHCP服务器“听”到后,它首先会针对该次请求的信息所携带的 MAC地址与 DHCP主机本身的设置值进行对比。如果 DHCP主机的设置中有针对该 MAC 提供的静态 IP(每次都给一个固定 IP),则提供给客户机相关的固定 IP与相关的网络参数;如果该信息的 MAC并不在 DHCP主机的设置中,则 DHCP主机会选取当前网段内没有使用的IP给客户机使用!当然这里的响应,服务器也是采用 255.255.255.255的广播,因为此时客户机还没 IP哦~
这里有几个要注意的地方:
1、如果同一网段内有多台 DHCP服务器,那么客户机是看谁先响应,谁先响应就选择谁。
2、在 DHCP主机发给客户端的信息中,会附带一个“租约期限”信息,用来告诉客户机这个 IP能用多久!

三、客户机选择 IP(DHCPrequest)
当客户机接收到响应的信息之后,首先会以 ARP在网段内广播(ARP使用全 1的广播 MAC地址),以确定来自 DHCP服务器的 IP没被占用!如果该 IP被占用,那么客户机对于这次的 DHCP信息将不接受,而是再次发送 DHCP请求。若该 IP没有被占用,客户机则接受 DHCP服务器所给的网络参数。同时,客户机发出一个广播,通知所挑选的 DHCP服务器(有多台 DHCP服务器存在时),当然此时也是通知其它的 DHCP服务器,让这些 DHCP服务器将本预分配给客户机的 IP释放掉!(这里的概念一定要弄清楚!)注意,这一步客户机并还没有应用从 DHCP服务器获取到 IP哦!所以这一步源地址还是0.0.0.0,目标地址是 255.255.255.255。

四、服务器确认 IP租约(DHCPack/DHCPnak)
终于到最后一步了,DHCP服务器收到客户机选择 IP的广播后,则以 DHCPack消息的形式向客户机广播成功的确认。DHCPack包含:IP、掩码、网关、DNS等。当然上面还有一个 DHCPnak,一看就知道是不成功的意思!那么,哪些情况才会有这种广播呢?
例如,IP地址已无效或这个地址已被其它的客户机使用了!

此时,当客户机收到 DHCP服务器的 DHCPack消息后,客户机便使用了 DHCP服务器所给的网络参数!这里的四个步骤可都是用的广播哦,不知道大家有没有注意!呵呵~到此,我们的 DHCP原理就讲完了,下面我还给补充了点东东,希望对大家有用:

1、当我们的客户机无法找到 DHCP服务器时,它将从 TCP/IP的 B类网段 169.254.0.0中挑选一个 IP地址作为自己的 IP地址,而继续每隔 5分钟尝试与 DHCP服务器进行通信。(这里的这个 B类地址被称为 APIPA,即自动分配私有 IP地址!)

2、IP租约的更新,当客户机重新启动或租期达 50%时,客户机不会从第一步(DHCPdiscover)开始重新申请 IP,而是从第三步(DHCPrequest)开始哦~只有当租期达 87.5%时,它才从第一步(DHCPdiscover)开始重新申请!

3、客户机这里还有两条命令,希望大家给记住:

ipconfig/release :是用来 IP租约的释放。使用 DHCPrelease消息!

ipconfig/renew :是用来 IP租约的更新。使用 DHCPdiscover消息!

4、客户机必须要经过四步的情况:

(1)第一次扮演 DHCP客户机角色。

(2)IP被 DHCP服务器收回。

(3)客户机自己释放了 IP,并重租一个 IP时。

(4)客户机更换网卡了。

(5)客户机转移到另一网段时。

参考:http://blog.chinaunix.net/uid-22287947-id-1775641.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息