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 地址的动态分配,结合广播与单播机制,确保网络配置的自动化与高效性。

相关推荐
§ꦿCFོ༉6 小时前
嵌入式八股文—C语言入门学习(四)
c语言·开发语言·学习
投图匠6 小时前
十种不同风格的 CTP接口 框架
开发语言·python
爱笑的k1110 小时前
nano-vllm 源码剖析:千行 Python 手写离线推理引擎的调度、显存与并行时序
开发语言·python·vllm
X1A0RAN11 小时前
PPT 图片批量处理教程:导出全部幻灯片 · 提取全部素材
开发语言·javascript·powerpoint
熊猫钓鱼>_>12 小时前
普通用户视角的端侧智能体验手记【鸿蒙心迹】
开发语言·人工智能·华为·智能手机·性能优化·ai编程·harmonyos
瑞雪兆丰年兮12 小时前
JavaWeb-day13-SpringBootWeb事务管理&AOP
java·开发语言·springboot·javaweb·事务·web·aop
布莱克60514 小时前
Swift 常量详解:从 let 到编译期优化
服务器·开发语言·ssh·swift·常量·let
略懂而已14 小时前
安装SSL后网站速度变慢?
网络·网络协议·ssl
布莱克60514 小时前
Swift 可选类型(Optionals)详解:从原理到实战
开发语言·安全·ssh·swift·optional·可选类型
瑞雪兆丰年兮16 小时前
JavaWeb-day14-SpringBootWeb原理篇
java·开发语言·spring boot·spring·bean·mybatis·javaweb