wireshark 分析理解DHCP流程

news2024/12/24 2:07:10

DHCP概念:

动态主机配置协议 DHCP(Dynamic Host Configuration Protocol,动态主机配置协议),是一个应用层协议。该协议允许服务器向客户端动态分配 IP 地址和配置信息。
知识补充:

BOOTP(Bootstrap Protocol,引导程序协议):
是一种引导协议,基于IP/UDP协议,也称自举协议,是DHCP协议的前身。BOOTP用于无盘工作站的局域网中,可以让无盘工作站从一个中心服务器上获得IP地址。通过BOOTP协议可以为局域网中的无盘工作站分配动态IP地址,这样就不需要管理员去为每个用户去设置静态IP地址。BOOTP使用UDP,通常与TFTP协同工作。

BOOTP vs. DHCP

  • DHCP可以说是BOOTP的增强版本,比较起BOOTP,DHCP透过"租约"的概念,有效且动态的分配客户端的IP设定,而且,作为兼容考虑,DHCP也完全照顾了BOOTP Client的需求。
  • 必须至少有一台DHCP工作在网络上面,它会监听网络的DHCP请求。它提供两种IP定位方式:自动分配,一旦DHCP客户端第一次成功的从DHCP服务器租用到IP地址之后,就永远使用这个地址;动态分配,当DHCP第一次从HDCP服务器端租用到IP地址之后,并非永久的使用该地址,只要租约到期,客户端就得释放。
  • DHCP除了可以动态的进行设定IP地址之外,还能够直接将一些IP保留下来给一些特殊用途的机器进行使用。另外一个方面,它能够直接按照硬件地址来固定的分配IP地址。
  • DHCP与BOOTP的不同点在于,BOOTP也可以完成给主机分配IP地址的任务,但它要求主机的硬件地址必须被手工输入到BOOTP表中。可以讲DHCP看成一个动态的BOOTP。但是,BOOTP还可以将用来引导主机的操作系统发送给主机。而DHCP不可以。

DHCP协议支持C/S(客户端/服务器)结构,主要分为两部分:

  1. DHCP客户端:通常为网络中的PC、打印机等终端设备,使用从DHCP服务器分配下来的IP信息,包括IP地址、DNS等。
  2. DHCP服务器:所有的IP网络设定信息都由DHCP服务器集中管理,并处理客户端的DHCP请求。
    DHCP采用UDP作为传输协议,客户端发送消息到DHCP服务器的的67号端口,服务器返回消息给客户端的68号端口。

通常DHCP 服务器至少向客户端提供以下信息:

  • IP 地址
  • 子网掩码
  • 默认网关
    还可以提供其他信息,如域名服务 (DNS) 服务器的地址和 Windows Internet 名称服务 (WINS) 服务器的地址。

DHCP服务器为客户端分配IP地址有三种形式:

  • 管理员将一个IP地址固定分配给一个客户端。
  • 随机地将地址永久性分配给客户端。
  • 随机地将地址分配给客户端使用一段时间。
    第三种是最常见的使用形式。地址的有效使用时间段称为租用期,租用期满之前,客户端必须向服务器请求继续租用。服务器接受请求后才能继续使用,否则无条件放弃。

默认情况下,路由器隔离广播包,不会将收到的广播包从一个子网发送到另一个子网。当DHCP服务器和客户端不在同一个子网时,充当客户端默认网关的路由器将广播包发送到DHCP服务器所在的子网,这一功能就称为DHCP中继(DHCP Relay)。

DHCP在工作过程中涉及到的报文种类及其作用如下:

  1. DHCP DISCOVER:客户端开始DHCP过程的第一个报文,是请求IP地址和其它配置参数的广播报文。
  2. DHCP OFFER:服务器对DHCP DISCOVER报文的响应,是包含有效IP地址及配置的单播(或广播)报文。
  3. DHCP REQUEST:客户端对DHCP OFFER报文的响应,表示接受相关配置。客户端续延IP地址租期时也会发出该报文。
  4. DHCP DECLINE:当客户端发现服务器分配的IP地址无法使用(如IP地址冲突时),将发出此报文,通知服务器禁止使用该IP地址。
  5. DHCP ACK :服务器对客户端的DHCP REQUEST报文的确认响应报文。客户端收到此报文后,才真正获得了IP地址和相关的配置信息。
  6. DHCP NAK:服务器对客户端的DHCP REQUEST报文的拒绝响应报文。客户端收到此报文后,会重新开始新的DHCP过程。
  7. DHCP RELEASE:客户端主动释放服务器分配的IP地址。当服务器收到此报文后,则回收该IP地址,并可以将其分配给其它的客户端。
  8. DHCP INFORM:客户端获得IP地址后,发送此报文请求获取服务器的其它一些网络配置信息,如DNS等。
    DHCP服务器向DHCP客户端出租的IP地址一般都有一个租借期限,期满后DHCP服务器便会收回出租的IP地址。为了能继续使用原先的IP地址,DHCP客户端会向DHCP服务器发送续租的请求。

DHCP续租的工作流程描述如下:

  1. 在使用租期过去50%时刻处, 客户端向服务器发送单播DHCP REQUEST报文续延租期。
  2. 如果收到服务器的DHCP ACK报文,则租期相应向前延长,续租成功。如果没有收到DHCP ACK报文,则客户端继续使用这个IP地址。在使用租期过去87.5%时刻处,向服务器发送广播DHCP REQUEST报文续延租期。
  3. 如果收到服务器的DHCP ACK报文,则租期相应向前延长,续租成功。如果没有收到DHCP ACK报文,则客户端继续使用这个IP地址。在使用租期到期时,客户端自动放弃使用这个IP地址,并开始新的DHCP过程。

抓包分析

如下是我在Tcpdump中抓到的log:
使用bootp或者dhcp筛选包如下:
在这里插入图片描述
截取后,分析一下如下包:在这里插入图片描述

第一个包:如果之后收到的Offer报文中的Transaction ID与PC模拟出的不同,PC会将该Offer报文直接丢弃。
在这里插入图片描述

第二个包
在这里插入图片描述
在这里插入图片描述
第三个包:在这里插入图片描述

在这里插入图片描述
第四个包:
在这里插入图片描述
在这里插入图片描述
第五个包:DHCP Release报文为PC释放IP时发出的报文。
在这里插入图片描述
注意:
DHCP Release的传输ID与上面分配流程不一致。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PVE使用cloud-init快速启动虚拟机

这里写目录标题关于cloud-init云镜像(cloud image)下载创建虚拟机模板,可反复使用DebianUbuntuCentOS使用模板关于cloud-init 传统ISO镜像装机时,需要一步一步规定虚拟机,比如系统盘安装在哪个磁盘里,ip是…

Vue Material - 基于谷歌 Material Design 打造的前端组件库,用 Vue 开发海外应用的绝佳选择

一位朋友问我用 vue 开发 APP 在谷歌商店上架,有什么简单的 UI 组件库,我推荐了这款,同样推荐给各位。 关于 Vue Material Vue Material 是一款简单、轻量级的 Vue 组件,组件的设计完全按照 Google Material Design 规范构建&am…

氟尿嘧啶/琥珀酰化壳聚糖偶联载药体(SUCS-5-FuOH)

氟尿嘧啶/琥珀酰化壳聚糖偶联载药体(SUCS-5-FuOH) 产品描述:以自制的琥珀酰化壳聚糖 (SUCS)和羟甲基-5-氟尿嘧啶(5-FuOH)为原料,制备了壳聚糖偶联载药体(SUCS-5-FuOH).结果表明,SUCS和5-FuOH间通过酯键化学键合,接枝率(载药率)为18.7%,在模拟体液和酶存在条件下均有…

Redis高可用全景一览

前言 前几天我在知乎看到一个问题:如何建立自己的知识体系和观点?[1] 在一篇高赞回答中讲述了建立“外脑”是关键,文章观点认为:大脑是用来思考的,不是用来记忆的。 我很认同这样的看法,我的账号名为“杨同…

电脑怎么滚动截图的方法

电脑截图常见的有矩形截图、任意形状截图、全屏幕截图、窗口截图等等,那你知道怎么在电脑上滚动截图吗?有时候可能会需要用到滚动截长图,但是很多 用户都不清楚怎么操作,下面小编就来教教大家电脑怎么滚动截图的方法(除…

云存储--2

那么,根据我们上一版块的延续,我们来讲讲实际在linux中需要如何进行存储方面的一个操作吧。 那么我使用的是RHEL9.1 红帽作为在linux领域具有绝对的话语权和强大的市场,所以使用该系统还是有点原因哒~ 那么可能会有同学有疑问:欸&…

多目标遗传算法NSGAII求解环境经济调度(Python代码实现)

目录 1 电力系统环境经济调度数学模型 2 算例——IEEE10节点 2.1 数据​ 2.2 Python代码学习 3 一点拓展知识 1 电力系统环境经济调度数学模型 2 算例——IEEE10节点 2.1 数据 我弄成一个表格,方便编程读写: 2.2 Python代码学习 多目标遗传算法N…

【Flutter 组件】002-基础组件:文本与样式

【Flutter 组件】002-基础组件:文本与样式 文章目录【Flutter 组件】002-基础组件:文本与样式一、Text1、概述2、属性列表3、构造方法4、示例代码演示运行结果二、TextStyle1、概述2、属性列表3、构造方法4、示例代码示例运行结果三、TextSpan1、概述2、…

数字图像处理(入门篇)十 边缘检测

目录 一 边缘检测算子 1 Roberts算子 2 Sobel算子 3 Prewitt算子 二 实践 (1)代码 (2)结果图 边缘检测是计算机视觉中的基本问题,边缘检测的难点就在于如何又快又准确地提取图像的边缘信息。 边缘检测的基本方法…

流媒体分析之webrtc之rtcp

TCP作为RTP控制协议,对于弱网下音视频质量和会话控制具有重要的作用。 1. RTCP Header V:RTCP的版本号,一定等于2; P:如果设置,填充位表示数据包包含末尾的附加填充八位字节,不属于控制信息&am…

基于jsp+mysql+ssm影视爱好者论坛交流系统-计算机毕业设计

项目介绍 设计一个电影学习交流社区,使对电影的学生可以方便的进行交流。同时,通过此课题使学生熟悉网站搭建流程和方法。 意义:此课题实现后,可以为喜欢电影的学生提供一个交流学习的平台,提高学生学习兴趣。同时&am…

想提前躺平的程序员,这10个网站收好了!

我们的口号是:搞钱!搞钱!再搞钱!程序员想兼职但是不知道该上哪找? 为大家整理了7个程序员最常用的接私活平台,希望对你有帮助!记得点赞收藏,先码后看!1、程序员客栈 程序…

基于jsp+mysql+ssm游戏爱好者论坛交流设计-计算机毕业设计

项目介绍 本论坛是一个面向爱好游戏的玩家提供一个交流分享游戏攻略、视频、图片以及娱乐互动,让游戏玩家展示自己最真实的心声!论坛提供注册、登陆、发帖、回复、搜索等功能。用户可以利用论坛进行网上约伴、分享装备属性及其获得方法,进行账号交易等,…

5 - 线程池 Java内置的线程池 - 异步计算结果(Future)

前面介绍 ExecutorService 线程池接口的时候,其中,提交任务的方法 submit() 的返回值就是Future接口类型的。 我们刚刚在学习java内置线程池使用时,没有考虑线程计算的结果,但开发中,我们有时需要利用线程进行一些计算…

2022年牙科医疗行业研究报告

第一章 行业概况 1.1 牙科医疗概念及现状 牙科医疗行业是指以牙科医疗消费为基础,集合了牙科医疗服务、职业牙医教育培训、牙科医疗器材研究开发生产、市场策划、宣传、投资、经营、管理等于一体的医疗产业链。由于牙科疾病的特点,牙科医疗产业在具有一…

iOS扫码一图多码原生处理AVCaptureSession

文章目录前言正文1.定位二维码的位置2.扫码、解析总结前言 业务中一直有扫码的需求,这次说需要扫多个码(详细一点是一图多码),有点东西的。 第一点:怎么做:拿到手第一反应是有没有什么库可以直接调用的&am…

VSCode远程连接免密登录

配置了VSCode远程连接服务器,但每次打开project都需要重新输入密码,比较麻烦,所以下面就介绍一下如何免密码登入 在上一篇blog里面配置好VSCode远程连接服务器之后按照如下操作。 步骤如下: 在windows端: 1、winR打…

softmax原理性质解析并python实现

Softmax原理 Softmax函数用于将分类结果归一化,形成一个概率分布。作用类似于二分类中的Sigmoid函数。 对于一个k维向量z,我们想把这个结果转换为一个k个类别的概率分布p(z)。softmax可以用于实现上述结果,具体计算公式为: 对于k…

【数集项目之 MCDF】(一) 控制寄存器 control_register

写在前面 本项目为MCDF数据整形器设计,所有的参考代码见我的github https://github.com/SuperiorLQF/verilog_ALL/tree/master/MCDF 其中设计的参考文档见github文件中的MCDF修订版.docx文件。选择的工具链是Vscode & iverilog & gtkwave,相关工…

前端框架 Nuxt3 Vue3 SSR 总结

目录 一、Nuxt3安装 二、路由 1、普通路由 2、动态路由 3、获取路由参数 4、路由跳转标签 5、路由跳转api 三、静态资源 四、常用标签 1、title标签、useHead的API 五、公共模板布局 1、默认布局 2、自定义公共模板 3、动态自定义布局 六、插件 七、中间件 …