DHCP原理简析及交互实践
环境:
os:centos7
dnsmasq:version 2.76
一. dhcp工作原理
首先补充几个dhcp相关的基本概念:
1、动态主机配置协议DHCP(Dynamic Host Configuration Protocol)
是一种网络管理协议,用于集中对用户IP地址进行动态管理和配置。
2、DHCP协议采用UDP作为传输协议,DHCP客户端发送请求消息到DHCP服务器的67号端口
,DHCP服务器回应应答消息给DHCP客户端的68号端口
3、在没有部署DHCP中继的场景下,首次接入网络的DHCP客户端与DHCP服务器的报文交互称为DHCP报文四步交互,如下图:
4、当DHCP客户端非首次接入网络时,可以重用曾经使用过的地址。客户端广播发送包含前一次分配的IP地址的DHCP REQUEST报文,报文中的Option50(请求的IP地址选项)字段填入曾经使用过的IP地址。DHCP服务器收到DHCP REQUEST报文后,根据DHCP REQUEST报文中携带的MAC地址来查找有没有相应的租约记录,如果有则返回DHCP ACK报文,通知DHCP客户端可以继续使用这个IP地址。否则,保持沉默,等待客户端重新发送DHCP DISCOVER报文请求新的IP地址
二. 实践
2.1 准备
参考文章《【云计算 | Openstack】KVM虚机通过dhcp自动获取地址》,使用dnsmasq
作为dhcp服务端,使用virsh虚机作为dhcp客户端。
网络架构如下图所示,dnsmasq监听网桥br0的67号端口
2.2 开始dhcp并抓包
当客户端开始dhcp时,对虚机口进行抓包结果如下:
2.3 报文分析
上文提到dhcp的4步交互前提是:dhcp客户端首次接入网络。本次实践dhcp客户端非首次接入,同时修改了dhcp地址池的cidr信息。因此整个dhcp流程大致为:
客户端发送dhcp request——无响应——客户端重新发送dhcp discover——服务端响应dhcp offer——客户端发送dhcp request——服务端响应dhcp ack
1、先看下报文1-2DHCP Request
客户端发送两次dhcp request报文想继续使用之前申请的地址
2、报文3DHCP Discover
,该步是发现阶段
客户端发送的dhcp request收不到响应,因此DHCP客户端以广播方式发送DHCP DISCOVER报文(目的IP地址为255.255.255.255
)给同一网段内的所有设备(包括DHCP服务器或中继)。DHCP DISCOVER报文中携带了客户端的MAC地址
、需要请求的参数列表选项(Option55)、广播标志位(flags字段)等信息。
(Option 55 包含的内容)
3、报文4-7
dhcp服务端收到了discover报文后,连续发送3个arp和一个icmp报文,用来判断地址11.11.1.70是否被其他客户端占用
4、报文8DHCP Offer
,该步是提供阶段
服务端选择一个可用的IP地址,然后通过DHCP OFFER报文发送给DHCP客户端,Option 1包含了该ip地址的掩码位
5、报文9DHCP Request
,该步是选择阶段
如果有多个DHCP服务器向DHCP客户端回应DHCP OFFER报文,则DHCP客户端一般只接收第一个收到的DHCP OFFER报文,然后以广播方式发送DHCP REQUEST报文
,该报文中包含客户端想选择的DHCP服务器标识符(即Option54)和客户端IP地址(即Option50)。
DHCP客户端广播发送DHCP REQUEST报文通知所有的DHCP服务器,它将选择某个DHCP服务器提供的IP地址,其他DHCP服务器可以重新将曾经分配给客户端的IP地址分配给其他客户端。
6、报文10DHCP ACK
,该步是确认阶段
当DHCP服务器收到DHCP客户端发送的DHCP REQUEST报文后,DHCP服务器回应DHCP ACK报文,表示DHCP REQUEST报文中请求的IP地址(Option50填充的)分配给客户端使用。
7、报文11-12
DHCP客户端收到DHCP ACK报文,会广播发送免费ARP报文,探测本网段是否有其他终端使用服务器分配的IP地址,如果在指定时间内没有收到回应,表示客户端可以使用此地址
8、报文13-14
DHCP客户端收到DHCP ACK报文,会广播发送ARP报文,获取网关的MAC信息(网关的ip地址在dhcp offer 和dhcp ack报文的Option 3 中均有体现)
相关文章:
DHCP原理简析及交互实践
环境: os:centos7 dnsmasq:version 2.76 一. dhcp工作原理 首先补充几个dhcp相关的基本概念: 1、动态主机配置协议DHCP(Dynamic Host Configuration Protocol)是一种网络管理协议,用于集中对用…...
用二极管、三极管和MOS管搭建逻辑门电路
文章目录1. 二极管(1)二极管与门(2)二极管或门2. 三极管(1)三极管非门(2)三极管与门(3)三极管或门(4)三极管与非门(5&…...
SpringBoot:手写一个 SpringBoot Starter
声明:原文作者:yuan_404 文章目录1. 说明2 . 编写启动器3 . 新建项目测试自己写的启动器1. 说明 启动器模块是一个 空 jar 文件,仅提供辅助性依赖管理,这些依赖可能用于自动装配或者其他类库 命名归约: 官方命名&…...
【23】Verilog进阶 - 数位转换【实时处理 + 标志信号】
【初次尝试】VL32 非整数倍数据位宽转换24to128 1 理解题目含义 根据【模块端口】和【题目描述】本题的真实意思是比较清楚啦。但不可大意轻敌! (1)问题1:输出一直为0 猛然间发现计数值也为0,没有增加 去排查cnt的代码,很容易找到到问题,是cnt上电复位的逻辑写错了 …...
常见的HTTP状态码
一.2开头 200:响应成功; 204:响应成功,但是响应头没有数据; 206:部分响应成功,比如分片上传,断点续传; 二.3开头 301:永久重定向; 302&…...
D. Peculiar Movie Preferences(思维 + 一个坑)
Problem - D - Codeforces 米海打算去看电影。他只喜欢回文电影,所以他想跳过一些(可能是零)场景,让电影的其余部分变成回文。给你一个包含n个长度不超过3的非空字符串的列表,代表Mihai的电影场景。如果s的子序列非空,并且子序列中…...
真1分钟搞懂缓存穿透、缓存击穿、缓存雪崩
💗推荐阅读文章💗 🌸JavaSE系列🌸👉1️⃣《JavaSE系列教程》🌺MySQL系列🌺👉2️⃣《MySQL系列教程》🍀JavaWeb系列🍀👉3️⃣《JavaWeb系列教程》…...
蓝桥刷题总结1
数组三角形 题目描述 上图给出了一个数字三角形。从三角形的顶部到底部有很多条不同的路径。对于每条路径,把路径上面的数加起来可以得到一个和,你的任务就是找到最大的和。 路径上的每一步只能从一个数走到下一层和它最近的左边的那个数或者右 边的那个…...
淘宝商品详情数据接口 关键字搜索接口 请求代码分享
item_get-获得淘宝商品详情item_get_app-获得淘宝app商品详情原数据item_search-按关键字搜索淘宝商品参数说明通用参数说明参数不要乱传,否则不管成功失败都会扣费url说明 https://api-gw.onebound.cn/平台/API类型/ 平台:淘宝,京东等&#…...
【数据结构】链表OJ(二)
Yan-英杰的博客 悟已往之不谏 知来者之可追 目录 一、反转链表 二、合并两个有序链表 三、链表分割 四、链表的回文结构 一、反转链表 输入:head [1,2,3,4,5] 输出:[5,4,3,2,1] 输入:head [1,2] 输出:[2,1] 示例 3…...
Linux系统搭建FTP服务器
安装vsftpdyum -y install vsftpd添加FTP用户方式1、添加只允许通过ftp访问的用户useradd -d /home/ftp ftp_user #-d指定用户登录时的启始目录方式2、允许用户登录操作系统usermod -d /home/ftp -s /bin/bash ftp_user #-s指定用户登入后所使用的shell设置用户登录密码passwd …...
MySQL数据同步到 Redis 缓存的几种方法
1 Mysql查完数据,再同步写入到Redis中缺点1:会对接口造成延迟,因为同步写入redis本身就有延迟,并且还要做重试,如果redis写入失败,还需要重试,那就更费时间了。缺点2:不解耦…...
2023年网络安全比赛--CMS网站渗透中职组(超详细)
一、竞赛时间 180分钟 共计3小时 二、竞赛阶段 1.使用渗透机对服务器信息收集,并将服务器中网站服务端口号作为flag提交; 2.使用渗透机对服务器信息收集,将网站的名称作为flag提交; 3.使用渗透机对服务器渗透,将可渗透页面的名称作为flag提交; 4.使用渗透机对服务器渗透,…...
【蓝桥杯集训·每日一题】AcWing 4309. 消灭老鼠
文章目录一、题目1、原题链接2、题目描述二、解题报告1、思路分析2、时间复杂度3、代码详解三、知识风暴最大公约数一、题目 1、原题链接 4309. 消灭老鼠 2、题目描述 约翰的农场可以看作一个二维平面。 农场中有 n 个老鼠,在毁坏着农田。 第 i 个老鼠的位置坐标为…...
FPGA实现CSI-2 解码MIPI视频 2line 720P分辨率 OV5647采集 提供工程源码和技术支持
目录1、前言2、Xilinx官方主推的MIPI解码方案3、纯Vhdl方案解码MIPI4、vivado工程介绍5、上板调试验证6、福利:工程代码的获取1、前言 FPGA图像采集领域目前协议最复杂、技术难度最高的应该就是MIPI协议了,MIPI解码难度之高,令无数英雄竞折腰…...
JS面试题收集(持续更新好中...)
1.JavaScript 中的垃圾回收机制 定义:指一块被分配的内存既不能使用,又不能回收,直到浏览器进程结束。 JavaScript在创建对象时会为它们分配内存,不再使用时会自动释放内存,这个过程称为垃圾收集。 四种常见的内存泄…...
2023携程面试题
Java I/O 面试前需要准备: 1. Java 八股文:了解常考的题型和回答思路; 2. 算法:刷 100-200 道题,记住刷题最重要的是要理解其思想,不要死记硬背,碰上原题很难,但 大多数的解题思…...
CANoe中使用CAPL函数接口调用Vflash文件
🍅 我是蚂蚁小兵,专注于车载诊断领域,尤其擅长于对CANoe工具的使用🍅 寻找组织 ,答疑解惑,摸鱼聊天,博客源码,点击加入👉【相亲相爱一家人】🍅 玩转CANoe&…...
三天吃透计算机网络面试八股文
本文已经收录到Github仓库,该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校招社招分享等核心知识点,欢迎star~ Github地址:https://github.com/…...
shp数据添加wkt字段并导出成csv,leaflet绘制使用
准备的东西:软件2跟软件3具体怎么有这些软件需要自行百度postgresql postgis相关 1.shp数据 2.软件2 3.软件3 1.数据导入 首先你得有软件2的数据库,即postgresql数据库,然后通过postgis的插件进行连接并导入数据, 导入数据…...
Java——二叉树的最近公共祖先及二叉搜索树介绍
目录 二叉树的最近公共祖先 题目 思路一:如果给定的是一颗二叉搜索树, 思路二:假设是孩子双亲表示法 二叉搜索树 定义Node类 查找 删除 插入 二叉树的最近公共祖先 题目 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百…...
Stable Diffusion加chilloutmixni真人图片生成模型,AI绘图杀疯了
上期图文教程,我们分享过AI绘图大模型Stable Diffusion以及中文版本文心AI绘画大模型的基础知识以及代码实现,截至到目前为止。Stable Diffusion模型已经更新到了V2.1版本,其文生图大模型也越来越火,其在2022年底,由AI绘制的图片被荣为国际大奖,让大家对AI绘画大模型也越…...
Matplotlib 绘图实用大全
本文只介绍最简单基本的画图方法 预设 要想画出来的图有些逼格,首先应该进行如下设置 plt.rcParams[font.sans-serif][SimHei] #画图时显示中文字体 plt.rcParams[axes.unicode_minus] False #防止因修改成中文字符,导致某些 unicode 字符不能…...
MyBatis源码用了哪些设计模式?
MyBatis源码用了哪些设计模式?前言一、创建型模式工厂模式单例模式建造者模式二、结构型模式适配器模式代理模式组合模式装饰器模式三、行为型模式模板模式策略模式迭代器模式总结前言 在 MyBatis 的两万多行的框架源码中,使用了大量的设计模式对工程架…...
【16.整数转罗马数字】
罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例…...
前端小技巧
1.html 1.1 网站自动刷新 应用场景: 网页定期自动刷新(现在基本淘汰了,采用ajax);自动跳转到指定页面,这个自动跳转的好处就是不需要JS调用,属于纯html网页自动跳转 v7-网站自动刷新 你可以…...
Servlet2.0
文章目录更方便的部署方式安装插件使用插件验证程序常见访问出错的解决方案404错误405错误500错误空白页面无法访问此网站在文章 TomcatServlet初识中,我们通过七个大的步骤才可以完成一个简单的Servlet程序,这个过程无疑是非常繁琐的,那么我…...
【c++】继承
目录 一、继承的表现 子类对父类成员的访问权限 二、父类与子类之间的相互赋值 三、继承的作用域 如果是父类和子类构成隐藏呢? 四、子类的成员函数怎么写 1.default构造函数 2.析构函数 所以析构函数不需要我们显式调用。 五、继承与友元函数 六、继承与静…...
minio安装配置和使用(二)客户端安装
安装minio客户端mcli 命令如下: dnf install https://dl.minio.org.cn/client/mc/release/linux-amd64/mcli-20230128202938.0.0.x86_64.rpm 安装完成,在/usr/local/bin/下新增了mcli命令 mcli是对minio进行管理的命令。功能丰富, 基本格式…...
【如何使用Arduino设置GRBL和控制CNC机床】
【如何使用Arduino设置GRBL和控制CNC机床】 前言1. 什么是GRBL?2. 所需硬件3. 如何安装GRBL4. GRBL 配置5. GRBL 控制器5.1 如何使用通用 G 代码发送器5.2 波特率5.3 电机方向5.4 步进比例系数5.5 限位开关5.6 数控机床的归位设置6. 结论前言 如果您正在考虑或正在制造自己的…...
外贸企业的网站建设/推广优化网站排名教程
1.学习一个新的用户界面 不是通过读说明书、上课、读帮助手册,而是通过不断尝试来学习,用户对如何实现自己的目标更感兴趣 2.寻求帮助 当用户遇到问题时用户会寻求具体的解决方案,帮助系统应该简洁,针对用户询问的问题ÿ…...
自助建站系统官网/2023b站免费推广入口游戏
冲刺了一段时间发现能力不足而力不从心,或许当初开发Android会更好? 第九周所花时间约20个小时代码量1200多行博客量10篇(冲刺)了解到的知识点 1.yii2的views 2.yii2的controller 3.yii2的models 转载于:https://www.cnblogs.com/…...
安阳网站优化/谷歌优化培训
开始试读:https://yqfile.alicdn.com/714f8d4ad302530f78780d39e8b61e41.pdf 天猫购买链接:高性能Docker DockOne社区倾情翻译,阅读本书将掌握Docker性能优化实践,更快、更高效地部署容器,改善开发工作流《高性能Docke…...
wordpress自带主题优化/58百度搜索引擎
文章目录前言一、有限元模型二、C程序实现前言 只是为方便学习,不做其他用途,matlab程序参考平面三角形单元有限元实现——有限元实践笔记(5) 一、有限元模型 相应的理论分析可参考平面三角形单元有限元实现——有限元实践笔记&am…...
在vs2010里怎么做网站/服务之家网站推广
1. 首先安装docker 安装方法可参考官网: https://docs.docker.com/engine/install/centos/ docker version查看docker是否安装成功 2. 如果是远程服务的Docker需要对外暴漏TCP端口(Docker 1.13.1版本) vim /usr/lib/systemd/system/docker…...
广汉做网站/北京seo关键词排名
最近,谷歌爸爸又收购了一家公司。长期以来,谷歌致力于推动围绕GoogleCloud的企业业务,但在这方面的表面一直被亚马逊和微软吊打,这次的收购正是为了弥补自身的短板。被收购的CaskData是一家专门提供基于Hadoop的大型数据分析服务解…...