计算机网络:应用层 —— 动态主机配置协议 DHCP

发布于:2025-02-21 ⋅ 阅读:(13) ⋅ 点赞:(0)

什么是 DHCP?

动态主机配置协议(DHCP,Dynamic Host Configuration Protocol)是一种网络管理协议,用于自动分配IP地址及其他网络配置参数(如子网掩码、默认网关、DNS服务器地址等)给网络中的设备。它基于客户端/服务器架构,通过集中管理IP地址池,简化了网络设备的配置过程。

DHCP 协议允许网络管理员通过中央服务器来动态分配和管理 IP 地址以及其他网络配置参数,从而减少了网络管理的复杂性。

在这里插入图片描述

DHCP 的产生背景

DHCP 出现之前,网络管理员需要手动为每台设备配置 IP 地址,这种方式不仅繁琐,还容易导致 IP 地址冲突和资源浪费。随着网络规模的扩大和设备数量的增加,这种手动配置的方式已无法满足需求。因此,IETF 设计了 DHCP 协议,以实现动态、自动化的 IP 地址分配

DHCP 的工作过程

DHCP 使用客户/服务器方式:

  • DHCP 服务器上运行 DHCP 服务器进程,也可简称为 DHCP 服务器

  • 在用户主机上运行 DHCP 客户进程,也可简称为 DHCP 客户。

DHCP 是 TCP/IP 协议体系应用层中的协议,它使用运输层的 UDP 所提供的服务。DHCP报文在运输层会被封装成为 UDP用户数据报DHCP 服务器使用的UDP端口是67DHCP 客户使用的UDP端口是68,这两个 UDP 端口都是熟知端口。

封装有 DHCP 报文的 UDP 用户数据报,在网络层会被封装成 IP 数据报,然后再根据所使用的网络接口,封装成相应的数据链路层的帧进行发送,如封装为以太网帧。

在这里插入图片描述

工作流程

DHCP 的工作流程主要包括以下四个阶段:

  1. 发现阶段(DHCP Discover):客户端以广播方式发送 DHCP Discover 报文,寻找可用的 DHCP 服务器。

  2. 提供阶段(DHCP Offer):服务器收到请求后,从地址池中选择一个可用的IP地址,并向客户端发送 DHCP Offer 报文。

  3. 请求阶段(DHCP Request):客户端收到 Offer 后,选择一个服务器的 Offer,并发送 DHCP Request 报文,请求确认分配的IP地址。

  4. 确认阶段(DHCP Ack):服务器确认客户端的请求,发送 DHCP Ack 报文,正式分配IP地址及其他配置信息。

这是一个四步的交互过程,包括客户端的广播请求、服务器的提供回应、客户端的确认地址和服务器的确认并更新数据库。

在这里插入图片描述

  1. 客户端广播请求(Discover)

    • DHCP 客户端(如计算机、路由器等)启动时,它会在网络上广播一个 DHCP Discover 消息(因为主机现在并不知道网络中有哪几个DHCP服务器),请求可用的 IP 地址和其他网络配置参数。这个广播消息会被网络上的所有设备接收,但只有DHCP服务器会对此作出响应

    • DHCP Discover 消息报文封装有事务ID、DHCP 客户端的 MAC 地址等信息

  2. DHCP服务器提供回应(Offer)

    • 当 DHCP 服务器接收到客户端的 DHCP Discover 广播后,它会从预定义的IP地址池中选择一个未使用的IP地址,根据其中封装的 DHCP 客户端的 MAC 地址实查找自己的数据库,看是否有针对该 MAC 地址的配置信息。

      如果有,则使用这些配置信息来构建并发送 DHCP 提供报文;则采用默认配置信息来构建并发送 DHCP 提供报文。并通过广播或单播方式向客户端发送一个 DHCP Offer 消息

      DHCP 服务器从自己的 IP 地址池中挑选待租用给主机的IP地址时,会使用ARP确保所选IP地址未被网络中其他主机占用

    • 这个 Offer 消息中包含了分配的 IP 地址、子网掩码、地址租期、默认网关、DNS 服务器地址等配置信息。

    • 如果网络中存在多个 DHCP 服务器,客户端可能会收到多个 Offer 消息。在这种情况下,客户端通常会选择第一个收到的Offer或根据其他标准(如服务器优先级)选择一个Offer

  3. DHCP客户端确认地址(Request)

    • 客户端在收到 DHCP Offer 后,DHCP 客户会根据 DHCP 提供报文中的事物 ID,来判断该报文是否是自己所请求的报文,然后发送一个 DHCP Request 消息给选定的 DHCP 服务器,表示它接受该服务器提供的IP地址和其他配置参数。

      这个 Request 消息是一个广播消息(目的IP地址为广播地址),因为首先需要征得该服务器的同意,之后才能正式使用向该DHCP服务器租用的IP地址。

      DHCP 请求报文中封装有事物 ID、DHCP 客户端的 MAC 地址、接受的租约中的 IP 地址、提供此租约的 DHCP 服务器端的 IP 地址等信息。

  4. DHCP服务器确认并更新数据库(Ack/Decline)

    • 当 DHCP 服务器收到客户端的 DHCP Request 消息后,它会发送一个 DHCP Ack 消息作为响应(目的IP地址为广播地址),确认客户端可以使用请求的IP地址和其他配置参数。这个 Ack 消息也会更新DHCP服务器的数据库,标记该 IP 地址已经被分配出去。

    • 此时,DHCP 服务器仍会使用 ARP 检测所分配到的 IP 地址是否已被网络中其他主机占用,如果 DHCP 服务器提供的 IP 地址已经被其他客户端使用(由于某种原因),则服务器会发送一个 DHCP DECLINE 消息给客户端,撤销地址租约,表示IP地址分配失败,客户端需要重新发送 DHCP Discover 消息以获取新的IP地址。

      若未被占用,则可以使用租约中的IP地址与网络中其他主机通信了

地址分配机制

DHCP 提供了两种主要的地址分配机制:

  • 动态分配:为客户端分配一个有使用期限的IP地址(租期)。租期到期前,客户端需要续租。这种方式适用于临时接入网络的设备。

  • 静态分配:网络管理员可以为特定设备分配固定的IP地址,避免手动配置错误

在工作过程中:

  1. DHCP客户端更新租约(Request/Discover)

    • 当 DHCP 客户端已经和某个 IP 地址绑定后,经过 0.5 倍的租用期时间后,为了更新 IP 地址的租约,它会发送 DHCP REQUEST 单播报文。在这种情况下,客户端知道服务器的具体地址,因此可以直接向该地址发送单播请求。

    • DHCP 服务器若同意,则发回 DHCP ACK 确认报文,这样,DHCP 客户就得到了新的租用期。

    • DHCP 服务器若不同意,则发回DHCP NACK否认报文,这时,DHCP 客户必须立即停止使用之前租用的IP地址,并重新发送 DHCP Discover 发现报文来重新申请IP地址

    • DHCP 服务器者未做出响应,则在租用期过了 87.5% 时,DHCP 客户必须重新发送 DHCP REQUEST 请求报文,然后继续等待 DHCP 服务器可能做出的反应。

    • 若 DHCP 仍未做出响应,当租用期到期后,DHCP 客户必须立即停止使用之前租用的 IP 地址,并重新发送 DHCP 发现报文来重新申请 IP 地址。

  2. DHCP客户终止租用期(Release)

    • DHCP 客户可以随时提前终止 DHCP 服务器所提供的租用期,这时只需向 DHCP 服务器发送 DHCP RELEASE 释放报文段即可。

DHCP 中继代理

在每一个网络上都设置一个 DHCP 服务器会使 DHCP 服务器的数量太多。因此,在实际应用中,是使每一个网络至少有一个DHCP中继代理(通常是一台路由器),它配置了 DHCP 服务器的 IP 地址信息,作为各网络中计算机与 DHCP 服务器的桥梁。

在这里插入图片描述

总结

DHCP 是一种高效的网络管理协议,通过自动分配 IP 地址和网络配置信息,极大地简化了网络管理流程,提高了网络的灵活性和可扩展性。它在现代网络中扮演着不可或缺的角色,尤其是在局域网、无线网络和云计算环境中。


网站公告

今日签到

点亮在社区的每一天
去签到