姓名:XXX 学号:XXXX 班级:XXXX
DHCP(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服务器之前,租期失效,则客户端应立即放弃使用该地址,并通知本地用户。