DHCP 握手原理

DHCP 握手原理

一、DHCP 概述

动态主机配置协议(Dynamic Host Configuration Protocol,DHCP) 用于自动分配网络配置参数(如 IP 地址、子网掩码、网关、DNS 等),简化手动配置流程。其核心是 DORA 四步握手 (Discover → Offer → Request → Acknowledge),基于 UDP 协议(客户端端口 68,服务器端口 67)。

二、DHCP 四步握手流程

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

  • 触发场景:客户端初始化(如开机、重启、未获取到 IP)。
  • 消息 :DHCPDISCOVER
  • 源地址 :0.0.0.0(客户端无 IP)
  • 目标地址 :255.255.255.255(广播)
  • 内容 :
    • 客户端 MAC 地址
    • 请求的参数(如 IP 地址、租期)

流程图:

复制代码
Client:  DHCPDISCOVER ────────────────▶ 广播网络

2. 阶段 2:Offer(服务器响应)

  • 触发场景 :DHCP 服务器收到 DHCPDISCOVER。
  • 消息 :DHCPOFFER
  • 源地址:DHCP 服务器 IP
  • 目标地址 :255.255.255.255(广播,客户端仍无 IP)
  • 内容 :
    • 提供的 IP 地址、子网掩码
    • 租期、服务器标识(IP)

流程图:

复制代码
Server:  ◀────────── DHCPOFFER ─────────── 广播网络

3. 阶段 3:Request(客户端确认选择)

  • 触发场景 :客户端可能收到多个 DHCPOFFER,选择其中一个。
  • 消息 :DHCPREQUEST
  • 源地址 :0.0.0.0(未正式分配 IP)
  • 目标地址 :255.255.255.255(广播)
  • 内容 :
    • 选中的服务器 IP
    • 请求的 IP 地址

流程图:

复制代码
Client:  DHCPREQUEST ────────────────▶ 广播网络

4. 阶段 4:Acknowledge(服务器确认分配)

  • 触发场景 :服务器收到 DHCPREQUEST,确认分配。
  • 消息 :DHCPACK
  • 源地址:DHCP 服务器 IP
  • 目标地址:客户端 IP(此时客户端已临时使用分配的 IP)
  • 内容 :
    • 正式分配的 IP 地址、租期
    • 完整网络配置参数(网关、DNS 等)

流程图:

复制代码
Server:  ◀────────── DHCPACK ──────────── 客户端

三、关键机制与细节

1. 消息类型与端口

阶段 消息 UDP 源端口 UDP 目标端口 传输方式
1-3 步 DISCOVER/REQUEST 68 67 广播
2-4 步 OFFER/ACK 67 68 单播/广播

2. 状态机(客户端)

3. 续租机制

  • T1 时间 (租期的 50%):客户端发送 DHCPREQUEST 续租。
  • T2 时间 (租期的 87.5%):若 T1 未响应,广播 DHCPREQUEST 续租。
  • 租期过期:客户端释放 IP,回到 INIT 状态。

4. 异常处理

  • 无服务器响应:客户端定期重发 DISCOVER(指数退避策略)。
  • IP 冲突 :客户端检测到 IP 冲突时,发送 DHCPDECLINE 拒绝分配。

四、示意图

复制代码
Client       DHCP Server
  │                 │
  │  DHCPDISCOVER  │
  ├───────────────▶│ (广播)
  │                 │
  │◀───────────────│  DHCPOFFER (单播/广播)
  │  DHCPREQUEST   │
  ├───────────────▶│ (广播)
  │                 │
  │◀───────────────│  DHCPACK (单播)
  │  IP 已分配     │

五、常见问题

  1. 为什么前两步使用广播?

    客户端初始无 IP,无法单播;服务器需通过广播响应所有客户端。

  2. DHCP 与 BOOTP 的区别?

    DHCP 是 BOOTP 的扩展,支持动态租期、续租、更多配置参数。

  3. 能否分配固定 IP?

    可以,通过 DHCP 服务器的 静态绑定(根据客户端 MAC 地址分配固定 IP)。

DHCP 通过 DORA 四步握手 实现 IP 地址的动态分配,结合广播与单播机制,确保网络配置的自动化与高效性。

相关推荐
思茂信息8 小时前
CST软件BCI仿真模型及仿真案例
开发语言·单片机·嵌入式硬件·算法·emc
阿里嘎多学长8 小时前
2026-09-28 GitHub 热点项目精选
开发语言·程序员·github·代码托管
XiaoMaqqqq9 小时前
目前知名的IP驱动产业新场景新工具有哪些
网络·python·网络协议·tcp/ip
程序猿编码9 小时前
C++/CUDA 手写 LLM 推理引擎:拆解 vLLM 核心 PagedAttention 与连续批处理
开发语言·c++·深度学习·神经网络·推理·vllm
hold?fish:palm9 小时前
44 二叉搜索树中第K小的元素
开发语言·c++·算法
凉茶钱9 小时前
【吃透C++】万字解析类和对象
开发语言·c++
白杨尚青10 小时前
C++入门篇(十):string(上)——认识string:构造与三大遍历(一条龙讲透operator[]、迭代器、auto、范围for)
java·开发语言·c++·笔记·stl
可乐鸡翅yeah_10 小时前
hls.js 切换多个视频源,新手开发常见踩坑
开发语言·前端·javascript·ios·ffmpeg·音视频·safari
Tanshu_API君10 小时前
API 聚合平台选型指南:从参数拆解到生产落地的十个评估维度
开发语言·api
Chen—LSN10 小时前
C语言——⽂件操作(1)
c语言·开发语言·c++·经验分享·笔记·算法·链表