DHCP原理1-单个局域网出现多个DHCP服务器会发生什么

1. 背景

        DHCP全称是Dynamic Host Configuration Protocol。其协议标准是RFC1541(已被RFC2131取代),主要实现服务器向客户端动态分配IP地址(如IP地址、子网掩码、网关、DNS)和配置信息。其系统架构是标准的C/S架构。RFC2131标准是基于Bootstrap 协议 (BOOTP)。

TCP/IP协议4层模型

        DHCP是处于上图中的应用层,传输层使用了UDP,可以通过网络分析工具对此进行分析。客户端通过68端口发出广播请求,服务器通过67端口发送广播回应请求。

2. 消息格式

TCP/IP二进制协议帧结构

3. 通信流程

DHCP通信流程

         如上图所示,DHCP的流程分为4步:DHCPDISCOVER(发现)、DHCPOFFER(提供)、DHCPREQUEST(请求)、DHCPACK(确认)。

3.1. DHCPDISCOVER

        DHCP 客户端向范围内的所有可用 DHCP 服务器发送 DHCP 发现广播请求。客户端发送 DHCPDISCOVER 数据包,其UDP的目标地址为 255.255.255.255,源地址为 0.0.0.0。 DHCP 部分将数据包标识为发现数据包,并使用网卡的物理地址在两个位置标识客户端。

3.2. DHCPOFFER

        从 DHCP 服务器接收 DHCP 提供广播响应,提供可用的 IP 地址租约。收到DHCPDISCOVER阶段发送的数据包后,DHCP 服务器通过发送 DHCPOFFER 数据包进行响应,其源地址为DHCP服务器地址,目标地址为255.255.255.255,DHCP 部分将数据包标识为 Offer。

3.3. DHCPREQUEST

        DHCP 客户端广播请求在结束时要求提供 IP 地址租约和 DHCP 广播确认。客户端通过发送 DHCPREQUEST 来响应 DHCPOFFER。 在以下捕获的 IP 部分中,客户端的源地址仍为 0.0.0.0,数据包的目标地址仍为 255.255.255.255。 客户端保留 0.0.0.0,因为客户端尚未收到来自服务器的验证,可以开始使用提供的地址。 目标仍会广播,因为多个 DHCP 服务器可能已响应,并且可能保留对客户端提供的套餐的预留。 这让其他 DHCP 服务器知道他们可以释放其提供的地址并将其返回到其可用池。

3.4. DHCPACK

        DHCP 服务器使用 DHCPACK 响应 DHCPREQUEST,从而完成初始化周期。 源地址是 DHCP 服务器 IP 地址,目标地址仍为 255.255.255.255。

4. 多DHCP问题

        并不是同一网络出现多个DHCP服务器就一定存在问题,如为了增加网络的稳定性网络中设置了两个DHCP服务器,分别负责两段ip的分配保证分出去的ip不会出现冲突,当一个DHCP服务器出现异常后另外一个也可以正常工作;如为了方便特殊网络设备的管理,在DHCP基础上架设了一个私有的DHCP服务器,仅仅为特殊设备分配IP,并不为普通设备分配IP。当然一般情况下同一网络出现多DHCP会出现网络问题,要么是ip地址分配错误,要么是ip出现冲突。

        在中小型网络中多DHCP服务器冲突是一种常见的网络故障,在该网络情况下可能会出现一些网络设备可能会联网异常,使用wireshak或者tcpdump工具对网络中端口68或67上的UDP进行监听,然后对数据进行分析找到DHCP服务器的MAC地址。

5. 参考协议标准

RFC 编号

标题

说明

链接

RFC 1541

Dynamic Host Configuration Protocol (DHCP)

DHCP 早期版本规范

RFC 1541

RFC 2131

Dynamic Host Configuration Protocol (DHCP)

DHCP 核心规范,替代了 RFC 1541

RFC 2131

RFC 2132

DHCP Options and BOOTP Vendor Extensions

定义了 DHCP 选项和 BOOTP 扩展

RFC 2132

RFC 3315

Dynamic Host Configuration Protocol for IPv6 (DHCPv6)

适用于 IPv6 网络的 DHCP 协议

RFC 3315

RFC 3646

DNS Configuration options for Dynamic Host Configuration Protocol for IPv6 (DHCPv6)

定义了在 IPv6 网络中传递 DNS 配置信息的选项

RFC 3646

RFC 6221

Lightweight DHCPv6 Relay Agent

定义了轻量级的 DHCPv6 中继代理

RFC 6221

       

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

嵌入式学习——数据结构(队列)——day50

1. 查找二叉树、搜索二叉树、平衡二叉树 2. 哈希表——人的身份证——哈希函数 3. 哈希冲突、哈希矛盾 4. 哈希代码 4.1 创建哈希表 4.2 5. 算法设计 5.1 正确性 5.2 可读性(高内聚、低耦合) 5.3 健壮性 5.4 高效率(时间复杂度&am…

长亭谛听教程部署和详细教程

PPT 图片先挂着 挺概念的 谛听的能力 hw的时候可能会问你用过的安全产品能力能加分挺重要 溯源反制 反制很重要感觉很厉害 取证分析 诱捕牵制 其实就是蜜罐 有模板直接爬取某些网页模板进行伪装 部署要求 挺低的 对linux内核版本有要求 需要root 还有系统配置也要修改 …

C#使用轻量级深度学习模型进行车牌颜色识别和车牌号识别

看到这个文章时候请注意这个不涉及到车牌检测,这个仅仅是车牌颜色和车牌号识别,如果想涉及到车牌检测可以参考这个博客:[C#]winform部署yolov7CRNN实现车牌颜色识别车牌号检测识别_c# yolo 车牌识别-CSDN博客 【训练源码】 https://github.…

基于YOLOv5的PCB板缺陷检测系统的设计与实现(PyQT页面+YOLOv5模型+数据集)

简介 随着电子设备的广泛应用,PCB(印刷电路板)作为其核心部件,其质量和可靠性至关重要。然而,PCB生产过程中常常会出现各种缺陷,如鼠咬伤、开路、短路、杂散、伪铜等。这些缺陷可能导致设备故障,甚至引发严重的安全问题。为了提高PCB检测的效率和准确性,我们基于YOLOv…

OpenAPI

大家好我是苏麟 , 今天带来一个前端生成接口的工具 . 官网 : GitHub - ferdikoomen/openapi-typescript-codegen: NodeJS library that generates Typescript or Javascript clients based on the OpenAPI specification 安装命令 npm install openapi-typescript-codegen --sa…

Mathtype7在Word2016中闪退(安装过6)

安装教程:https://blog.csdn.net/Little_pudding10/article/details/135465291 Mathtype7在Word2016中闪退是因为安装过Mathtype6,MathPage.wll和MathType Comm***.dotm),不会随着Mathtype的删除自动删除,而新版的Mathtype中的文件…

Pnpm:包管理的新星,如何颠覆 Npm 和 Yarn

在探索现代 JavaScript 生态系统时,我们常常会遇到新兴技术的快速迭代和改进。其中,包管理工具的发展尤为重要,因为它们直接影响开发效率和项目性能。最近,pnpm 作为一种新的包管理工具引起了广泛关注。它不仅挑战了传统工具如 np…

DS1339C串行实时时钟-国产兼容RS4C1339

RS4C1339串行实时时钟是一种低功耗的时钟/日期设备,具有两个可编程的一天时间报警器和一个可编程方波输出。地址和数据通过2线双向总线串行传输。时钟/日期提供秒、分钟、小时、天、日期、月份和年份信息。对于少于31天的月份,月末的日期会自动调整&…

SpringBootWeb 篇-入门了解 Vue 前端工程的创建与基本使用

🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 基于脚手架创建前端工程 1.1 基于 Vue 开发前端项目的环境要求 1.2 前端工程创建的方式 1.2.1 基于命令的方式来创建前端工程 1.2.2 使用图形化来创建前端工程 1.…

OpenCV机器学习-人脸识别

一 基本概念 1 计算机视觉与机器学习的关系 计算机视觉是机器学习的一种应用,而且是最有价的应用。 2 人脸识别 哈尔(haar)级联方法 Harr是专门为解决人脸识别而推出的; 在深度学习还不流行时,Harr已可以商用; 深度学习方法&am…

Springboot微服务整合缓存的时候报循环依赖的错误 两种解决方案

错误再现 Error starting ApplicationContext. To display the conditions report re-run your application with debug enabled. 2024-06-17 16:52:41.008 ERROR 20544 --- [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPLI…

【chatgpt】train_split_test的random_state

在使用train_test_split函数划分数据集时,random_state参数用于控制随机数生成器的种子,以确保划分结果的可重复性。这样,无论你运行多少次代码,只要使用相同的random_state值,得到的训练集和测试集划分就会是一样的。…

【Git】win本地 git bash:Connect reset by 20.205.243.166 port22报错问题解决

win10 git bash 控制台 reset 22端口拒绝连接问题: Connection reset by 20.205.243.166 port 221、22端口 无法连接 ssh -T gitgithub.com2、尝试用443端口 仍然无法连接 ssh -T -P 443 gitgithub.com3、重写 git clone 地址 url,全局添加 https 前缀…

【jenkins1】gitlab与jenkins集成

文章目录 1.Jenkins-docker配置:运行在8080端口上,机器只要安装docker就能装载image并运行容器2.Jenkins与GitLab配置:docker ps查看正在运行,浏览器访问http://10....:8080/2.1 GitLab与Jenkins的Access Token配置:不…

如何关闭软件开机自启,提升电脑开机速度?

如何关闭软件开机自启,提升电脑开机速度?大家知道,很多软件在安装时默认都会设置为开机自动启动。但是,有很多软件在我们开机之后并不是马上需要用到的,开机启动的软件过多会导致电脑开机变慢。那么,如何关…

Cesium如何高性能的实现上万条道路的流光穿梭效果

大家好,我是日拱一卒的攻城师不浪,专注可视化、数字孪生、前端、nodejs、AI学习、GIS等学习沉淀,这是2024年输出的第20/100篇文章; 前言 在智慧城市的项目中,经常会碰到这样一个需求:领导要求将全市的道路…

SCI一区级 | Matlab实现BO-Transformer-LSTM多变量时间序列预测

SCI一区级 | Matlab实现BO-Transformer-LSTM多变量时间序列预测 目录 SCI一区级 | Matlab实现BO-Transformer-LSTM多变量时间序列预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.【SCI一区级】Matlab实现BO-Transformer-LSTM多变量时间序列预测,贝叶斯…

分布式,容错:10台电脑坏了2台

由10台电脑组成的分布式系统,随机、任意坏了2台,剩下的8台电脑仍然储存着全部信息,可以继续服务。这是怎么做到的? 设N台电脑,坏了H台,要保证上述性质,需要有冗余,总的存储量降低为…

【Flink metric】Flink指标系统的系统性知识:以便我们实现特性化数据的指标监控与分析

文章目录 一. Registering metrics:向flink注册新自己的metrics1. 注册metrics2. Metric types:指标类型2.1. Counter2.2. Gauge2.3. Histogram(ing)4. Meter 二. Scope:指标作用域1. User Scope2. System Scope ing3. User Variables 三. Reporter ing四. System m…

华为数通——单臂路由

单臂路由:指在三层设备路由器的一个接口上通过配置子接口(或“逻辑接口”,并不存在真正物理接口)的方式,实现原来相互隔离的不同VLAN(虚拟局域网)之间的互联互通。但是仅仅允许单播通信。 单臂路…