动态主机配置协议DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是RFC 1541(已被RFC 2131取代)定义的标准协议,该协议允许服务器向客户端动态分配IP地址和配置信息。
DHCP协议支持C/S(客户端/服务器)结构,主要分为两部分:
1、DHCP客户端:通常为网络中的PC、打印机等终端设备,使用从DHCP服务器分配下来的IP信息,包括IP地址、DNS等。
2、DHCP服务器:所有的IP网络设定信息都由DHCP服务器集中管理,并处理客户端的DHCP请求。
DHCP采用UDP作为传输协议,客户端发送消息到DHCP服务器的的67号端口,服务器返回消息给客户端的68号端口。
DHCP的报文种类及其作用
DHCP在工作过程中涉及到的报文种类及其作用如下:
1、DHCP DISCOVER:客户端开始DHCP过程的第一个报文,是请求IP地址和其它配置参数的广播报文。
2、DHCP OFFER:服务器对DHCP DISCOVER报文的响应,是包含有效IP地址及配置的单播(或广播)报文。
3、DHCP REQUEST:客户端对DHCP OFFER报文的响应,表示接受相关配置。客户端续延IP地址租期时也会发出该报文。
4、DHCP DECLINE:当客户端发现服务器分配的IP地址无法使用(如IP地址冲突时),将发出此报文,通知服务器禁止使用该IP地址。
5、DHCP ACK :服务器对客户端的DHCP REQUEST报文的确认响应报文。客户端收到此报文后,才真正获得了IP地址和相关的配置信息。
6、DHCP NAK:服务器对客户端的DHCP REQUEST报文的拒绝响应报文。客户端收到此报文后,会重新开始新的DHCP过程。
7、DHCP RELEASE:客户端主动释放服务器分配的IP地址。当服务器收到此报文后,则回收该IP地址,并可以将其分配给其它的客户端。
8、DHCP INFORM:客户端获得IP地址后,发送此报文请求获取服务器的其它一些网络配置信息,如DNS等。
DHCP一般工作流程
向DHCP服务器申请一个IP地址的基本操作步骤:
(1)当DHCP客户机第一次登录网络的时候,该客户机没有任何IP数据设定,它将向网络发出一个DHCP Discover封包。由于客户端还不知道自己属于哪一个网络,所以封包的源地址为0.0.0.0,其目的地址则为255.255.255.255,向网络进行广播。
(2)一般默认DHCP Discover的等待时间为1s,当客户机将第一个DHCP Discover封包送出去之后,在1s之内没有得到响应的话,它就会进行第二次DHCP Discover广播。客户端最多有4次广播,除了第一次会等待1s之外,其余3次的等待时间分别是9s、13s、16s。如果都没有得到DHCP服务器的响应,客户端则会显示错误信息,宣告DHCP Discover失败。之后,系统会继续在5min之后再重复一次DHCP Discover过程。
(3)当DHCP服务器监听到客户端发出的DHCP Discover广播后,将会对客户机作出应答。它会通过UDP端口回应客户一个DHCP Offer广播包,提供一个IP地址。该广播包的源IP地址为DHCP服务器的IP地址,目标IP地址为255.255.255.255;包中还包含提供给客户机的IP地址、子网掩码及租期等信息。
(4)DHCP协议允许网络上配置多台DHCP服务器,客户机将会收到网络上多台DHCP服务器的响应,但它只会挑选其中一个DHCP Offer,通常都是最先抵达的那个,然后客户机向网络发送一个DHCP Request广播封包,告诉所有DHCP服务器它将接受哪一台服务器提供的IP地址。同时,客户端还会向网络发送一个ARP封包,确认网络上是否有其他机器在使用该IP地址;如果发现该IP已经被占用,客户机则会发出一个DHCP Decline封包给DHCP服务器,拒绝接受其DHCP Offer并重新发送DHCP Discover信息。
(5)当DHCP服务器接收到客户端的DHCP Request封包之后,向客户端发出一个DHCP ACK 响应,确认该IP租约的正式生效。
(6)客户在收到DHCP ACK包后,会使用该广播包中的信息来配置自己的TCP/IP,至此租用申请过程结束,客户机可以在网络中通信。
DHCP续约
续约一客户机直接执行第3步==(执行ipconfig/renew)==
DHCP续租的工作流程描述如下:
- 在使用租期过去50%时刻处, 客户端向服务器发送单播DHCP REQUEST报文续延租期。
- 如果收到服务器的DHCP ACK报文,则租期相应向前延长,续租成功。如果没有收到DHCP ACK报文,则客户端继续使用这个IP地址。在使用租期过去87.5%时刻处,向服务器发送广播DHCP REQUEST报文续延租期。
- 如果收到服务器的DHCP ACK报文,则租期相应向前延长,续租成功。如果没有收到DHCP ACK报文,则客户端继续使用这个IP地址。在使用租期到期时,客户端自动放弃使用这个IP地址,并开始新的DHCP过程。
DHCP释放后重获地址
执行ipconfig/release和ipconfig/renew
当Windows计算机在 DHCP(动态主机配置协议)模式下发生IP地址冲突、无法访问网络等情况时,可以使用以下步骤重新获取 IP 地址:
打开命令提示符:按下Windows+R键打开运行窗口,输入cmd并按下回车键,即可打开命令提示符窗口。
输入ipconfig /release命令,按下回车键,释放当前分配的IP地址。
输入ipconfig /renew命令,按下回车键,重新获取IP地址。
如果成功获取到新的IP地址,系统会显示IP地址、子网掩码、默认网关等信息。
需要注意的是,在使用ipconfig /release命令释放IP地址后,计算机将无法访问网络,直到使用ipconfig /renew命令重新获取IP地址。
DHCP相关的配置命令
路由器上DHCP服务器的配置
(1)IP地址池的建立
配置方法在全局模式下使用“ip dhcp pool <name>”命令为地址池赋予一个名称,其中<name>是为所建的地址池提供的名称,可以是一组字符串或数字。一台路由器上可以建立多个地址池。
(2)IP地址池的子网地址与子网掩码的配置。
IP地址池建立后,便进入地址池配置模式,在该模式下可进行IP子网地址和子网掩码的配置,用于设定DHCP服务器可以分配的IP地址的范围。配置的方法是在IP地址池配置模式下,执行“network <网络地址> <子网掩码>”命令,其中,<子网掩码>可采用标准的子网掩码表示(如255.255.255.0)或使用掩码前缀长度表示(如/24)。
(3)排除不用于动态分配的IP地址。
实际应用中,在所配置的子网中,可能会有一些特殊地址需要保留,不用于动态分配,此时就需要在DHCP服务中进行相应配置,配置方法为在全局配置模式下,使用“ip dhcp excluded-address low-adress [high-address]"命令,其中“low-address [high-address]”表示要排除的IP地址的范围,若只排除一个地址,则可直接在命令后输入这个地址便可。
(4)配置默认网关。
动态分配IP地址时,还需要同时为客户端指定默认网关,以便客户端TCP/IP协议正常工作。配置方法为在地址池配置模式下,执行“default-rouler address [address2…address8]”命令,其中默认网关的地址,最多可以设置8个,而客户端一般只使用一个在同一子网中的路由器的端口地址。
(5)配置IP地址池的域名系统。
如同我们在客户端机器手动配置IP地址一样,要访问外部网络,通常还需指定用于域名解析的域名服务器(DNS),另外在路由器DHCP服务器中还可以设置客户端域名,为动态地址的客户端指定所属的域的名称。域名服务器的配置方法为在地址池配置模式下使用“dns-server address”命令,该命令允许最多配置8个域名服务器地址,但是在实际应用中,域名服务器一般只有两个或三个;IP地址池中客户端域名的配置方法为在DHCP地址池配置模式下,使用“domain-name <name >"命令,其中<name>为指定的域名名称。
(6)IP地址租用时间。
IP地址租用时间是指用户端在获得一个IP地址后,可以占用这个地址的最长时间,若需要的话可以对其进行更改。配制方法为在DHCP地址池配置模式下,使用“lease {day [hours] [minutes]|[infinite]}”命令,其参数可以包含天数、小时数以及分秒数,还可以设置为永不过期。