对于DHCP的内容,我们学习了不少内容,我们已经了解了有关的定义,以及DHCP协议的结构,不知道大家掌握的如何。那么这里我们就来针对DHCP工作过程的内容进行一下分析和讲解。
DHCP工作过程简要说明:
DHCP-Client-A DHCP-Server-B Other-DHCP-Servers
DHCPDISCOVER → <receive DISCOVER> <receive DISCOVER>
↓ ↓
<choose an OFFER> ← DHCPOFFER DHCPOFFER
↓
DHCPREQUEST → <receive REQUEST> <receive REQUEST>
↓
<lease an IP> ← DHCPACK
动态主机配置协议(Dynamic Host Configuration Protocol,DHCP)是用于对多个客户计算机集中分配IP地址以及IP地址相关的信息的协议,这样就能将IP地址和TCP/IP的设置统一管理起 来,而避免不必要的地址冲突的问题,因此常常用在网络中对众多DOS/Windows计算机的管理方面,节省了网络管理员手工设置和分配地址的麻烦。
除了能够方便管理之外,DHCP还能略微达到节省IP地址的目的。假设网络中有50个计算机,但只有40个 IP地址,但是这50台计算机不会同时启动,IP地址应该满足要求。如果使用静态IP地址的设置方式,还是会遇到分配地址的困难,因为计算机的使用是随机 的,无论怎样分配地址都无法避免出现冲突现象,而使用DHCP就能避免这个问题。 DHCP也能用于统一设置其他的一些IP设置,如缺省路由、DNS服务器等等,使用它能减少一个大型网络的管理任务。
DHCP是从原有的BootP协议发展起来的,原来的目的是为无盘工作站分配IP地址的协议,当前更多的用于集中管理IP地址。然而DHCP协 议也有其缺点,例如一台DHCP客户计算机没有一个固定的IP地址,而对于提供网络服务的服务器来讲,经常变化的IP地址并不适合。并且当前的DNS协议 并不能和DHCP协作,为DHCP客户直接提供主机名解析任务。
DHCP工作过程
DHCP工作时要求客户机和服务器进行交互,由客户机通过广播向服务器发起申请IP地址的请求,然后由服务器分配一个IP地址以及其他的TCP/IP设置信息。整个过程可以分为以下步骤:
IP地址租用申请:DHCP客户机的TCP/IP***启动时,就要执行DHCP客户程序,以进行TCP/IP 的设置。由于此时客户机的TCP/IP还没有设置完毕,就只能使用广播的方式发送DHCP请求信息包,广播包使用 UDP端口67和68进行发送,广播信息中包括了客户机的网络界面的硬件地址和计算机名字,以提供DHCP服务器进行分配。
IP地址租用提供:当接收到DHCP客户机的广播信息之后,所有的DHCP服务器均为这个客户机分配一个合适的IP地址,将这些IP地址、网络 掩码、租用时间等信息,按照DHCP客户提供的硬件地址发送回DHCP客户机。这个过程中对DHCP服务器没有对客户计算机进行限制,因此客户机能收到多 个IP地址提供信息。
IP地址租用选择:由于客户机接收到多个服务器发送的多个IP地址提供信息,客户机将选择一个IP地址,拒绝其他提供的IP地址,以便这些地址能分配给其他客户。客户机将向它选择的服务器发送选择租用信息。
IP地址租用确认:服务器将收到客户的选择信息,如果也没有例外发生,将回应一个确认信息,将这个IP地址真正分配给这个客户机。客户机就能使用这个IP地址及相关的TCP/IP数据,来设置自己的TCP/IP堆栈。
更新租用:DHCP中,每个IP地址是有一定租期的,若租期已到,DHCP服务器就能够将这个IP地址重新分配给其他计算机。因此每个客户计算 机应该提前不断续租它已经租用的IP地址,服务器将回应客户机的请求并更新该客户机的租期设置。一旦服务器返回不能续租的信息,那么DHCP客户机只能在 租期到达时放弃原有的IP地址,重新申请一个新 IP地址。为了避免发生问题,续租在租期达到50%时就将启动,如果没有成功将不断启动续租请求过程。
释放IP地址租用:客户机可以主动释放自己的IP地址请求,也可以不释放,但也不续租,等待租期过期而释放占用的IP地址资源。
由于DHCP依赖于广播信息,因此一般的情况下,客户机和服务器应该位于同一个网络之内。然而可以设置网络中的路由器为可以转发BootP广播 包,使得服务器和客户机可以位于两个不同的网络中。然而配置转发广播信息,不是一个很好的解决办法,更好的办法为使用DHCP中转计算机,DHCP中转计 算机和DHCP客户机位于同一个网络中,来回应客户机的租用请求,然而它不维护DHCP数据和拥有IP地址资源,它只是将请求通过TCP/IP转发给位于 另一个网络上的DHCP服务器,进行实际的IP地址分配和确认。
DHCP工作过程补充说明:
有DHCP和BOOTP两种协议
DHCP分配IP过程:
客户端连上网络以后先初始化一个不完全的TCP/IP协议,然后向网内所有的DHCP服务器发送一个DHCP DISCOVER的消息,等待DHCP服务器的回答。收到消息后,DHCP服务器会返回一个DHCP OFFER的消息,客户端接到***个这个消息后会向网内所有的DHCP服务器发送一个DHCP REQUEST消息,这个消息里包括了提供OFFER包的DHCP服务器IP,其他DHCP服务器收到这个消息会收回自己的OFFER信息,同时提供OFFER信息的服务器发送给客户端段一个DHCP PACK消息。客户端收到这个消息后会再次初始化自己TCP/IP协议 。
bootp协议主要用于有无盘工作站的局域网中,客户端获取IP地址的过程如下:首先,由BOOTP启动代码启动客户端,这个时候客户端还没有IP地址, 使用广播形式以IP地址0.0.0.0向网络中发出IP地址查询要求。接着,运行BOOTP协议的服务器接收到这个请求,会根据请求中提供的MAC地址找 到客户端,并发送一个含有IP地址、服务器IP地址、网关等信息的FOUND帧。***,客户端会根据该FOUND帧来通过专用TFTP服务器下载启动镜像 文件,模拟成磁盘启动。BOOTP缺点:设定前必须获得客户端网卡的MAC地址,而且与IP对应是静态的。即BOOTP缺乏动态性,在有限的IP资源 中,BOOTP的一对一对应会造成可观的浪费。