DHCP 协议详解
文章目录1 DHCP 作用2 DHCP 的工作机制3 DHCP 中继代理4 DHCPv41_DHCP 报文字段解析2_DHCP 可选项字段5 DHCPv61 DHCP 作用逐一为每台主机设置 IP 地址是非常烦琐的事情。尤其是在使用移动笔记本计算机、智能终端及平板电脑等设备时每移动到一个新的地方都需要重新设置 IP 地址。于是为了实现 IP 地址的自动设置、IP 地址分配的统一管理DHCPDynamic Host Configuration Protocol应运而生如下图所示。有了 DHCP 计算机只要连接到网络就可以进行 TCP/IP 通信。也就是说DHCP 即插即用变成可能。指只要物理上一连通无须专门设置就可以直接使用物理设备。而 DHCP 不仅在 IPv4 中可以使用在 IPv6 中也可以使用。2 DHCP 的工作机制使用 DHCP 之前首先要架设一台 DHCP 服务器很多时候用该网段的路由器充当 DHCP 服务器。然后将 DHCP 所要分配的 IP 地址设置到服务器上。此外还需要将相应的子网掩码、路由控制信息及 DNS 服务器的地址等设置到服务器上。关于从 DHCP 中获取 IP 地址的流程以下图为例进行简单说明主要分为两个阶段。DHCP 的确认之所以分两个阶段是为了确保在架设了多台 DHCP 服务器的环境中也能正常工作。第一阶段总共分为两步1要求设置 IP 地址和子网掩码。2通知可以使用的网络设置。在发送 DHCP 发现包与 DHCP 请求包时DHCP 客户端的 IP 地址尚未确定。因此DHCP 发现包的目的地址为广播地址 255.255.255.255源地址则为 0.0.0.0表示未知。DHCP 在分配 IP 地址时有两种方法两种方法可以并用由 DHCP 服务器在特定的 IP 地址池中选出一个进行分配。针对 MAC 地址分配一个固定的 IP 地址。由此DHCP 的网络设置结束可以进行 TCP/IP 通信。不需要 IP 地址时可以发送 DHCP 解除包。另外DHCP 的设置中通常会有一个限制时间的设定。DHCP 客户端可以在这个时限之前发送 DHCP 请求包通知想延长这个时限。使用 DHCP 时如果 DHCP 服务器遇到故障将导致无法自动分配 IP 地址从而导致网段内所有主机之间无法进行 TCP/IP 通信。为了避免此类问题的发生通常人们会架设两台或两台以上的 DHCP 服务器。不过当启动多台 DHCP 服务器时由于每台 DHCP 服务器内部都只记录自身 IP 地址的分配信息并不知道其他服务器的 IP 地址的分配情况因此可能会导致某台服务器分配的 IP 地址已被其他服务器分配出去造成 IP 地址冲突。为了避免地址重复应将相互间没有重叠的 IP 地址范围分配给不同的 DHCP 服务器。为了检查所要分配的 IP 地址及已经分配了的 IP 地址是否可用DHCP 服务器或 DHCP 客户端必须具备以下功能DHCP 服务器在分配 IP 地址前发送 ICMP 回送请求包确认没有返回应答。DHCP 客户端针对从 DHCP 获得的 IP 地址发送 ARP 请求包确认没有返回应答。在获得 IP 地址之前做这样的处理可能会耗一点儿时间但是可以安全地进行 IP 地址分配。两个请求过程总共对应四个状态分别是 DISCOVER、OFFER、REQUEST、ACK。DISCOVER 状态对应的 DHCP 发现包抓包如下OFFER 状态对应的 DHCP 提供包报文如下REQUEST 状态对应的 DHCP 请求包如下DHCP 确认应答包报文如下另外DHCP 消息类型不仅仅是这四种还存在着 PACK、PNAK 等。DHCP 是基于 UDP 广播的使用 67、68 两个端口号。3 DHCP 中继代理家庭网络大多数只有一个以太网无线LAN网段与其连接的主机不会太多。因此只要有一台 DHCP 服务器就足以应对 IP 地址分配的需求而大多数情况下由宽带路由器充当 DHCP 的角色。相比之下在企业或学校等较大规模组织机构的网络环境中一般会有多个以太网无线 LAN网段。在这种情况下若要为每个网段都设置 DHCP 服务器那将会是一个巨大的工程。即使路由器可以充当 DHCP 的角色如果网络中有 100 个路由器就要为 100个 路由器设置它们各自可分配的 IP 地址的范围并对这些范围进行后续的变更维护这将是一个极其耗时和难以管理的工作”。DHCP 服务器分配的 IP 地址范围有时会随服务器或打印机等固定 IP 设备的增减而发生变化。也就是说将 DHCP 服务器分设到各个路由器上于管理和运维都不是一件有益的事。因此在这种网络环境中往往需要将 DHCP 统一管理。具体方法可以使用 DHCP 中继代理来实现如下图所示。有了 DHCP 中继代理以后对不同网段的 IP 地址分配可以由一台 DHCP 服务器统一进行管理和运维。这种方法使得在每个网段架设一台 DHCP 服务器被取代只需在每个网段设置一个 DHCP 中继代理即可。DHCP 中继代理大多数为路由器不过也有在主机中安装某些软件得以实现的情况。它可以设置 DHCP 服务器的 IP 地址从而可以在 DHCP 服务器上为每个网段分配 IP 地址的范围。DHCP 客户端会向 DHCP 中继代理发送 DHCP 请求包而 DHCP 中继代理在收到广播包以后再以单播的形式发给 DHCP 服务器。DHCP 服务器收到该数据包以后再向 DHCP 中继代理返回应答并由 DHCP 中继代理将此数据包转发给 DHCP 客户端。DHCP 请求包中包含发出请求的主机的 MAC 地址。DHCP 中继代理正是利用 MAC 地址将数据包返回给 DHCP 客户端。由此DHCP 客户端与 DHCP 服务器即使不在同一数据链路上也可以实现统一分配和管理 IP 地址。4 DHCPv4根据 RFC 2131 中的内容描述DHCP 支持三种 IP 地址分配方式自动分配即 DHCP 为设备分配一个永久 IP 地址。动态分配DHCP 会为客户端分配一个时间有限的 IP 地址。手动分配客户端的 IP 地址由网络管理员分配DHCP 仅仅起到一个告知客户端的作用。动态分配是三种地址分配机制中唯一允许自动重用客户端不再需要的地址的机制。因此动态分配特别适用于为仅临时连接到网络的客户端分配地址或者在不需要永久 IP 地址的客户端组之间共享有限的 IP 地址池。报文格式如下DHCP 没有改变 BOOTP 的报文格式仍然沿用 BOOTP 的固定头部所以 DHCP 的创新几乎全部放在 options 字段这也是协议扩展的经典方式固定头部 TLV 扩展区。Bootstrap Protocol静态网络启动协议只能分配 IP 地址、TFTP server 、boot file所有映射都要管理员手工配置。TLVType – Length – Value一种自描述的数据编码格式不需要外部结构定义接收方看到 Type 就知道怎么解析看到 Length 就知道读多少字节。1_DHCP 报文字段解析Message Type消息类型该字段长度为 1 字节沿用 BOOTP 的字段有两种取值1 BOOTREQUEST2 BOOTREPLY也就是说此字段的作用是区分请求报文和应答报文。Hardware address type物理地址类型该字段长度为 1 字节通常情况下 1 Ethernet。用于告诉服务器 Client hardware address 字段里的地址类型是什么。Hardware Address Length物理地址长度该字段长度为 1 字节用于告诉服务器 Client hardware address 字段里的有效地址长度。例如Ethernet 6不能假设一定是 6。hops跳数1 字节Relay Agent 使用客户端发送时为 0每经过一个中继 1。Transaction ID传输 ID该字段长度为 4 字节由客户端生成服务器原样返回。用于匹配整个 DHCP 过程中的请求与响应。Sencods elapsed已过秒数该字段长度为 2 字节表示由客户端从开始获取地址到办理续期所经过的时间一般不使用。Flags总占 2 字节第一位表示客户端是否能接受单播其余为保留位。Client IP address客户端 IP 地址4 字节仅在客户端处于特定状态且能响应 ARP 请求时填写不然填 0。Your IP address服务器分配给客户端的 IP 地址4 字节在 Offer 和 ACK 时会填写服务器分配给客户端的 IP 地址。Next Server IP address下一服务 IP 地址该字段长度为 4 字节。指示客户端要使用的下一 DHCP 服务器的 IP 地址由服务器在 OFFER 和 ACK 中返回。Relay Agent IP address如果存在中继代理则为中继代理的 IP 地址服务器看到 ≠ 0 时必须单播回 Relay Agent IP address 不直接回客户端。Client Hardware Addres客户端物理地址长度为 16 字节一般为 Ethernet 地址与物理地址长度和类型字段配合使用。为 Ethernet 地址时前 6 为是 MAC 地址其余为填充部分。server host name 与 file历史字段不使用。options可选项参数字段是 DHCP 实现的关键。2_DHCP 可选项字段DHCP 可选项的文档为 RFC 2132所有常见的可选项种类如下表Vendor ExtensionsCodeName作用RFC 定义语义0Pad填充字节用于对齐255End标记选项列表结束43Vendor Specific Information厂商特定信息格式由厂商定义IP Layer Parameters per HostCodeName作用1Subnet Mask指定客户端子网掩码2Time Offset与 UTC 的时间偏移秒3Router默认网关列表4Time ServerRFC 868 时间服务器5Name ServerIEN-116 名称服务器6Domain Name ServerDNS 服务器列表7Log ServerMIT-LCS UDP 日志服务器8Cookie ServerRFC 865 Cookie 服务器9LPR ServerRFC 1179 打印服务器10Impress ServerImagen Impress 服务器11Resource Location ServerRFC 887 资源定位服务器12Host Name客户端主机名13Boot File Size启动文件大小512字节块14Merit Dump File客户端 dump 文件路径15Domain Name客户端域名16Swap Server交换文件服务器17Root Path根路径NFS18Extensions Path扩展文件路径19IP Forwarding是否启用 IP 转发20Non-Local Source Routing是否允许源路由21Policy Filter策略过滤22Maximum Datagram Reassembly Size最大重组报文长度23Default IP TTL默认 TTL24Path MTU Aging TimeoutPath MTU 老化时间25Path MTU Plateau TableMTU 平台值表26Interface MTU接口 MTU27All Subnets are Local是否所有子网本地28Broadcast Address广播地址29Perform Mask Discovery是否执行掩码发现30Mask Supplier是否提供掩码31Perform Router Discovery是否执行路由发现32Router Solicitation Address路由请求地址33Static Route静态路由DHCP Extensions核心CodeName作用50Requested IP Address客户端请求的 IP51IP Address Lease Time租约时间秒52Option Overload指示 file/sname 也承载选项53DHCP Message TypeDHCP 报文类型54Server IdentifierDHCP 服务器标识55Parameter Request List客户端请求的参数列表56Message错误或状态信息57Maximum DHCP Message Size客户端可接受最大报文58Renewal (T1) Time Value租约续约时间59Rebinding (T2) Time Value租约重绑定时间60Vendor Class Identifier厂商类别标识61Client Identifier客户端标识5 DHCPv6DHCPv6 官方 RFC 文档为 RFC 8415主要变化为不在使用 BOOTP 固定头部简化了消息结构可以更好的支持 IPv6客户端/服务端消息格式0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 -------------------------------- | msg-type | transaction-id | -------------------------------- | | . options . . (variable number and length) . | | --------------------------------中继/服务端消息格式0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 -------------------------------- | msg-type | hop-count | | ---------------- | | | | link-address | | | | ----------------| | | | ---------------- | | | | peer-address | | | | ----------------| | | | ---------------- | . . . options (variable number and length) .... . | | --------------------------------

相关新闻

【rust-i18n】简介

【rust-i18n】简介

rust-i18n 是一个用于 Rust 的国际化(i18n)库,它的核心目标是让文本本地化变得简单和易用。它的 API 设计灵感来自 Ruby 的 ruby-i18n 和 Rails 框架的 I18n 模块。 📁 支持的翻译文件格式 rust-i18n 支持三种主流的配置文件格式&…

2026/5/17 5:38:23 阅读更多 →
Vue.js 循环语句

Vue.js 循环语句

Vue.js 循环语句 在Vue.js框架中,循环语句是构建复杂用户界面的重要组成部分。通过循环语句,我们可以将相同的HTML片段渲染多次,以适应动态数据的需求。本文将详细介绍Vue.js中常用的循环语句,包括v-for指令,以及如何有效地使用它们。 1. 引言 在开发前端界面时,我们经…

2026/5/17 5:38:23 阅读更多 →
主题017:粗粒化分子动力学

主题017:粗粒化分子动力学

主题017:粗粒化分子动力学 1. 理论基础 1.1 粗粒化的动机 全原子模拟的局限: 时间尺度受限(~μs)空间尺度受限(~100 nm)计算成本高 粗粒化的优势: 更大的时间步长(10-50 fs&#xff…

2026/5/17 5:38:23 阅读更多 →

最新新闻

跨架构物联网漏洞挖掘:统一IR与动静结合分析实践

跨架构物联网漏洞挖掘:统一IR与动静结合分析实践

1. 项目概述:为什么我们需要“跨架构”的物联网漏洞挖掘?干了这么多年安全,尤其是物联网这块,我最大的感受就是“乱”。你面对的从来不是单一平台,而是ARM、MIPS、x86、RISC-V,甚至各种魔改的MCU架构大杂烩…

2026/7/5 9:12:35 阅读更多 →
热红外视觉下的车辆/船舶重识别新方法:Vc-fes

热红外视觉下的车辆/船舶重识别新方法:Vc-fes

在监控与海事安防等场景中,如何在**热红外图像**(灰度、无色彩、纹理弱)中准确识别同一辆车或同一艘船,是一个长期悬而未决的难题。近期发表于《International Journal of Machine Learning and Cybernetics》(2026年)的论文《Vc-fes: viewpoint-conditioned feature selection…

2026/7/5 9:10:34 阅读更多 →
本地AI完全指南①:我把ChatGPT退了,一年省2400——为什么越来越多人把大模型搬回家

本地AI完全指南①:我把ChatGPT退了,一年省2400——为什么越来越多人把大模型搬回家

title: 本地AI完全指南①:我把ChatGPT退了,一年省2400——为什么越来越多人把大模型搬回家? tags: 本地AI,私有大模型,Ollama,DeepSeek,大模型部署,AI隐私,离线AI,本地部署大模型,DeepSeek本地部署 category: 人工智能 本地AI完全指南①&…

2026/7/5 9:10:34 阅读更多 →
同一个模型,三个平台:OpenRouter - SiliconFlow - DeepInfra 实测对比

同一个模型,三个平台:OpenRouter - SiliconFlow - DeepInfra 实测对比

前面几期测的都是模型官方 API。但你实际用的时候,大概率走的不是官方——而是通过某个聚合平台。 为什么?几个现实原因: 不想每个模型绑一张信用卡公司采购要求统一结算官方 API 在某些地区不稳定想用一个 API Key 调所有模型 所以这期我不测…

2026/7/5 9:10:34 阅读更多 →
GRPO训练燃料:把Hermes Agent Feedback变成强化学习信号

GRPO训练燃料:把Hermes Agent Feedback变成强化学习信号

GRPO训练燃料:把Agent Feedback变成强化学习信号 「Hermes Agent自进化智能体深度解析」系列 | 模块十六 第3篇 你的Agent积累了1000条执行轨迹。500条成功,500条失败。成功的路径有的快、有的慢,失败的失败方式各不相同。你盯着这些数据&a…

2026/7/5 9:08:34 阅读更多 →
艾尔登法环mod下载法魂Modv3.0安装指南

艾尔登法环mod下载法魂Modv3.0安装指南

法魂Mod是一款热度突破680万、持续更新超过三年的《艾尔登法环》大型大修模组。3.0版本带来了全新宝珠系统、大量原创武器与法术、DLC区域地图重置等重大更新,并兼容无缝联机与光荣商人等主流功能性模组。以下为完整安装流程与多Mod共存配置方法。 版本核心更新内容…

2026/7/5 9:08:34 阅读更多 →

日新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

月新闻