网络: DHCP 协议简介

文章目录

  • 1. 前言
  • 2. DHCP 协议简介
    • 2.1 DHCP 客户端广播 `DHCPDISCOVER` 消息
    • 2.2 DHCP 服务器回复 `DHCPOFFER` 消息
    • 2.3 DHCP 客户端广播 `DHCPREQUEST` 消息
    • 2.4 DHCP 服务器回复 `DHCPACK` 消息
    • 2.5 剩余的工作
  • 3. 参考资料

1. 前言

限于作者能力水平,本文可能存在谬误,因此而给读者带来的损失,作者不做任何承诺。

2. DHCP 协议简介

DHCP,是 Dynamic Host Configuration Protocol 的缩写,译称 动态主机配置协议DHCP 是一个局域网协议,前身为 BOOTP 协议,用来为局域网主机动态管理、分配 IP 地址DHCP 协议位于OSI 7层协议模型应用层,向下调用 UDP 协议工作。
DHCP 的具体实现为 C/S 模式(客户端/服务端 模式)DHCP 请求、分配 IP 地址的过程,可以简单概括为:客户端向服务端发起 IP 地址分配请求,服务端响应该请求返回分配的 IP 地址等信息给客户端,之后客户端使用返回的 IP 地址工作,使用完毕(租期到期、或下线)后释放该地址给 DHCP 服务器。典型的 DHCP 客户端有 dhcpcd 。
接下来细化上述DHCP 请求、分配 IP 地址的过程,先上一张图:
在这里插入图片描述
上图是一个典型的 DHCP 分配地址的过程,下面以每一小节一个消息的组织形式,来细化这一过程。在此之前,有必要把 DHCP 消息的格式做个简要介绍:
在这里插入图片描述
下图为协议对消息字段的解释:
在这里插入图片描述
这里只挑我们重点关注的2个字段进行说明:

yiaddr: DHCP 服务器分配给客户端的 IP 地址,4字节长。
chaddr: 网络设备地址(如以太网卡 MAC 地址),16字节长。像以太网卡 MAC 地址只需6字节,剩余部分填 0

2.1 DHCP 客户端广播 DHCPDISCOVER 消息

DHCP 客户端通过在局域网广播 DHCPDISCOVER 消息,向局域网的所有 DHCP 服务器发起 IP 地址分配请求。我们以找工作的过程,来进行类比:我们(找工作的人),就是 DHCP 客户端;找工作要投递简历,投递简历的过程,就是发送 DHCPDISCOVER 消息,我们找工作通常会投多家公司,这就是广播了;而接收我们简历投递的公司,就是 DHCP 服务器。看一下 DHCP 客户端 DHCPDISCOVER 消息的抓包:
在这里插入图片描述

2.2 DHCP 服务器回复 DHCPOFFER 消息

局域网内的 DHCP 服务器收到 DHCP 客户端广播的 DHCPDISCOVER 消息后,从自身管理的 IP 地址池挑选一个空闲 IP,单播回复一个带可用 IP 地址的 DHCPOFFER 消息给请求 IP 的 DHCP 客户端。还是类比于找工作的过程,我们投递了简历的公司,经过面试后(发现可用 IP),如果发现你合适(有可用 IP),则会给你发一个 Offer (单播 DHCPOFFER 消息给 DHCP 客户端)。当然,如果面试发现你不合适(没有可用 IP 或 其它可能的问题),自然也不会发 Offer 给你(没有 DHCPOFFER 从这些 DHCP 服务器发出)。看一下 DHCP 客户端 DHCPOFFER 消息的抓包:
在这里插入图片描述

2.3 DHCP 客户端广播 DHCPREQUEST 消息

DHCP 客户端在收到 DHCP 服务器DHCPOFFER 消息后,再次向 DHCP 服务器 广播 DHCPREQUEST 消息,告知自己准备要使用 DHCPOFFER 消息给出 IP 地址。之所以是广播,因为还有完全确立使用该 IP。当然,DHCP 客户端 可能收到多个来自 DHCP 服务器的 DHCPOFFER 消息,它回挑选其中一个,通常是挑选最先收到的。还是类比于找工作的过程,在收到公司发给我们的 Offer 后(收到 DHCPOFFER 消息后),我们从中挑选一封 Offer 接受(毕竟烈女不嫁二夫^ - ^),然后告知公司我接受你家的 Offer(向 DHCP 服务器 广播 DHCPREQUEST 消息)。看一下 DHCP 客户端 DHCPREQUEST 消息的抓包:
在这里插入图片描述

2.4 DHCP 服务器回复 DHCPACK 消息

DHCP 服务器接收到 DHCP 客户端的 IP 请求消息 DHCPREQUEST 后,单播回复一个 DHCPACK 告知 DHCP 客户端,你申请的 IP 成功了,DHCP 服务端会将之记录在案:该 IP 已经分配出去了。当然,也可能回复 DHCPNAK 消息,告知 DHCP 客户端 你申请的 IP 不批准:毕竟消息中间存在间隙,别的客户端也可能已经将这个 IP 拿走了。再类比到找工作,即使你拿到 Offer 了,入职前还是要跟公司再次确认(收取 DHCPACK 消息确认),因为有可能别人抢了你的职位(别的客户端捷足先登拿走了你申请的 IP)。会有公司这么干,发了 Offer 也不给你入职,公司可能找了一个性价比更优的。虽然无耻,但很现实 ^ - ^ 。看一下 DHCP 客户端 DHCPACK 消息的抓包:
在这里插入图片描述

2.5 剩余的工作

看起来一切都已经完成了,是这样吗?对于 DHCP 协议来讲,确实工作已经结束了。但是,如果局域网内,有其它的设备静态配置了 DHCP 客户端申请的 IP ,而 DHCP 服务端不会知道这一点,所以可能分配了一个和局域网内设备冲突的 IP 给客户端,这是 DHCP 客户端拿到 DHCPACK 消息确认的 IP 后,通过发送一个 ARP 广播,来确认是不是局域网内有和自己刚申请到的 IP 冲突的设备,看下 DHCP 客户端在拿到申请的 IP 后,在局域网内发 ARP 广播来确认是否存在冲突 IP 的抓包:
在这里插入图片描述
DHCP 客户端 发几个 ARP 广播,没设备回应的话,就认为没人使用申请的 IP,接下来就使用该 IP 愉快的玩耍了。这一部分内容,已经不属于 DHCP 协议的内容了。

3. 参考资料

[1] DHCP协议详解
[2] DHCP协议: RFC 2131

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/472197.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode hard也就这么回事

给你一个链表数组,每个链表都已经按升序排列。 请你将所有链表合并到一个升序链表中,返回合并后的链表。 示例 1: 输入:lists [[1,4,5],[1,3,4],[2,6]] 输出:[1,1,2,3,4,4,5,6] 解释:链表数组如下&…

Day72:WEB攻防-业务逻辑篇水平越权垂直越权未授权访问检测插件SRC项目

目录 逻辑越权-检测原理-水平&垂直&未授权 水平越权:同级别的用户之间权限的跨越 垂直越权:低级别用户到高级别用户权限的跨越 未授权访问:无登录用户就能直接访问到需验证应用 逻辑越权-检测项目-BURP插件&对比项目 Xia_Y…

【开源鸿蒙】编译OpenHarmony轻量系统QEMU RISC-V版

文章目录 一、背景介绍二、准备OpenHarmony源代码三、准备hb命令3.1 安装hb命令3.2 检查hb命令 四、编译RISC-V架构的OpenHarmony轻量系统4.1 设置hb构建目标4.2 启动hb构建过程 五、问题解决5.1 hb set 报错问题解决 六、参考链接 开源鸿蒙坚果派,学习鸿蒙一起来&a…

【操作系统】以Pthread线程库为例详解多线程并发运行的特点

目录 写在开头 1.线程的创建 2.主线程与子线程的结束顺序 3.线程之间的数据共享与并发执行 4.蒙特卡洛法求pi(单线程) 5.蒙特卡洛法求pi(多线程) 写在最后 写在开头 近期准备重学操作系统,感觉还是有很多细节的…

通过切面编程(AOP)实现不同字段转换为同一字段

文章目录 前言一、切面编程(AOP)是什么?二、demo样例1.实体类a.新增订单b.更新订单b.日志实体类 2.实现相关a.类型转换接口类b.类型转换接口实现类c.自定义注解d.切面配置e.运行 三、结果示例四、其他 前言 项目中有很多场景需要去记日志,,也…

深入浅出前端本地储存

引言 2021 年,如果你的前端应用,需要在浏览器上保存数据,有三个主流方案: CookieWeb Storage (LocalStorage)IndexedDB 这些方案就是如今应用最广、浏览器兼容性最高的三种前端储存方案 今天这篇文章就聊一聊这三种方案的历史…

Python学习:列表

Python 列表概念 在Python中,列表(List)是一种有序、可变、允许重复元素的数据结构。列表使用方括号 ​[]​来表示,可以包含任意类型的元素,如整数、字符串、列表等。 Python 访问列表中的值 在Python中&#xff0…

BI(商业智能):开启数据驱动的未来

在当今信息时代,企业和组织面临着大量的数据和信息。这些数据包含了各种各样的信息,从市场趋势和消费者行为到销售数据和供应链信息。对于企业而言,利用这些数据来做出明智的决策,提高效率和竞争力变得尤为重要。而商业智能&#…

Learn OpenGL 22 高级光照与Gamma校正

高级光照 Blinn-Phong 冯氏光照不仅对真实光照有很好的近似,而且性能也很高。但是它的镜面反射会在一些情况下出现问题,特别是物体反光度很低时,会导致大片(粗糙的)高光区域。下面这张图展示了当反光度为1.0时地板会…

JS+CSS3点击粒子烟花动画js特效

JSCSS3点击粒子烟花动画js特效 JSCSS3点击粒子烟花动画js特效

docker harbor.v2.9.2搭建镜像无法下载问题解决

在通过部署docker harbor时,采用的是离线包的方式,当解压压缩包后,执行prepare脚本步骤中有一步是要获取prepare:v2.9.2版本镜像 结果执行脚本时报如下错误: Unable to find image goharbor/prepare:v2.9.2 locally 这时候我们就…

若依ruoyi-vue中的文件上传和下载

文章目录 文件上传后端实现前端实现 文件下载后端实现前端实现 在若依(Ruoyi)框架中,结合 Vue 前端框架,文件的上传和下载通常使用以下方法实现: 文件上传 若依现成的功能里面没有文件上传,但是集成了文件…

探索智慧农业项目方案,开启农业智能化新篇章

1. 背景 随着科技的飞速发展和全球人口的不断增长,传统农业模式已难以满足日益增长的粮食和农产品需求。同时,气候变化、资源短缺等环境问题也对农业生产带来了巨大挑战。因此,智慧农业作为一种集成了现代信息技术和农业生产的创新模式&#…

位图与布隆过滤器

目录 一、位图 1、问题用位图来解决: 二、 布隆过滤器 1、将哈希与位图结合,即布隆过滤器 2.布隆过滤器的查找 3.布隆过滤器的删除 4.布隆过滤器优点 5、布隆过滤器缺陷 三、海量数据处理问题: 一、位图 问题1:给40亿个不…

【阅读论文】When Large Language Models Meet Vector Databases: A Survey

摘要 本调查探讨了大型语言模型(LLM)和向量数据库(VecDB)之间的协同潜力,这是一个新兴但迅速发展的研究领域。随着LLM的广泛应用,出现了许多挑战,包括产生虚构内容、知识过时、商业应用成本高昂…

day01_mysql_课后练习 - 参考答案

文章目录 day01_mysql_课后练习第1题第2题第3题第4题第5题 day01_mysql_课后练习 第1题 案例: 1、创建数据库day01_test01_library 2、创建表格books 字段名字段说明数据类型允许为空唯一b_id书编号int(11)否是b_name书名varchar(50)否否…

章节10实验--Ubuntu18.04 Qt MySQL libqsqlmysql.so

前言: 内容参考《操作系统实践-基于Linux应用与内核编程》一书的示例代码和教材内容,所做的读书笔记。本文记录再这里按照书中示例做一遍代码编程实践加深对操作系统的理解。 引用: 《操作系统实践-基于Linux应用与内核编程》 作者:房胜、李旭健、黄…

SAP SD模块影响MRP结果的几个因素

后台最近会收到小伙伴的私信说,我的销售订单已经下达了,但是MRP仍然没有跑出结果,没有跑出需求。遇到这种情况我们就需要一个个地方去进行分析,看哪里的数据存在问题,系统的配置存在问题导致的。接下来文章中将会分析SD销售模块哪些配置点会影响到MRP的运行。 1、首先遇到…

【Web】浅聊Hessian异常toString姿势学习复现

目录 前言 利用关键 调用分析 如何控制第一个字节 EXP 前言 Hessian CVE-2021-43297,本质是字符串和对象拼接导致隐式触发了该对象的 toString 方法,触发toString方法便可生万物,而后打法无穷也! 这个CVE针对的是Hessian2I…

5G智能网关助力工业铸造设备监测升级

随着物联网技术的迅猛发展和工业4.0浪潮的推进,传统工业正面临着严峻的转型升级压力。在这一背景下,铸造行业——这一典型的传统重工业领域,也必须积极探索借助5G、物联网、边缘计算等技术提升生产经营效率的新路径。 本文就基于佰马合作伙伴…