您的位置  > 互联网

DHCP是怎么工作的?服务器的IP地址是什么?

在 IP 网络中,每个连接的设备都需要分配一个唯一的 IP 地址。 DHCP 使网络管理员能够从中央节点监控和分配 IP 地址。 当计算机移动到网络上的另一个位置时,它可以自动接收新的 IP 地址。 DHCP实现的IP地址自动分配不仅减少了配置和部署设备的时间,而且减少了配置错误的可能性。 另外,DHCP服务器可以管理多个网段的配置信息。 当某个网段的配置发生变化时,管理员只需更新DHCP服务器上的相关配置,实现集中管理。

总的来说,DHCP 带来了以下优点:

DHCP 是如何工作的?

DHCP协议使用UDP作为传输协议。 DHCP客户端向DHCP服务器的68端口发送请求消息,DHCP服务器向DHCP客户端的67端口发送响应消息。

只有与DHCP客户端处于同一网段的DHCP服务器才能接收DHCP客户端广播的DHCP报文。 当DHCP客户端和DHCP服务器不在同一网段时,需要部署DHCP中继来在DHCP客户端和DHCP服务器之间转发DHCP报文。 从DHCP客户端的角度来看,DHCP中继就像一个DHCP服务器; 从DHCP服务器的角度来看,DHCP中继就像一个DHCP客户端。

非中继场景下DHCP客户端首次接入网络如何处理?

如下图所示,在未部署DHCP中继的场景下,DHCP客户端首次接入网络时与DHCP服务器之间的消息交互过程称为DHCP消息四步交互。

非中继场景下DHCP客户端首次接入网络时的消息交互示意图。

第一步:发现阶段

首次连接网络的DHCP客户端并不知道DHCP服务器的IP地址。 为了获知 DHCP 服务器的 IP 地址,DHCP 客户端向同一网段内的所有用户广播 DHCP 消息(目的 IP 地址为 255.255.255.255)。 所有设备(包括 DHCP 服务器或中继)。 DHCP报文携带客户端的MAC地址()等信息。

第2步:供应阶段

与 DHCP 客户端位于同一网段的 DHCP 服务器将收到该 DHCP 报文。 DHCP服务器选择与接收DHCP报文的接口IP地址在同一网段的地址池,并从中选择一个可用的IP地址,然后使用DHCP OFFER报文发送给DHCP客户端。

通常情况下,IP地址的租期是在DHCP服务器的地址池中指定的。 如果DHCP客户端发送的DHCP报文中携带了预期租期,服务器会将客户端请求的预期租期与指定的租期进行比较。 选择分配给客户的较短租期。

DHCP服务器在地址池中为客户端分配IP地址的顺序如下: DHCP服务器上配置的IP地址与客户端的MAC地址静态绑定。 客户端发送的 DHCP 消息中指定的地址(请求 IP 地址选项)。 在地址池中查找“”状态的IP地址,即已分配给客户端且已过期的IP地址。 在地址池中随机查找处于“空闲”状态的IP地址。 如果没有找到可供分配的IP地址,地址池会自动依次回收过期(“”状态)和冲突状态(“”状态)的IP地址。 如果回收后发现可用的IP地址,则进行分配; 否则,DHCP客户端将等待响应超时,然后重新发送DHCP报文来申请IP地址。 设备支持将某些无法通过DHCP机制分配的IP地址从地址池中排除。 例如,在客户端所在网段手动配置了一台地址为192.168.1.100/24的DNS服务器。 需要将IP地址192.168.1.100排除在DHCP服务器配置的192.168.1.0/24网段地址池之外。 这是不可能的。 该地址是通过DHCP分配的,否则会发生地址冲突。

为了防止分配的IP地址与网络上其他客户端的IP地址冲突,DHCP服务器会发送ICMP ECHO报文对,源地址为DHCP服务器IP地址,目的地址为预分配的IP地址发送 DHCP OFFER 消息之前的地址。 分配的IP地址用于地址冲突检测。 如果在规定时间内没有收到响应消息,则表明网络上没有客户端使用该IP地址,可以将其分配给该客户端; 如果在指定时间内收到响应消息,则表明网络上已经有客户端使用该IP地址。 客户端会将这个地址列为冲突地址,等待再次收到DHCP报文,然后按照前面介绍的选择IP地址的优先顺序重新选择一个可用的IP地址。

此阶段DHCP服务器为客户端分配的IP地址不一定是最终确定使用的IP地址,因为如果在向客户端发送DHCP OFFER消息后16秒后没有收到客户端的响应,该地址可以继续分配给其他客户端。 结尾。 只有经过下面的选择阶段和确认阶段后才能确定客户端可以使用的IP地址。

第三步:选择阶段

如果有多个 DHCP 服务器向 DHCP 客户端响应 DHCP OFFER 报文,则 DHCP 客户端一般只接收第一个收到的 DHCP OFFER 报文,然后以广播方式发送 DHCP 报文,该报文中包含客户端的您所在的 DHCP 服务器的标识符想要选择(即填充收到的 DHCP OFFER 消息中的字段的 IP 地址)。

DHCP客户端广播DHCP消息,通知所有DHCP服务器它将选择某个DHCP服务器提供的IP地址。 其他 DHCP 服务器可以将分配给客户端的 IP 地址重新分配给其他客户端。

第四步:确认阶段

当DHCP服务器收到DHCP客户端发送的DHCP报文时,会回复DHCP ACK报文,表示DHCP报文中请求的IP地址(填写的)已分配给客户端。

当DHCP客户端收到DHCP ACK报文时,会广播发送免费ARP报文,检测本网段内是否有其他终端使用服务器分配的IP地址。 如果在指定时间内没有收到响应,则表示客户端可以使用该地址。 。 如果收到响应,则表明另一个终端正在使用该地址。 客户端将向服务器发送 DHCP 消息,并向服务器重新请求 IP 地址。 同时,服务器会将这个地址列为冲突地址。 当服务器没有空闲地址可供分配时,它会选择冲突的地址进行分配,以尽量减少分配的地址之间的冲突。

当DHCP服务器收到DHCP客户端发送的DHCP报文时,如果由于某种原因(如协商错误或者由于传输速度慢,服务器已将该地址分配给其他客户端)而导致DHCP服务器无法分配地址,则DHCP服务器会向其他客户端分配该地址。消息中填写了IP地址,则发送DHCP NAK消息作为响应,通知DHCP客户端无法分配IP地址。 DHCP客户端需要重新发送DHCP报文来申请新的IP地址。

存在中继场景时,DHCP客户端首次接入网络如何处理?

有DHCP中继场景下,首次接入网络的DHCP客户端和DHCP服务器的工作原理与无DHCP中继场景下首次接入网络的DHCP客户端工作原理相同。一个继电器。 主要区别在于,DHCP中继在DHCP服务器和DHCP客户端之间转发DHCP报文,以保证DHCP服务器和DHCP客户端能够正常交互。 下面仅介绍DHCP中继的工作原理。

如下图所示,在部署DHCP中继的场景下,DHCP客户端与首次接入网络的DHCP服务器之间的报文交互流程。

中继场景下DHCP客户端首次接入网络时的消息交互示意图

第一步:发现阶段

DHCP中继收到DHCP客户端广播的DHCP报文后,进行如下处理: 检查DHCP报文中的hops字段。 如果大于16,则丢弃该DHCP报文; 否则,将 hops 字段加 1(表示经过一次 DHCP 中继)并继续下面。 检查 DHCP 消息中的字段。 如果为0,则将该字段设置为接收DHCP报文的接口的IP地址。 如果不为0,则不要修改该字段,继续进行以下操作。 将DHCP报文的目的IP地址更改为DHCP服务器或下一跳中继的IP地址,将源地址更改为中继客户端的接口地址,并将DHCP报文单播到DHCP服务器或下一跳中继通过路由转发。 跳跃中继。

如果DHCP客户端和DHCP服务器之间存在多个DHCP中继,则后续中继接收到DHCP报文的处理流程与上述相同。

第2步:供应阶段

DHCP服务器收到DHCP报文后,选择与报文中字段同一网段的地址池,为客户端分配IP地址等参数,然后单播向报文中标识的DHCP中继发送DHCP OFFER报文。场地。

DHCP中继收到DHCP OFFER消息后,将进行如下处理: 检查消息中的字段。 如果不是接口地址,则丢弃该报文; 否则,继续执行以下操作。 DHCP 中继检查消息的广播标志。 如果广播标志位为1,则向DHCP客户端广播DHCP OFFER消息; 否则,DHCP OFFER消息单播给DHCP客户端。

第三步:选择阶段

中继收到客户端的DHCP消息的处理过程与非中继场景下的选择阶段相同。

第四步:确认阶段

中继收到服务器的DHCP ACK消息时的处理过程与非中继场景下的确认阶段相同。

DHCP 客户端如何重用以前使用过的地址的工作原理

当DHCP客户端不是第一次连接到网络时,它可以重复使用以前使用过的地址。 如下图所示,DHCP客户端与DHCP服务器交换DHCP报文,重新获取之前使用的IP地址和其他网络参数。 这个过程称为两步交互。

DHCP客户端重用之前使用过的IP地址的报文交互过程

第一步:选择阶段

客户端广播包含先前分配的IP地址的DHCP消息,消息中的(请求的IP地址选项)字段填充先前使用的IP地址。

第二步:确认阶段

DHCP服务器收到DHCP报文后,根据DHCP报文中携带的MAC地址查找对应的租约记录。 如果是,则返回 DHCP ACK 消息,通知 DHCP 客户端可以继续使用该 IP 地址。 否则,保持沉默并等待客户端重新发送 DHCP 消息来请求新的 IP 地址。

DHCP 客户端续订租约的工作原理

当DHCP服务器采用动态分配机制为客户端分配IP地址时,分配的IP地址会受到租用限制。 DHCP客户端向服务器申请地址时可以携带预期的租期。 服务器在分配租期时,会将客户端的预期租期与地址池中的租期配置进行比较,为客户端分配其中较短的租期。 租约到期或者客户端下线释放地址后,服务器会回收该IP地址,回收的IP地址可以继续分配给其他客户端。 这种机制可以提高IP地址的利用率,防止客户端下线后IP地址继续被占用。 如果DHCP客户端想要继续使用该地址,则需要续订IP地址租约(例如延长IP地址租约)。

DHCP客户端更新租期的流程如下图所示。

DHCP客户端更新租期示意图

当租期达到50%(T1)时,DHCP客户端会自动以单播方式向DHCP服务器发送DHCP报文,请求更新IP地址租期。 如果收到DHCP服务器发来的DHCP ACK消息,则租约更新成功(即租约从0开始计算); 如果收到 DHCP NAK 消息,则重新发送 DHCP 消息以请求新的 IP 地址。 当租期达到87.5%(T2)时,如果仍然没有收到DHCP服务器的响应,DHCP客户端会自动以广播方式向DHCP服务器发送DHCP报文,请求更新IP地址租期。 如果收到DHCP服务器发来的DHCP ACK消息,则租约更新成功(即租约从0开始计算); 如果收到 DHCP NAK 消息,则重新发送 DHCP 消息以请求新的 IP 地址。 如果租期到期后没有收到服务器的响应,客户端将停止使用该IP地址,并重新发送DHCP报文来请求新的IP地址。

在租用时间到期之前,如果客户端不想使用分配的IP地址(例如客户端的网络位置需要改变),则会触发DHCP客户端向DHCP服务器发送DHCP报文,通知DHCP服务器。 DHCP服务器释放IP地址的租约。 DHCP服务器将保留DHCP客户端的配置信息,并列出之前分配的IP地址中的IP地址,以便后续重新分配给该客户端或其他客户端。 客户端可以通过发送 DHCP 消息向服务器请求更新的配置信息。

如下图所示,部署DHCP中继时,续租的过程与上述过程类似。

客户端通过DHCP中继续租示意图

DHCP使用场景

DHCP 提供两种地址分配机制。 网络管理员可以根据网络需求,为不同的主机选择不同的分配策略。