DHCP动态主机配置协议,作用大家应该都知道,用DHCP可以自动为网络中的计算机分配IP地址及TCP/IP设置,优点是可以提高IP地址的利用率,减少IP地址的管理工作量。

网络中到底是否需要使用DHCP服务,需要的话怎样配置才更为合理,51cto论坛中近期正好有一个相关热帖,大家可以参考一下。http://bbs.51cto.com/viewthread.php?tid=1013632&extra=&page=1

 在开始学习如何配置DHCP服务之前,我们需要先来了解DHCP协议的工作原理。

DHCP是基于客户端/服务器模型设计的,DHCP协议使用端口UDP 67(服务器端)和UDP 68(客户端)进行通信,并且大部分DHCP协议通信以广播方式进行。
 
1. DHCP租约过程

DHCP客户端首次启动时,会自动执行初始化过程以便从DHCP服务器获得IP地址,获取IP地址的过程大致分为四个不同的阶段,分别如下:
(1)IP租用请求。当客户端计算机被设置为“自动获取IP地址”时,这样当它首次启动时会向网络中发送一个名为DHCPdiscover的广播消息,以寻找DHCP服务器。因为此时客户端计算机还不知道自己属于哪个网络,所以这个数据包的源地址为0.0.0.0,目标地址为255.255.255.255。
(2)IP租用提供。当DHCP服务器收到DHCPdiscover数据包后,会从地址池中找出第一个未被分配的IP地址利用广播的方式发送回客户端,这个数据包称为DHCPoffer数据包。由于DHCP客户端没有IP地址,所以DHCP服务器同样使用广播进行通信:源IP地址为DHCP服务器的IP地址,目前IP地址为255.255.255.255。
(3)IP租用选择。如果网络中存在多台DHCP服务器,那客户机可能从不止一台DHCP服务器收到DHCPoffer消息。客户机只选择最先到达的DHCPoffer,并向这台DHCP服务器发送DHCPrequest消息。DHCPrequest消息中包含了DHCP客户端的MAC地址、接受的租约中的IP地址、提供此租约的DHCP服务器地址等,其它的DHCP服务器将收回它们为此DHCP客户端所保留的IP地址租约,以给其它DHCP客户端使用。此时由于没有得到DHCP服务器最后确认,DHCP客户端仍然不能使用租约中提供的IP地址,所以DHCPrequest消息仍然是一个广播数据包,源IP地址为0.0.0.0,目的IP为广播地址255.255.255.255。
(4)IP租用确认。服务器接收到客户端发来的DHCPrequest消息后,首先将刚才所提供的IP地址标记为已租用,然后向客户机发送一个确认(DHCPack)广播信息,信息中包括之前发送的IP地址、子网掩码、默认网关、DNS服务器地址,以及一个IP地址的租约期限。

DHCP服务的配置与管理(1)DHCP协议原理_dhcp服务配置

2. DHCP租约更新

客户机在获得IP地址的同时要与服务器之间签订一个租约,租约期限一般默认是8天,DHCP客户端必须在租约过期前对它进行更新。
客户端在租约期过了1/2时,就会向服务器发出DHCPRquest包请求更新当前租约,如果DHCP服务器应答则租约延期。如果服务器始终没有应答,则在租期过了7/8时,客户端将再次发出DHCPRquest包请求更新租约,如果仍然无法得到DHCP服务器的响应,那客户机将放弃当前的IP地址,并重新发送DHCPdiscover广播包,开始新一轮的申请过程。

3. DHCP服务器的授权

目前绝大多数的无线路由器都带有DHCP的功能,而且默认是自动开启的,只要将这样的无线路由器接入到网络中,那就相当于在网络中私自架设了一台DHCP服务器。如果任何用户都可以随意安装DHCP服务器,且其所租出的IP地址是随意设置的,则当有客户端在向DHCP服务器租用IP地址时,很可能就会由这台非法的DHCP服务器来提供IP地址给客户端,从而导致客户端使用了错误IP而无法连接网络,同时也会增加系统管理员的管理负担。
因此在Windows系统中提供了一种授权机制,以防止这种非法接入DHCP服务器的行为。所谓授权,也就是说当DHCP服务器安装好以后,并不能立刻就为客户端提供服务,它还必须经过一个“授权”的程序,未经授权的DHCP服务器不会将IP地址租出给DHCP客户端。
只有在域环境中DHCP服务器才可以被授权,也就是说DHCP服务器必须要加入域成为域的成员服务器。
不是域成员的DHCP独立服务器无法被授权,那这样的服务器是否可以正常启动并为客户端分配IP地址呢?这要视同一个子网内,是否存在任意一台已被授权的DHCP服务器而定。这台独立DHCP服务器在启动DHCP服务时,会检测子网内是否存在已被授权的DHCP服务器。如果有,那它就不会启动DHCP服务;如果没有,那它就可以正常启动DHCP服务,并为客户端提供IP地址。