抓包分析DHCP的工作过程

一、DHCP简介

  DHCP(Dynamic Host Configuration Protocol)动态主机配置协议,前身是BOOTP协议。在大型局域网中,需要给很多主机配置地址信息,如果采用传统手工配置(累死),效率太低,因此采用此协议可以很方便的给主机配置各种地址信息,例如IP地址,SubMask、网关地址、DNS等等。

DHCP协议理解

  • 定义:DHCP:Dynamic Host Configuration Protocol,动态主机配置协议,是一个应用在局域网中的网络协议,它使用UDP协议工作。
  • 理解:DHCP协议就是一个基于UDP协议工作在局域网内的网络协议,其最终的目的就是获取响应的IP地址,其中这过程中有多种分配方式,以及发送报文的格式要求等。
  • 作用:动态分配IP地址,过程自动化,终端无需一一手工配置,配置信息统一管理(DNS,网关),IP地址有限、需要大量配置IP地址、经常移动终端。
  • 好处:提高配置IP地址效率,减少配置工作量,减少IP地址冲突。
  • 分配IP地址方式:
    • (1)手工配置方式:通过网络管理员手工配置某台客户端特定的IP地址,当客户端请求分配时,DHCP服务器就将手动配置的IP地址分配给客户端。。
    • (2)自动配置方式:当DHCP客户端第一次想服务端租用到第一个IP地址后,就将这个IP地址永久分配给客户端使用。
    • (3)动态配置方式:服务器暂时分配一个IP地址给客户端,根据租约到期或者续约租期的方式来管理分配的IP地址。

二、DHCP工作原理知识

2.1 DHCP 工作过程

(1)客户端通过广播发送 DHCP Discover 报文寻找DHCP 服务端

(2)服务端通过单播发送 DHCP Offer 报文向客户端提供从地址池中挑选的可用 IP 等网络信息

(3)客户端只接收第一个收到的 DHCP Offer 报文并提取 IP 地址,然后向通过广播发送 DHCP Request 报文    告知服务端要使用该 IP 地址

(4)服务端通过单播发送 DHCP ACK 报文告知客户端该 IP 地址是合法可用的,并提供租约信息

2.2 DHCP Relay 工作原理

         DHCP Relay 即DHCP 中继,它实现了不同网段间DHCP服务器客户端之间的报文交互。DHCP 中继承担处于不同网段间的DHCP 客户端和服务器之间中继服务,将DHCP 协议报文跨网段透传到目的DHCP 服务器,最终使网络上的DHCP 客户端可以共同使用一个DHCP 服务器。

工作过程:

三、DHCP 报文

3.1 DHCP报文封装格式

3.2 DHCP报文格式

  • op:1byte,是报文的操作类型,分为请求报文和响应报文,1为请求报文;2为响应报文。具体的报文类型在option字段中标识。
  • htype:1byte,表示client硬件地址的类型,1表示以太网类型。
  • hlen:1byte,硬件地址的长度,以太网的硬件地址长度为6bytes。
  • hops:1byte,表示当前dhcp报文经过的DHCP中继的数目,每经过一个DHCP中继这个字段就加1.
  • xid:4bytes,由client端产生的随机数,用于匹配请求和应答报文,就是匹配应答报文是对哪个请求报文做出应答。
  • secs:2bytes,客户端进入IP地址申请进程的时间或者更新IP地址进程的时间;由客户端软件根据情况设定。目前没有使用,固定为0。
  • flags:2bytes,是标志字段,16比特中只使用了最高位比特(即最左边的比特),这个个比特是广播响应标识位,用来标识DHCP服务器发出的响应报文是广播还是单播,0是单播,1是广播。其余的比特位保留不用,都为0。
  • ciaddr:4bytes,是客户端的IP地址,可以是client自己的IP地址,也可以是server分配给client的IP地址。
  • yiaddr(Your IP Address):4bytes,是server分配给client的IP地址
  • siaddr:4bytes,是client端获取IP地址等信息的server端的地址
  • giaddr:4bytes,是client发出请求报文后经过的第一个中继的IP地址。
  • chaddr:16bytes,是client端的硬件地址,在client发出报文时会把自己网卡的硬件地址写进这个字段。
  • sname:64bytes,服务器主机名,是client端获取IP地址等信息的服务器名称。
  • file:128bytes,是client的启动配置文件名,是服务器为client指定的启动配置文件名及路径信息,由服务器填写。
  • options:是可选变长的选项字段,这个字段包含了终端的初始配置信息和网络配置信息,包括报文类型,有效租期,DNS服务器的IP地址等配置信息

3.3 DHCP报文的种类

Dhcp协议一共有8种报文,包括:DHCP DsicoverDHCP OfferDHCP RequestDHCP ACKDHCP NAKDHCP ReleaseDHCP DeclineDHCP Inform

这里只介绍前四个:DHCP DsicoverDHCP OfferDHCP RequestDHCP ACK

(1)DHCP Dsicover报文

这个报文是client端开始dhcp过程的第一个请求报文,client在请求地址时,并不知道server端的位置,所以client会以广播的方式发送请求报文,它的目的是发现网络中的服务器。

(2)DHCP Offer报文

  这个报文server端对DISCOVERY报文的响应报文。会在所配置的地址池中查找一个合适的IP地址,加上相应的租约期限和其他配置信息(如GATEWAY,DNS SERVER等),构造一个OFFER报文,发送给用户,告知用户本SERVER可以为其提供IP地址的分配,并且。发OFFER报文一般是单播的方式发送。

(3)DHCP Request报文

  在一个子网中可能有多台服务器,所有收到DISCOVER报文的服务器都会回应OFFER报文,所以client端可能收到多个OFFER报文,通常会选择第一个OFFER报文的服务器作为自己的目标服务器,并回应一个REQUEST请求报文。在续租约的时候client端也会发送REQUEST报文  请求续租期。

(4)DHCP ACK报文

  是server对client端的REQUEST报文的确认响应报文,server在收到REQUEST报文后,根据REQUEST报文中携带的client MAC来查找有没有相应的租约记录,如果有则发送ACK报文作为回应,通知client可以使用分配的IP地址。

(5)DHCP Release报文

   DHCP Client在成功获取IP地址后,随时可以通过发送DHCP Release报文释放自己的IP地址,DHCP Server收到DHCP Release报文后,会回收相应的IP地址并重新分配

3.4 实验拓扑图及抓包位置展示

四、主机——DHCP 中继 报文分析

目的:确认客户端是否正确发送Discover 包,是否能够接收到中继设备转发回来的Offer 和ACK 包。

主机与DHCP 中继之间交互用的是广播形式

发现Discover 阶段:

客户端在局域网内以广播的方式发起一个DHCP Discover广播报文,目的是在子网络中发现能够给client端提供IP地址的server端。

  特别要注意:PC会随机出一个Transaction ID,如果之后收到的Offer报文中的Transaction ID与PC模拟出的不同,PC会将该Offer报文直接丢弃。

  UDP 目标端口号为67    源IP地址:0.0.0.0    目的IP地址:255.255.255.255

提供Offer 阶段:

局域网中DHCP server接受到Discover包之后,通过发送DHCP offer包给客户端应答,主要是告知client(客户)端可以提供IP地址,以及相应的IP地址租约信息和其他配置信息也会在其中。

  UDP 目标端口号为68    源IP地址:192.71.100.200    目的IP地址:192.71.64.10

       DHCP Offer报文中“Your(Client) IP Address”字段就是DHCP Server能够提供给DHCP Client使用的IP地址,且DHCP Server会将自己的IP地址放在“option”字段中以便DHCP Client区分不同的DHCP Server

选择Request 阶段:

在client端可能会接受到多个offer包,通常client端只会接受收到的第一个DHCP offer报文,然后client端就会以广播的方式发送一个DHCP request报文请求分配IP地址

  UDP 目标67    源IP为0.0.0.0   目的IP:255.255.255.255

        DHCP Client只能处理其中的一个DHCP Offer报文,一般的原则是DHCP Client处理最先收到的DHCP Offer报文。DHCP Client会发出一个广播的DHCP Request报文,在选项字段中会加入选中的DHCP ServerIP地址和需要的IP地址

确认ACK 阶段:

server端在收到DHCP request报文之后,会判断”option”字段的serverIP地址是否是自己的IP地址,如果符合分配IP地址的条件,就会给client发送一个DHCP ACK包,如果不满足就发挥发送一个DHCP NAK 包

  DHCP Server收到DHCP Request报文后,判断选项字段中的IP地址是否与自己的地址相同如果不相同,DHCP Server不做任何处理只清除相应IP地址分配记录;如果相同,DHCP Server就会向DHCP Client响应一个DHCP ACK报文,并在选项字段中增加IP地址的使用租期信息。

【地址租期】
       DHCP服务器提供的每个IP地址都有相应的租用期,在Offer报文中的IP Address Lease Time中可以看到。地址租期时间过长会导致地址资源长期被占用,租期过短会导致DHCP请求包过多,增加网络负担。还要结合当前使用场景来设置。一般来说,对DHCP客户端数量较大,且断开网络比较频繁的场所,如机场、商铺等,一般把DHCP租期配置较短,这样IP地址能很快被回收。

【IP续租过程】
客户端会在地址租期还有1/2的时候,向DHCP服务器发送DHCP Request报文;

如果收到服务器的DHCP Ack后,客户端的IP地址租期重新回满。
如果未收到Ack,可继续使用该IP,在租期还有1/4时发出第二次Request报文;如果收到Ack,租期回满;
如果未收到Ack,在租期还有1/8时发出第三次Request报文,如果收到Ack,租期回满
如果未收到Ack,租期结束后IP被回收。

五、DHCP 中继——DHCP 服务器报文分析

目的:确认客户端是否正确发送Discover 包,是否能够接收到中继设备转发回来的Offer 和ACK 包。

主机与DHCP 中继之间交互用的是广播形式

发现Discover 阶段:

提供Offer 阶段:

选择Request 阶段:

确认ACK 阶段:

六、DHCP 中继——DHCP 服务器报文分析

目的:确认中继设备是否正确转发Discover 包,并正确填充giaddr 字段。

DHCP 中继以单播的形式与DHCP 服务器交互

发现Discover 阶段:

提供Offer 阶段:

选择Request 阶段:

确认ACK 阶段:

七、DHCP 服务器的响应 报文分析

目的:确认DHCP 服务器是否收到请求,并根据giaddr 字段分配了正确的IP 地址。

八、应用

8.1 DHCP Server 的典型组网应用

以下场合通常利用DHCP 服务器完成IP 地址分配:

 网络规模较大,手工配置需要很大的工作量,且难以对整个网络进行集中管理。

 网络中主机数目大于该网络支持的IP 地址数量,无法给每个主机分配一个固定的IP 地址。用户需要通过DHCP 服务动态获得自己的IP 地址,而且,网络管理员希望对同时上线的用户数量也有限制。

 网络中需要固定IP 地址的主机比较少,大部分主机可以不使用固定的IP 地址。

8.2 DHCP Relay 的典型组网应用

DHCP 中继的应用环境:早期的DHCP 协议只适用于DHCP 客户端和服务器处于同一个网段内的情况,不能跨网段工作。跨网段的主机动态分配IP 地址,需网络管理者在每个网段各配置一个DHCP服务器,不够经济。

DHCP 中继(DHCP Relay)的引入解决了这一难题:

       客户端可以通过DHCP 中继与其他网段的DHCP 服务器通信,取得合法的IP 地址。这样,多个网段的DHCP 客户端可以使用同一个DHCP 服务器,既节省了成本,又便于进行集中管理。

记得点赞收藏哦~

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

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

相关文章

MUR3060PTR-ASEMI快恢复二极管对管MUR3060PTR

编辑:ll MUR3060PTR-ASEMI快恢复二极管对管MUR3060PTR 型号:MUR3060PTR 品牌:ASEMI 封装:TO-247 正向电流:30A 反向电压:600V 正向压降:0.98V~1.90V 引线数量:3 芯片个数&a…

CSS学习记录13

CSS组合器 组合器是解释选择器之间关系的某种机制。CSS选择器可以包含多个简单选择器。在简单选择器之间,我们可以包含一个组合器。 CSS中有四种不同的组合器: 后代组合器(空格)子选择器(>)相邻兄弟选择器&#…

城市大脑新型智慧城市数据中台建设方案

建设背景与现状 随着城市化进程的加速,城市数据呈现出爆炸式增长,但数据的整合、共享和利用却面临诸多挑战。信息孤岛、数据冗余、管理分散等问题日益突出,制约了智慧城市的发展。为了解决这些问题,构建城市大脑新型智慧城市数据…

LeetCode 热题 100-两数之和(简单)

1. 两数之和 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出和为目标值 target 的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。 你可以按任意顺序返回答案。…

【echarts】数据过多时可以左右滑动查看(可鼠标可滚动条)

1. 鼠标左右拖动 在和 series 同级的地方配置 dataZoom: dataZoom: [{type: inside, // inside 鼠标左右拖图表,滚轮缩放; slider 使用滑动条start: 0, // 左边的滑块位置,表示从 0 开始显示end: 60, // 右边的滑块位置&#xf…

将VSCode添加至右键的菜单栏

文章目录 打开注册表编辑器共需要在3处添加:第一处:第二处:第三处:最终效果: 原文链接: https://www.cnblogs.com/alannxu/p/18234323 打开注册表编辑器 1、打开运行界面:WinR 2、在弹出的运行…

【ArcGIS】基于R语言、MaxEnt模型融合技术的物种分布模拟、参数优化方法、结果分析制图与论文写作

第一章、以问题导入的方式,深入掌握原理基础【理论篇】 1、R语言入门: (1)安装R及集成开发环境(IDE);(2)R语言基础语法与数据结构,包括:程序包安…

下载与使用PCL启动器(2.8.12正式版)

一.下载PCL启动器 PCL启动器下载官网:爱发电 连接创作者与粉丝的会员制平台将创作的自由还给创作者!爱发电是让创作者简单地获得稳定收入的粉丝赞助平台。无论你在创作什么,都能在这里获得持续的资金支持,让创作从此更自由。htt…

JVM 栈帧结构详解

在 Java 虚拟机(JVM)中,栈帧(Stack Frame)是用于支持方法调用和方法执行的关键数据结构。每个方法从调用开始到执行完成,都对应着一个栈帧在虚拟机栈中从入栈到出栈的过程。本文将详细介绍 JVM 栈帧的结构及…

python学opencv|读取图像(七)抓取像素数据顺利修改图像大小

【1】引言 前序我们已经学习图像的基本读取操作,文章链接为: python学opencv|读取图像-CSDN博客 也掌握了彩色图像的保存: python学opencv|读取图像(二)保存彩色图像_python opencv 读取图像转为彩色-CSDN博客 以…

CSS|07 标准文档流

标准文档流 一、什么是标准文档流 在制作的 HTML 网页和 PS 画图软件画图时有本质上面的区别: HTML 网页在制作的时候都得遵循一个“流的规则:从左至右、从上至下。 使用 Ps 软件画图时可以在任意地方画图。 <!DOCTYPE html> <html lang"en"> <hea…

git的卸载与安装

目录 一、Git的卸载 二、Git的安装 2.1.1 官网下载 2.1.2 镜像下载 ​编辑 2.2 安装 2.3 检验否安装成功 三、Git使用配置 一、Git的卸载 1.找到程序&#xff0c;卸载程序 2.找到Git&#xff0c;右键卸载 卸载完成&#xff01; 二、Git的安装 2.1.1 官网下载 网址&…

探索 Echarts 绘图:数据可视化的奇妙之旅

目录 一、Echarts 初印象 二、搭建 Echarts 绘图环境 三、绘制第一个图表&#xff1a;柱状图的诞生 四、图表的美化与定制&#xff1a;让数据更具吸引力 1. 主题切换&#xff1a;一键变换风格 2. 颜色调整&#xff1a;色彩搭配的艺术 3. 标签与提示框&#xff1a;丰富信…

location重定向和nginx代理

文章目录 1 location重定向1.1 概述1.2 rewrite跳转1.3 用例1.4 实验1.4.1 基于域名的跳转1.4.2 基于ip的跳转1.4.3 基于后缀名的跳转 2 nginx的代理2.1 nginx内置变量2.2 正向代理2.2.1 固定正向代理2.2.2 自动代理 2.3 反向代理2.3.1 负载均衡的算法2.3.2 负载均衡的特点2.3.…

前端-自定义Ant Design 表格(可编辑表格)

选取的的是&#xff1a;表格 Table - Ant Design 其实ant design本身就有增加和删除单列数据的封装好的表格&#xff0c;但是个人觉得那个功能繁多&#xff0c;自己实现封装也便于之后理解和二次使用。 初步效果&#xff08;舍去切换样式的功能&#xff09;&#xff1a; 突破的…

通过ajax的jsonp方式实现跨域访问,并处理响应

一、场景描述 现有一个项目A&#xff0c;需要请求项目B的某个接口&#xff0c;并根据B接口响应结果A处理后续逻辑。 二、具体实现 1、前端 前端项目A发送请求&#xff0c;这里通过jsonp的方式实现跨域访问。 $.ajax({ url:http://10.10.2.256:8280/ssoCheck, //请求的u…

AI监控赋能健身馆与游泳馆全方位守护,提升安全效率

一、AI视频监控技术的崛起 随着人工智能技术的不断发展&#xff0c;AI视频监控正成为各行业保障安全、提升效率的关键工具。相比传统监控系统&#xff0c;AI技术赋予监控系统实时分析、智能识别和精准预警的能力&#xff0c;让“被动监视”转变为“主动防控”。 二、AI监控应用…

Maven完整技术汇总

额外知识点 IDE IDE是集成开发环境的缩写&#xff0c;它是一种软件应用程序&#xff0c;提供了编码、调试和部署软件的一站式解决方案。这些功能集成在一起&#xff0c;使开发人员能够在一个环境中完成整个软件开发过程&#xff0c;从编写代码到调试和测试&#xff0c;直到最终…

细说STM32F407单片机SPI基础知识

目录 一、 SPI接口和通信协议 1、 SPI硬件接口 &#xff08;1&#xff09;MOSI(Master Output Slave Input) &#xff08;2&#xff09;MISO(Master Input Slave Output) &#xff08;3&#xff09;SCK 2、SPI传输协议 &#xff08;1&#xff09;CPHA0时的数据传输时序 …

华为自反ACL实验

一、实验背景 做这个实验的原因是最近公司里上了三台小程序服务器&#xff0c;由于三台服务器的端口都映射出去了&#xff0c;领导要求A网段的三台服务器不能访问内网B&#xff0c;C网段&#xff0c;同时B、C网段内网用户可以访问A段的94、95、96服务器&#xff1b; 也就是PC4\…