当前位置:文档之家› DHCP协议的功能及运行方式

DHCP协议的功能及运行方式

姓名:XXX 学号:XXXX 班级:XXXXDHCP(Dynamic Host Configuration Protocol)协议是在Bootstrap Protocol(BOOTP)的基础上提出,其作用是在TCP/IP网络中向Internet主机提供配置信息。

DHCP采用客户端/服务器通信模式,由DHCP客户端向DHCP服务器提出配置申请(包括IP地址、子网掩码、缺省网关等参数),服务器根据路由策略返回相应配置信息,DHCP报文采用UDP进行封装,使用两个知名端口:服务器为67,客户端为68。

DHCP提供的服务●配置参数的存储DHCP要提供的第一个服务就是能够为客户端的参数配置提供持久稳固的存储,该模型中,为每个客户端存储了一个key-value对,如IP子网号和客户端标识组成一个key,value 则包好了客户端要配置参数的内容。

●动态分配网络参数DHCP要提供的第二个功能就是为客户端分配一个暂时的或者永久的IP地址。

客户端向服务器请求在一段时间内租用一个地址,服务器则分配给客户端一个地址,并规定了该地址的租用时间,我们称这个时间为“租期”(lease)。

客户端可以通过与服务器的交互延长其租期,可以请求释放地址,结束与服务器的租约。

在某些环境中,由于地址的缺乏,需要重新分配网络地址,分配机制就是使用已经到租期的地址。

服务器应该利用在配置信息库中的任何可用的信息来选择一个重新使用的地址,比如,选择最近分配过的地址。

由于需要一致性检查,DHCP服务器在分配地址时需要保证要分配的地址没有被使用,一般可以在分配地址之前,发送一个ICMP ECHO报文,目的地址就是要分配的IP地址。

这样,如果有客户端回应了该ICMP ECHO报文,则标识该地址已经被使用;但是,即使没有客户端回应,也不能代表该地址没有被分配,因为客户端可能开启了防火墙,防止ICMP包的进入。

不仅服务器需要检查,客户端也应该检查该地址是否被使用,可以在收到分配的地址后,发送一个免费的ARP,如果有客户端回应这个ARP,则表示本地子网有已经分配了该IP的客户端,如果没有回应该ARP,则标识该地址本地子网未使用。

一般来讲,开启了防火墙的客户端是不会阻挡ARP的,所以这种探测方法较好。

3 DHCP工作原理DHCP IP地址分配策略对于IP地址的占用时间,不同主机有不同的需求:对于服务器,可能需要长期使用确定的IP地址;对于某些主机,可能需要长期使用某个动态分配的IP地址;而某些个人则可能只在需要时分配一个临时的IP地址就可以了。

针对这些不同的需求,DHCP服务器提供三种IP地址分配策略。

手工分配地址:由管理员为少数特定主机(如WWW服务器等)配置固定的IP地址,即将客户端的MAC地址与某个IP地址绑定。

当此MAC地址的客户端申请DHCP地址时,服务器根据客户端MAC地址寻找到对应的固定IP地址分配给客户端。

自动分配地址:为首次连接到网络的某些主机分配固定IP地址,该地址将长期由该主机使用。

动态分配地址:以“租借”的方式将某个地址分配给客户端主机,使用期限到期后,客户端需要重新申请地址。

绝大多数客户端主机得到的是这种动态分配的地址。

客户端与服务器的协议交互●申请一个新地址下面是客户端和服务器端进行协议交互的过程,图7给出了交互图。

本节给出的是完整的交互过程,如果客户端已经知道了自己的IP地址,则其中某些过程可以省略。

1、客户端主机接入网络后,需要申请一个地址才能使用网络,它会在本地子网内广播一个DHCPDISCOVER消息,该消息中可以包括一些选项,要求获得指定的网络地址和租期等。

2、DHCP服务器收到DHCPDISCOVER消息后,回应一个DHCPOFFER消息。

3、通常为了保证网络的可靠性,一个子网内会有两个或者多个DHCP服务器互相备份。

客户端发送的DHCPDISCOVER消息是广播报文,因此子网内所有的DHCP服务器都会收到该报文,并且每个服务器都会回应一个DHCPOFFER消息。

这样,客户端就可能收到多个DHCPOFFER 消息,在收到消息后,会根据DHCPOFFER消息中的配置参数来选择其中一个服务器作为回应。

客户端回应的消息是DHCPREQUEST消息,它和DHCPDISCOVER一样是广播报文,其中消息中必须带有Server identifier选项以指定所选择的DHCP服务器,一些客户端期望服务器分配的参数也可以包含在消息中。

DHCPREQUEST消息中的Request IP address选项的值必须和接收的DHCPOFFER消息中yiaddr的值相同。

也就是,服务器准备分配给客户端的IP 地址必须是客户端请求的IP,客户端不能请求的其他IP地址。

DHCPREQUEST是广播报文,当DHCP服务器不在本地子网时,需要通过DHCP/BOOTP中继代理relay到服务器。

DHCP客户端如何在一定的时间内没有收到DHCPOFFER,并重传DHCPDISCOVER报文。

●重复使用以前分配的地址如果客户端保存了之前分配的IP地址,并且希望再次使用该地址时,其交互过程同新申请地址的交互过程类似,不过某些过程可以省略而已。

●时间值的解释与表达在DHCP协议中,客户端动态获得的网络地址的租期是一个用秒为单位表示的时间段。

时间值0xffffffff表示无限期。

由于客户端和服务器通常没有同步时钟,所以在DHCP消息中,租期是用相对时间表示的,以客户端的本地时间作为租期的开始参考点。

相对时间用一个32位的字表示,单位为秒,比如租期为6小时,就表示为0x00005460。

32位字大约可以表示0到100年。

上面描述的关于租期解释的算法认为客户端和服务器的时钟之间的偏移是不变的。

如果两者之间存在漂移,则服务器可能先于客户端认为该客户的租期已到期。

为了弥补这个时间差,服务器返回给客户端的租期可以比它本地数据库中保存的租期短一些。

●外部配置网络地址后的客户端获取其他参数客户端如果通过其他方式获取了地址后(可以手工配置地址),可以通过DHCPINFORM消息来获取其他的配置参数。

服务器在收到一个DHCPINFORM消息后,构建一个DHCPACK消息,其中包含一些配置参数,但不包括分配网络地址,检查现有的绑定,消息中也不填充yiaddr 字段或者租期等参数。

DHCP服务器从DHCPINFORM消息中取出ciaddr的地址,并以该地址回应客户端DHCPACK消息。

DHCP服务器收到DHCPINFORM消息后,应该检查网络地址的一致性,但是对租期不能检查。

服务器构建一个DHCPACK消息,包含有请求客户端的配置参数,并直接发送给客户端。

●DHCP协议中的客户端参数客户端在请求地址时,都需要请求一些参数,但并不是所有的客户端都需要初始化在附录1中列出的所有参数,目前有两种方法可以减少从服务器到客户端的参数数目。

第一种方法,主机的大部分参数都有默认的参数,如果客户端没有从服务器接收到参数配置,则使用默认值。

●客户端使用DHCP的时机客户端在本地网络参数发生变化时,应该重新获取或者验证自己的IP地址和网络参数,比如在客户端重启或者与网络失去一段联系后,本地网络参数可能在用户未知的情况下发生改变。

如果客户机知道之前的IP地址,并无法连接到本地DHCP服务器,它可以继续使用这个地址,直到租期过期为止。

在连接到DHCP服务器之前,租期失效,则客户端应立即放弃使用该地址,并通知本地用户。

DHCP消息的构建和发送DHCP消息是有固定格式的,相应的字段填充相应的值,消息的后半部分都是选项字段,最后必须以end选项结尾。

DHCP报文以UDP作为传输协议,客户端发往服务器的报文的目的端口为67(DHCP server),而从服务器发送给客户端的报文的目的端口为68(DHCP client)。

Server identifier字段用于在DHCP消息中标识DHCP服务器,以及在从客户端发送给服务器消息时作为目的IP地址。

DHCP服务器有多个地址时,必须接受任何地址都能作为server identify。

DHCP在选择server identify时,必须选择客户端可达的IP地址。

举例说明,如果DHCP服务器和DHCP客户端在同一个组网上,服务器应该选择与本地子网通信的IP地址作为server identify。

如果服务器从一个DHCP relay agent收到消息,则服务器应该选择收到消息的接口IP作为server identify。

客户端向服务器的任何单播请求报文都必须使用server identify的地址作为目的IP。

DHCP服务器的工作过程DHCP服务器基于客户端的当前绑定状态处理来自这个客户端的DHCP消息。

DHCP服务器能够处理8种DHCP消息中的其中5种,包括DHCPDISCOVER、DHCPREQUEST、DHCPDECLINE、DHCPRELEASE和DHCPINFORM●DHCPDISCOVER消息的处理服务器收到客户端的DHCPDISCOVER消息后,会为客户端选择一个网络地址。

如果没有地址可用,服务器可以向管理员报告该问题;如果有地址可用,新的地址选择按照如下顺序选择:DHCP服务器的数据库中与客户端MAC地址静态绑定的IP地址客户端曾经使用过的地址,但是现在已经过期或被释放,如果该地址在服务器的可用地址池中,且未被分配DHCPDISCOVER消息的Request IP address字段中填充的IP地址,且该IP有效,没有被分配从服务器的可用地址池中选择一个新的IP地址。

如果DHCPDISCOVER消息中的Relay Agent IP Address字段为0,那么新的IP地址将与服务器上收到该消息的接口处于同一子网;如果DHCPDISCOVER消息中的Relay Agent IP Address字段不为0,那么新的IP地址将与转发该消息的第一个DHCP中继处于同一子网,也即与Relay Agent IP Address处于同一子网。

如果在DHCP地址池中未找到可供分配的IP地址,则依次查询超过租期、发生冲突的IP 地址,如果找到可用的IP地址,则进行分配,否则报告错误。

DHCP服务器在构建完DHCPOFFER消息后,将DHCPDISCOVER消息中的Transaction ID 插入到DHCPOFFER消息的Transaction ID字段内,然后将该消息发送给客户端。

●DHCPREQUEST消息的处理客户端发送DHCPREQUEST消息可能存在三种情况,第一就是收到服务器端的DHCPOFFER消息后的回应DHCPREQUEST,第二可能是客户端用于验证之前分配的网络地址,第三可能就是为了延长其租期而发的DHCPREQUEST消息。

相关主题