DHCP的8类报文及工作原理

DHCP的基本概念

随着网络规模的扩大和网络复杂度的提高,网络配置变的越来越复杂,再加上计算机数量剧增且位置不固定(如移动便携机或无线网络),引发了IP地址频繁变化以及IP地址不足的问题。为了实现网络可以动态合理地分配IP地址给主机使用,需要用到动态主机配置协议DHCP。

DHCP协议是在BOOTP(Bootstrap Protocol)协议基础上发展而来,但BOOTP运行在相对静态(每台主机都有固定的网络连接)的环境中,管理员为每台主机配置专门的BOOTP参数文件,该文件会在相当长的时间内保持不变。而DHCP从以下方面对BOOTP进行了扩展:

  1. DHCP实现了IP地址及网络配置参数的自动分配的功能。
  2. DHCP允许计算机快速、动态地获取IP地址,而不是静态为每台主机指定地址。
  3. DHCP技术实现了IP地址的合理分配,提高了IP地址的使用率,避免了IP地址的浪费。

DHCP服务工作在C/S(客户端/服务器)模式,但两者进行报文传输时所使用的UDP传输端口是不一样的,DHCP客户端使用68号UDP端口发送请求报文;DHCP服务器使用67号UDP端口发送应答报文。DHCP客户端向DHCP服务器发送的报文称之为DHCP请求报文,而DHCP服务器向DHCP客户端发送的报文称之为DHCP应答报文。

DHCP的3种角色

DHCP基本协议架构中,主要包括以下三种角色:

DHCP Client

DHCP客户端通过与DHCP服务器进行报文交互,获取IP地址和其他网络配置信息,完成自身的地址配置。

在设备接口上配置DHCP Client功能,这样接口可以作为DHCP Client,使用DHCP协议从DHCP Server动态获得IP地址等参数,方便用户配置,也便于集中管理。

DHCP Relay

DHCP Relay(中继)负责转发来自客户端方向或服务器方向的DHCP报文,协助DHCP客户端和DHCP服务器完成地址配置功能。

如果DHCP服务器和DHCP客户端不在同一个网段范围内,则需要通过DHCP中继来转发报文,这样可以避免在每个网段范围内都部署DHCP服务器,既节省了成本,又便于进行集中管理。

在DHCP基本协议架构中,DHCP中继不是必须的角色。只有当DHCP客户端和DHCP服务器不在同一网段内,才需要DHCP中继进行报文的转发。

DHCP Server

DHCP Server负责处理来自客户端或中继的地址分配、地址续租、地址释放等请求,为客户端分配IP地址和其他网络配置信息。

DHCP的8类报文及工作原理

整个DHCP服务一共有8种类型(主要是前面7种类型)的DHCP报文,分别为DHCP Discover、DHCP Offer、DHCP Request、DHCP ACK、DHCP NAK、DHCP Release、DHCP Decline、DHCP Inform。

DHCP discover

(发现报文)

DHCP 客户端在请求IP地址时并不知道DHCP服务器的位置,因此DHCP客户端会在本地网络内以广播方式发送Discover请求报文,以发现网络中的DHCP服务器。所有收到 Discover 报文的DHCP服务器都会发送offer应答报文来回应,DHCP 客户端根据offer应答报文可以知道网络中存在的DHCP服务器的位置。

DHCP offer

(提供报文)

DHCP服务器收到Discover报文后,就会在所配置的地址池中查找一个合适的 IP地址,加上相应的租约期限和其他配置信息(如网关、 DNS 服务器等),构造一个Offer报文以单播的方式发送给DHCP客户端,告知用户本DHCP服务器可以为其提供IP地址。

但这个offer报文只是告诉 DHCP客户端可以提供 IP 地址,最终还需要客户端通过广播的方式发送免费ARP报文,探测是否有主机使用服务器分配的IP地址,检测该IP地址是否重复<只是告诉client可以提供,是预分配,还需要client通过ARP检测该IP是否重复>。

DHCP request

(请求报文)

DHCP客户端可能会收到很多个Offer应答报文,所以必须在这些应答报文中选择一个。通常是选择第一个Offer应答报文的服务器作为自己的目标服务器,并向该服务器发送一个广播的Request请求报文,通告选择的服务器,希望获得所分配的IP地址。另外, DHCP客户端在成功获取IP地址后,在地址使用租期过去1/2时,也会向DHCP服务器发送单播的Request请求报文请求延续租约,如果收到ACK应答报文,则租期更新成功,即租期从0开始计算。如果没有收到ACK应答报文,在租期过去7/8时,会再次发送广播的 Request请求报文以请求延续租约。如果IP租约到期前都没有收到服务器响应,客户端停止使用此IP地址,重新发送DHCP Discover报文请求新的IP地址。

DHCP ACK

(确认报文)

DHCP服务器收到Request请求报文后,根据 Request报文中携带的用户MAC 地址来查找有没有相应的租约记录,如果有则发送单播的ACK应答报文,通知用户可以使用分配的IP地址。

DHCP NAKNACK

(否定应答报文Negative-Acknowledgment

如果DHCP服务器收到Request请求报文后,发现没有相应的租约记录或者由于某些原因无法正常分配IP地址,则向DHCP客户端发送单播的NAK应答报文,通知用户无法分配合适的 IP 地址。

DHCP Release

(释放报文)

当DHCP客户端不再需要使用分配IP地址时,就会主动向DHCP服务器发送 Release请求报文,告知服务器用户不再需要分配IP地址,请求DHCP服务器释放对应的IP地址

DHCP Decline

(冲突拒绝报文)

DHCP客户端收到DHCP服务器ACK应答报文后,通过地址冲突检测发现服务器分配的地址冲突或者由于其他原因导致不能使用,则会向DHCP服务器发送 Decline请求报文,通知服务器所分配的IP地址不可用,以期望获得新的IP 地址。

DHCP Inform

DHCP客户端如果需要从DHCP服务器端获取更为详细的配置信息,则向 DHCP 服务器发送 Inform 请求报文; DHCP服务器在收到该报文后,将根据租约进行查找到相应的配置信息后,向DHCP客户端发送ACK应答报文。目前基本上不用了< 极少用到>。

猜你喜欢

转载自blog.csdn.net/wenhe0119/article/details/131551733
今日推荐