DHCP简介-wx5c7fb2a24f7a5的博客

DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个局域网的网络协议,使用UDP协议工作, 主要有两个用途:给内部网络或网络服务供应商自动分配IP地址,给用户或者内部网络管理员作为对所有计算机作中央管理的手段,在RFC 2131中有详细的描述。DHCP有3个端口,其中UDP67和UDP68为正常的DHCP服务端口,分别作为DHCP Server和DHCP Client的服务端口;546号端口用于DHCPv6 Client,而不用于DHCPv4,是为DHCP failover服务,这是需要特别开启的服务,DHCP failover是用来做"双机热备"的。
1.DHCP报文种类

DHCP一共有8种报文,分别为DHCP Discover、DHCP Offer、DHCP Request、DHCP ACK、DHCP NAK、DHCP Release、DHCP Decline、DHCP Inform。各种类型报文的基本功能如下:

DHCP报文类型
说明
DHCP Discover
DHCP客户端在请求IP地址时并不知道DHCP服务器的位置,因此DHCP客户端会在本地网络内以广播方式发送Discover请求报文,以发现网络中的DHCP服务器。所有收到Discover报文的DHCP服务器都会发送应答报文,DHCP客户端据此可以知道网络中存在的DHCP服务器的位置。
DHCP Offer
DHCP服务器收到Discover报文后,就会在所配置的地址池中查找一个合适的IP地址,加上相应的租约期限和其他配置信息(如网关、DNS服务器等),构造一个Offer报文,发送给DHCP客户端,告知用户本服务器可以为其提供IP地址。但这个报文只是告诉DHCP客户端可以提供IP地址,最终还需要客户端通过ARP来检测该IP地址是否重复。
DHCP Request
DHCP客户端可能会收到很多Offer请求报文,所以必须在这些应答中选择一个。通常是选择第一个Offer应答报文的服务器作为自己的目标服务器,并向该服务器发送一个广播的Request请求报文,通告选择的服务器,希望获得所分配的IP地址。另外,DHCP客户端在成功获取IP地址后,在地址使用租期达到50%时,会向DHCP服务器发送单播Request请求报文请求续延租约,如果没有收到ACK报文,在租期达到87.5%时,会再次发送广播的Request请求报文以请求续延租约。
DHCP ACK
DHCP服务器收到Request请求报文后,根据Request报文中携带的用户MAC来查找有没有相应的租约记录,如果有则发送ACK应答报文,通知用户可以使用分配的IP地址。
DHCP Snooping
DHCP Snooping技术是DHCP安全特性,通过建立和维护DHCP Snooping绑定表过滤不可信任的DHCP信息,这些信息是指来自不信任区域的DHCP信息。DHCP Snooping绑定表包含不信任区域的用户MAC地址、IP地址、租用期、VLAN-ID 接口等信息。
中继代理
如果DHCP 客户端和DHCP 服务器都位于同一个网段内,客户端获取IP 地址的过程与描述的基本相同。但是,如果DHCP 客户端和DHCP 服务器位于被一个或多个路由器分展开的不同的网段上,整个过程就会变得更复杂一些。路由器通常是不能将广播发送到其他网络上的。为了DHCP 可以工作,需要有一个中介来协助完成DHCP 的处理过程。这个中介是与DHCP 客户端在相同网络中的另一台主机(通常就是路由器)。在任何情况下,这个中介所执行的功能被称为BOOTP 中继代理或者DHCP 中继代理。

中继代理必须具有固定的IP地址,同时还保存有DHCP 服务器的P 地址。因为中继代理已经拥有IP 地址,所以可以直接向DHCP 服务器发送数据包,或者接收来自于DHCP服务器的数据包。由于中继代理与DHCP 客户端位于相同的网络上,也就意味着它可以通过广播与DHCP客户端进行通信。

中继代理会在UDP端口监听广播;当中继代理检测到DHCP请求时,就将这个请求转发给DHCP服务器。当代理收到DHCP服务器的响应时,就将响应在本地网段上广播。

现在一种很流行这做法是通过路由器提供DHCP服务器的功能,在大多数网络中,这样都可以减少对DHCP中继代理的需求。