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

文章目录

    • [什么是 DHCP?](#什么是 DHCP?)
    • [DHCP 的产生背景](#DHCP 的产生背景)
    • [DHCP 的工作过程](#DHCP 的工作过程)
    • [DHCP 中继代理](#DHCP 中继代理)
    • 总结

什么是 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 地址和网络配置信息,极大地简化了网络管理流程,提高了网络的灵活性和可扩展性。它在现代网络中扮演着不可或缺的角色,尤其是在局域网、无线网络和云计算环境中。

相关推荐
一ge科研小菜鸡10 分钟前
DeepSeek 与网络安全:AI 在网络安全领域的应用与挑战
网络
鸭鸭鸭进京赶烤32 分钟前
数学建模:解锁智能计算的密码!
人工智能·计算机网络·算法·数学建模·信息可视化·机器人·信息与通信
渗透测试老鸟-九青37 分钟前
HW面试经验分享 | 北京蓝中研判岗
网络·经验分享·安全·网络安全·面试·渗透·代码审计
shaoin_21 小时前
网络协议相关问题
网络·网络协议
LUCIAZZZ2 小时前
简单说一下什么是RPC
java·网络·网络协议·计算机网络·spring cloud·rpc
一勺菠萝丶2 小时前
计算机专业知识【深入理解子网中的特殊地址:为何 192.168.0.1 和 192.168.0.255 不能随意分配】
网络·智能路由器
s_fox_2 小时前
Nginx Embedded Variables 嵌入式变量解析(4)
java·网络·nginx
etcix3 小时前
实现一个简单的拉取网络todo app
网络
网络安全(华哥)3 小时前
网络安全服务实施流程管理 网络安全服务体系
运维·服务器·网络
查理养殖场4 小时前
计算机网络之TCP的可靠传输
网络·tcp/ip·计算机网络