DHCP工作过程详解

简介:

DHCP动态主机配置协议的作用我想作为网管的兄弟们都应该知道了,这里我就不多废话了,今天我要谈的是DHCP的工作过程,了解了工作过程,要排除故障就容易了。

 
一、 DHCP 客户机初始化:
1.  寻找 DHCP Server
DHCP 客户机第一次登录网络的时候(也就是客户机上没有任何 IP 地址数据时),它会通过 UDP 67 端口向网络上发出一个 DHCPDISCOVER 数据包(包中包含客户机的 MAC 地址和计算机名等信息)。因为客户机还不知道自己属于哪一个网络,所以封包的源地址为 0.0.0 .0 ,目标地址为 255.255.255.255 ,然后再附上 DHCP discover 的信息,向网络进行广播。
DHCP discover 的等待时间预设为 1 秒,也就是当客户机将第一个 DHCP discover 封包送出去之后,在 1 秒之内没有得到回应的话,就会进行第二次 DHCP discover 广播。若一直没有得到回应,客户机会将这一广播包重新发送四次(以 2 4 8 16 秒为间隔,加上 1-1000 毫秒之间随机长度的时间)。如果都没有得到 DHCP Server 的回应,客户机会从 169.254.0.0/16 这个自动保留的私有 IP 地址中选用一个 IP 地址。并且每隔 5 分钟重新广播一次,如果收到某个服务器的响应,则继续 IP 租用过程。
2.  提供 IP 地址租用
DHCP Server 监听到客户机发出的 DHCP discover 广播后,它会从那些还没有租出去的地址中,选择最前面的空置 IP ,连同其它 TCP/IP 设定,通过 UDP 68 端口响应给客户机一个 DHCP OFFER 数据包(包中包含 IP 地址、子网掩码、地址租期等信息)。此时还是使用广播进行通讯,源 IP 地址为 DHCP Server IP 地址,目标地址为 255.255.255.255 。同时, DHCP Server 为此客户保留它提供的 IP 地址,从而不会为其他 DHCP 客户分配此 IP 地址。
由于客户机在开始的时候还没有 IP 地址,所以在其 DHCP discover 封包内会带有其 MAC 地址信息,并且有一个 XID 编号来辨别该封包, DHCP Server 响应的 DHCP OFFER 封包则会根据这些资料传递给要求租约的客户。
3.  接受 IP 租约
如果客户机收到网络上多台 DHCP 服务器的响应,只会挑选其中一个 DHCP OFFER (一般是最先到达的那个),并且会向网络发送一个 DHCP REQUEST 广播数据包(包中包含客户端的 MAC 地址、接受的租约中的 IP 地址、提供此租约的 DHCP 服务器地址等),告诉所有 DHCP Server 它将接受哪一台服务器提供的 IP 地址,所有其他的 DHCP 服务器撤销它们的提供以便将 IP 地址提供给下一次 IP 租用请求。此时,由于还没有得到 DHCP Server 的最后确认,客户端仍然使用 0.0.0 .0 为源 IP 地址, 255.255.255.255 为目标地址进行广播。
事实上,并不是所有 DHCP 客户机都会无条件接受 DHCP Server OFFER ,特别是如果这些主机上安装有其它 TCP/IP 相关的客户机软件。客户机也可以用 DHCP REQUEST 向服务器提出 DHCP 选择,这些选择会以不同的号码填写在 DHCP Option Field 里面。客户机可以保留自己的一些 TCP/IP 设定。
4.  租约确认
DHCP Server 接收到客户机的 DHCP REQUEST 之后,会广播返回给客户机一个 DHCP ACK 消息包,表明已经接受客户机的选择,并将这一 IP 地址的合法租用以及其他的配置信息都放入该广播包发给客户机。
客户机在接收到 DHCP ACK 广播后,会向网络发送三个针对此 IP 地址的 ARP 解析请求以执行冲突检测,查询网络上有没有其它机器使用该 IP 地址;如果发现该 IP 地址已经被使用,客户机会发出一个 DHCP DECLINE 数据包给 DHCP Server ,拒绝此 IP 地址租约,并重新发送 DHCP discover 信息。此时,在 DHCP 服务器管理控制台中,会显示此 IP 地址为 BAD_ADDRESS
如果网络上没有其它主机使用此 IP 地址,则客户机的 TCP/IP 使用租约中提供的 IP 地址完成初始化,从而可以和其他网络中的主机进行通讯。
 
二、 DHCP 客户机租期续约:
客户机会在租期过去 50% 的时候,直接向为其提供 IP 地址的 DHCP Server 发送 DHCP REQUEST 消息包。如果客户机接收到该服务器回应的 DHCP ACK 消息包,客户机就根据包中所提供的新的租期以及其它已经更新的 TCP/IP 参数,更新自己的配置, IP 租用更新完成。如果没有收到该服务器的回复,则客户机继续使用现有的 IP 地址,因为当前租期还有 50%
如果在租期过去 50% 的时候没有更新,则客户机将在租期过去 87.5% 的时候再次向为其提供 IP 地址的 DHCP 联系。如果还不成功,到租约的 100% 时候,客户机必须放弃这个 IP 地址,重新申请。如果此时无 DHCP 可用,客户机会使用 169.254.0.0/16 中随机的一个地址,并且每隔 5 分钟再进行尝试。




     本文转自Tonyguo 51CTO博客,原文链接: http://blog.51cto.com/tonyguo/163475 ,如需转载请自行联系原作者


相关文章
|
Ubuntu 关系型数据库 MySQL
Percona XtraBackup 安装介绍篇
XtraBackup介绍   XtraBackup是Percona公司的开源项目,用以实现类似Innodb官方的热备份工具InnoDB Hot Backup的功能,它支持在线热备份(备份时不影响数据读写)。
3929 0
|
MySQL 关系型数据库 数据库
MySQL命令行查询结果中文显示乱码 .
数据库编码格式为utf8,表和字段也都是utf8,存进去的格式是utf-8 但是用命令行工具查询命令select * from 表名; 查询出来的中文是乱码 原因:MySQL客户端根本就不能以utf8的形式返回数据 解决如下: SET NAMES GB2312; 在命令行执行即可解决。
1860 0
|
11天前
|
人工智能 自然语言处理 监控
OpenClaw skills重构量化交易逻辑:部署+AI全自动炒股指南(2026终极版)
2026年,AI Agent领域最震撼的突破来自OpenClaw(原Clawdbot)——这个能自主规划、执行任务的智能体,用50美元启动资金创造了48小时滚雪球至2980美元的奇迹,收益率高达5860%。其核心逻辑堪称教科书级:每10分钟扫描Polymarket近千个预测市场,借助Claude API深度推理,交叉验证NOAA天气数据、体育伤病报告、加密货币链上情绪等多维度信息,捕捉8%以上的定价偏差,再通过凯利准则将单仓位严格控制在总资金6%以内,实现低风险高频套利。
5491 48
|
29天前
|
人工智能 自然语言处理 Shell
🦞 如何在 OpenClaw (Clawdbot/Moltbot) 配置阿里云百炼 API
本教程指导用户在开源AI助手Clawdbot中集成阿里云百炼API,涵盖安装Clawdbot、获取百炼API Key、配置环境变量与模型参数、验证调用等完整流程,支持Qwen3-max thinking (Qwen3-Max-2026-01-23)/Qwen - Plus等主流模型,助力本地化智能自动化。
40077 156
🦞 如何在 OpenClaw (Clawdbot/Moltbot) 配置阿里云百炼 API
|
7天前
|
存储 人工智能 负载均衡
阿里云OpenClaw多Agent实战宝典:从极速部署到AI团队搭建,一个人=一支高效军团
在AI自动化时代,单一Agent的“全能模式”早已无法满足复杂任务需求——记忆臃肿导致响应迟缓、上下文污染引发逻辑冲突、无关信息加载造成Token浪费,这些痛点让OpenClaw的潜力大打折扣。而多Agent架构的出现,彻底改变了这一现状:通过“单Gateway+多分身”模式,让一个Bot在不同场景下切换独立“大脑”,如同组建一支分工明确的AI团队,实现创意、写作、编码、数据分析等任务的高效协同。
2074 25
|
3天前
|
人工智能 JavaScript API
2026年Windows系统本地部署OpenClaw指南:附阿里云简易部署OpenClaw方案,零技术基础也能玩转AI助手
在AI办公自动化全面普及的2026年,OpenClaw(原Clawdbot、Moltbot)凭借“自然语言指令操控、多任务自动化执行、多工具无缝集成”的核心优势,成为个人与轻量办公群体打造专属AI助手的首选。它彻底打破了传统AI“只会对话不会执行”的局限——“手”可读写本地文件、执行代码、操控命令行,“脚”能联网搜索、访问网页并分析内容,“大脑”则可灵活接入通义千问、OpenAI等云端API,或利用本地GPU运行模型,真正实现“聊天框里办大事”。
799 1