您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 国内外标准规范 > DHCP流程和报文格式
一、DHCP引入在常见的小型网络中(例如家庭网络和学生宿舍网),网络治理员都是采用手工分配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租约的信息。这里的IP租约期限并非如我们租房子那样简单。以NT为例:DHCP工作站除了在开机的时候发出dhcprequest请求之外,在租约期限一半的时候也会发出dhcprequest,如果此时得不到DHCP服务器的确认的话,工作站还可以继续使用该IP;然后在剩下的租约期限的再一半的时候(即租约的75%),还得不到确认的话,那么工作站就不能拥有这个IP了。要是您想退租,可以随时送出DHCPLEREASE命令解约。7、总结下面是一个直观的总结。假设我们把DHCP客户机比做餐馆里的客人,DHCP服务器比做服务员(一个餐馆里也可以有多个服务员),IP地址比做客户需要的食物。那么可以这样描述整个过程:(1)客人走进餐馆,问:“有没有服务员啊?”(DHCPdiscover);(2)多个服务员同时回答:“有,我这有鸡翅”“有,我这有汉堡”(DHCPoffer)。(3)客人说:“好吧,我要一份汉堡”(DHCPrequest,这个客人比较死板,总是选择第一次听到的食物);(4)端着汉堡的服务员回应了一声:“来啦”(DHCPack),并把食物端到客人面前,供其享用(将网卡和IP地址绑定)。(5)客人下次来的时候,就直接找上次那个服务员点自己喜欢的汉堡了(DHCPrequest);(6)如果还有汉堡,服务员会再次确认并上菜(DHCPack),而如果已经卖完了,服务员则会告诉客人:“不好意思,已经卖完了”(DHCPnack)。(7)当然,服务员隔一段时间会来收拾一次桌子,除非客人特别说明这菜还要继续吃的,服务员会将剩菜端走。四、其他上述过程所需的信息,我们都可以通过DHCP包的格式来找到。另外,对于跨网路的DHCP运作,从前面描述的过程中,我们不难发现:DHCDISCOVER是以广播方式进行的,因为router是不会将广播传送出去的,所以上述过程只能在同一网络中进行。如果DHCP如果在其它的网路上面,由于DHCP客户端没有IP环境设定,所以也不知道Router的IP地址,并且有些Router也不会将DHCP广播封包传递出去,因此这时DHCPDISCOVER是永远没办法抵达另外网络中的DHCP服务器那端的,所以当然也不会发生OFFER及其他动作了。要想使用网络外面的DHCP服务器提供服务,我们可以用DHCPAgent(或DHCPProxy)主机来接管客户的DHCP请求,然后将此请求传递给真正的DHCP服务器,然后再将服务器的回复传给客户。这里,Proxy主机必须自己具有路由能力,且能将双方的封包互传对方。若不使用Proxy,我们也可以在每一个网路之中安装DHCP伺服器,但这样的话,设备成本会增加,而且,管理上面也比较分散,如果在一个十分大型的网路中,这样的均衡式架构还是可取的。五、DHCP报文DHCP报文是承载于UDP上的高层协议报文,采用67(DHCP服务器)和68(DHCP客户端)两个端口号。DHCP报文的格式如下图所示。图1DHCP报文格式所有DHCP提供的配置信息都在options字段中,这才是精华报文中各字段的描述如下:op,报文类型,1表示请求报文,2表示回应报文。htype,硬件地址类型,1表示10Mb/s的以太网的硬件地址。hlen,硬件地址长度,以太网中该值为6。hops,跳数。客户端设置为0,也能被一个代理服务器设置。xid,事务ID,由客户端选择的一个随机数,被服务器和客户端用来在它们之间交流请求和响应,客户端用它对请求和应答进行匹配。该ID由客户端设置并由服务器返回,为32位整数。secs,由客户端填充,表示从客户端开始获得IP地址或IP地址续借后所使用了的秒数。flags,标志字段。这个16比特的字段,目前只有最左边的一个比特有用,该位为0,表示单播,为1表示广播。ciaddr,客户端的IP地址。只有客户端是Bound、Renew、Rebinding状态,并且能响应ARP请求时,才能被填充。yiaddr,你自己的或客户端的IP地址。siaddr,表明DHCP协议流程的下一个阶段要使用的服务器的IP地址。giaddr,DHCP中继器的IP地址。//注意:不是地址池中定义的网关chaddr,客户端硬件地址。客户端必须设置它的chaddr字段。UDP数据包中的以太网帧首部也有该字段,但通常通过查看UDP数据包来确定以太网帧首部中的该字段获取该值比较困难或者说不可能,而在UDP协议承载的DHCP报文中设置该字段,用户进程就可以很容易地获取该值。sname,可选的服务器主机名,该字段是空结尾的字符串,由服务器填写。file,启动文件名,是一个空结尾的字符串。DHCPDiscover报文中是generic名字或空字符,DHCPOffer报文中提供有效的目录路径全名。options,可选参数域,格式为代码+长度+数据。DHCPOptionsOptionidLength(字节)描述14SubnetMask3n*4Router(网关)6n*4DNSServer7n*4LogServer262InterfaceMTU33n*8Staticroute354ARPcachetimeout42n*4NTPservers514IPaddressleasetime531Messagetype:1-DHCPDISCOVER2-DHCPOFFER3-DHCPREQUEST4-DHCPDECLINE5-DHCPACK6-DHCPNAK7-DHCPRELEASE8-DHCPINFORM544DHCPServerIdentifier60n华为自定义:可配置该终端设备在发起DHCP请求时,通过Option60携带域信息。ME60收到DHCP报文时,可根据Option60中携带的域信息来分配IP地址。82n华为自定义:ME60作为DHCPRelay,在中继用户DHCP报文时,可在Option82中填写用户的物理位置信息,通知DHCP服务器按物理位置信息对为用户分配IP地址。DHCP报文类型DHCP共有八种报文,分别为DHCPDiscover、DHCPOffer、DHCPRequest、DHCPACK、DHCPNAK、DHCPRelease、DHCPDecline、DHCPInform。各报文类型功能如表1所述。DHCP报文类型描述DHCPDiscoverDHCP客户端请求地址时,并不知道DHCP服务器的位置,因此DHCP客户端会在本地网络内以广播方式发送请求报文,这个报文成为Discover报文,目的是发现网络中的DHCP服务器,所有收到Discover报文的DHCP服务器都会发送回应报文,DHCP客户端据此可以知道网络中存在的DHCP服务器的位置。DHCPOfferDHCP服务器收到Discover报文后,就会在所配置的地址池中查找一个合适的IP地址,加上相应的租约期限和其他配置信息(如网关、DNS服务器等),构造一个Offer报文,发送给用户,告知用户本服务器可以为其提供IP地址。只是告诉client可以提供,是预分配,还需要client通过ARP检测该IP是否重复DHCPRequestDHCP客户端可能会收到很多Offer,所以必须在这些回应中选择一个。Client通常选择第一个回应Offer报文的服务器作为自己的目标服务器,并回应一个广播Request报文,通告选择的服务器。DHCP客户端成功获取IP地址后,在地址使用租期过去1/2时,会向DHCP服务器发送单播Request报文续延租期,如果没有收到DHCPACK报文,在租期过去3/4时,发送广播Request报文续延租期。DHCPDHCP服务器收到Request报文后,根据Request报文中携ACK带的用户MAC来查找有没有相应的租约记录,如果有则发送ACK报文作为回应,通知用户可以使用分配的IP地址。DHCPNAK如果DHCP服务器收到Request报文后,没有发现有相应的租约记录或者由于某些原因无法正常分配IP地址,则发送NAK报文作为回应,通知用户无法分配合适的IP地址。DHCPRelease当
本文标题:DHCP流程和报文格式
链接地址:https://www.777doc.com/doc-2909941 .html