原文链接:https://blog.csdn.net/Andy_93/article/details/78238931

DHCP的作用:

DHCP 全称Dynamic Host configuration protocol, 动态主机配置协议。 它可以为客户机自动分配IP地址、子网掩码以及缺省网关、DNS服务器的IP地址等TCP/IP参数, 简单来说, 就是在DHCP服务器上有一个数据库, 存放着IP地址、网关、DNS等参数。 当客户端请求使用时, 服务器则负责将相应的参数分配个客户端,避免客户端手动指定IP地址等。特别是在一些大规模的网络中。客户端数目较多,使用DHCP可以方便对这些机器进行管理,为客户机提供TCP/IP参数配置,如IP地址、网关地址和DNS服务器等,不仅效率高,而且不存在IP地址冲突的情况现在的无线路由器默认都带有DHCP功能,也就是说一个无线路由器同时也是一个DHCP服务器。

DHCP的工作过程

DHCP的大致流程为下图所示

DHCP DISCOVER: 寻找服务器

当DHCP客户端第一次登录网络的时候或者是开机的时候, 此设备发现本机上没有任何IP设定,就会网络广播去寻找DHCP服务器。 由于客户端此时还不知道自己属于哪一个网路﹐所以封包的来源地址会为0.0.0.0, 目的地址则为255.255.255.255,然后再附上DHCP discover的信息﹐向网路进行广播。 网络上每一台安装了TCP/IP协议的主机都会接收到这种广播信息,但只有DHCP服务器才会做出响应。

DHCP OFFER分配IP地址

当DHCP服务器监听到客户端发出的DHCP Discover广播后, 会针对这个客户端的硬件地址 (MAC)与本身的设定数据来进行下列工作:

  1. 到服务器的登录文件中寻找该用户之前是否曾经用过某个 IP ,若有且该 IP 目前无人使用,则提供此 IP 给客户机;
  2. 若配置文件针对该 MAC 提供额外的固定 IP (static IP) 时,则提供该固定 IP 给客户机;
  3. 若不符合上述两个条件, 则随机取用目前没有被使用的 IP 参数给客户端,并记录下来。回应给客户端一个DHCP OFFER封包,由于客户端在开始的时候还没有IP地址﹐所以在其DHCP Discover封包内会带有其MAC地址信息﹐并且有一个XID编号来辨别该封包﹐DHCP服务器回应的DHCP Offer封包则会根据这些资料传递给要求租约的客户。根据服务器端的设定﹐DHCP Offer封包会包含一个租约期限的信息。但这里仅仅是分配, 客户端还没有真正的使用

DHCP REQUEST 请求使用

如果客户端收到网路上多台DHCP服务器的回应﹐只会挑选其中一个DHCP Offer(通常是最先抵达的那个)并且向网路发送一个DHCP Request广播封包,告诉所有DHCP服务器它将指定接受哪一台服务器提供的IP位址。之所以要以广播方式回答,是为了通知所有的DHCP服务器,他将选择某台DHCP服务器所提供的IP地址, 同时,客户端还会发送一个ARP封包, 查询网路上有没有其他机器使用该IP地址, 如果发现该IP被占用, 客户端会发送一个DHCP Decline封包给DHCP服务器, 拒绝接受其DHCP Offer,并重新开始发送DHCP Discover信息。

DHCP ACK IP地址分配确认

当DHCP服务器收到DHCP客户机回答的DHCP Request请求信息之后, 它便向DHCP客户机发送一个包含它所提供的IP地址和其他设置的DHCP Ack确认信息。以确认IP地址的正式生效。然后DHCP客户机便将其TCP/IP协议与网卡绑定,另外,除DHCP客户机选中的服务器外,其他的DHCP服务器都将收回曾提供的IP地址

重新登录

当DHCP客户机分配到IP后,每次当DHCP客户机重新登录登录时, 则不需要发送DHCP Discover信息了,而是直接发送包含前一次所分配的IP地址的DHCP Request请求信息。当DHCP服务器收到这一信息后, 它会尝试DHCP客户机继续使用原来的IP地址, 并回答一个DHCP Ack确认信息。 如果此IP地址无法继续在分配给原来的DHCP客户机使用时(比如此IP地址以分配给其他DHCP客户机),则DHCP服务器给DHCP客户机回答一个DHCP NAck否认信息。 当原来的DHCP客户机收到此DHCP NAck否认信息后, 它必须重新发送DHCP Discover信息来重新请求信的IP地址

更新租约

DHCP服务器向DHCP客户机出租的IP地址一般都有一个租借期限, 期满后DHCP服务器便会收回出租的IP地址,如果DHCP客户机要延长其IP租约, 则必须更新其IP租约。DHCP客户机启动时和IP租约期限过一半时, DHCP客户机都会自动向DHCP服务器发送其IP租约的信息。 DHCP客户机除了在开机的时候发出DHCP Request请求在外, 在使用租期超过50%时刻处,DHCP 客户机会以单播形式向DHCP Server发送DHCP Request报文来续租IP地址。如果DHCP 客户机成功收到DHCP 服务器发送的DHCP ACK报文,则按相应时间延长IP地址租期;如果没有收到DHCP 服务器发送的DHCP ACK报文,则DHCP 客户机继续使用这个IP地址。在使用租期超过87.5%时刻处,DHCP 客户机会以广播形式向DHCP Server发送DHCP Request报文来续租IP地址。如果DHCP 客户机成功收到DHCP 服务器发送的DHCP ACK报文,则按相应时间延长IP地址租期;如果没有收到DHCP 服务器发送的DHCP ACK报文,则DHCP 客户机继续使用这个IP地址,直到IP地址使用租期到期时,DHCP Client才会向DHCP Server发送DHCP Release报文来释放这个IP地址。 客户端想提前退租, 可以随时发送DHCP Release命令解约

DHCP报文解析

报文格式

OP: 若是客户端送给服务端的封包 设置为1 反方向为2
Htype: 硬件类型, ethernet为1
Hlen: 硬件长度, ethernet为6
Hops: 若数据包需要经过router发送 没站加1,若在同一网内为0
Transaction ID : 事物ID是个随机数,用于客户端和服务器之间匹配请求和相应信息
Seconeds: 由用户指定的时间,指开始地址获取和更新进行后的时间
Flags: 从0-15bits 最高位为1时表示server将以广播方式传递封包给client, 0 表示表示server将以单播方式传递封包给client,其余尚未使用。
Ciaddr : 用户IP地址
Siaddr: 用于bootsrtap过程中的IP地址(服务器的IP地址)
Chaddr: client的硬件地址
Sname: 可选的server的名称, 以0x00结尾
File: 启动文件名
Options: 厂商标识, 可选的蚕食字段

抓包分析

DHCP discover阶段

DHCP offer阶段

DHCP request阶段

DHCP ack阶段

DCHP详细工作流程及分析相关推荐

  1. MapReduce的详细工作流程

    MR的详细工作流程 上图给的是MR(任务:将200M的数据按照单子首字母是a-p,q-z分为两个区)的工作流程 1.获取将要处理的文本数据 2.将数据进行切片处理 3.提交所需的基本信息,class文 ...

  2. PC_cpu的结构和工作流程/指令周期分析

    文章目录 PC_@cpu的结构和工作流程@指令周期分析 ref cpu组成结构 cpu位数 CPU功能 运算器 作用 构成 1)算术逻辑单元 2)暂存寄存器 3)累加寄存器 4)通用寄存器组 5)

  3. MapReduce详细工作流程解析

    MapReduce工作流程 一.流程示意图 二.流程详解 1.split阶段 2.map阶段 3.Shuffle阶段 4.Reduce阶段 5.注意 三.各个阶段的工作机制 1.InputFormat ...

  4. mapgis矢量化怎么打分数_mapgis矢量化的详细工作流程

    感觉不错就麻烦评下分哦 1 . 准备光栅文件,启动 MAPGIS 输入编辑子系统,新建工程. 新建控制点.界址点.线层等项目文件,建立界址点文件和线层 文件的属性结构: 2 . 采集控制点,记录图幅左 ...

  5. NB-IoT小区选择的工作流程-信令分析

    用信令的方式解读NB-IoT小区选择的流程

  6. Yarn详细的工作流程

    yarn详细工作流程 第一步:客户端向ResourceManager 申请运行程序 第二步:ResourceManager 检查是否有运行权限,如果有就会返回jobid和程序提交的资源路径 第三步:根 ...

  7. X005---alteryx的工作流程配置

    一.缘起 每个工作工作流程文件,都有配置页面,点击该流程画布的空白处,即可看见左侧的配置页面变为"工作流程配置"页面: 这个配置页面值得研究. 二.工作流程配置 "配置& ...

  8. 关于RemoteView的一点愚见(RemoteView在AppWidget中的工作流程)

    前言 由于公司环境恶劣,小菜鸟我本来想画UML图来显示类与类之间的关系,可惜这个念头无法达成,也只好用Word文档来完成.待菜鸟我辞职了,再自己画上UML图和Gif动态图,来显示类于类之间的关系.所以 ...

  9. 大数据之-Hadoop3.x_MapReduce工作流程---大数据之hadoop3.x工作笔记0109

    1.然后我们再去看MapReduce的详细工作流程,可以看到比如首先我们有个200m的文件ss.txt,然后首先,我们写的客户端程序,首先去 获取待处理的数据,然后根据参数配置,形成任务规划,实际上就 ...

最新文章

  1. python中的文件父路径怎么表达_如何在Python中访问父目录
  2. oclick vue 传参 函数_详解Vue计算属性和侦听属性
  3. android edittext seterror,EditText之setError方法一二
  4. Object family 0401 is not intended for installed base category Installed Base
  5. ElasticSearch最全详细使用教程:入门、索引管理、映射详解、索引别名、分词器、文档管理、路由、搜索详解...
  6. linux内存机制的virt,关于linux:转载理解virt-res-shr之间的关系
  7. SQL截断增强功能:SQL Server 2019中的静默数据截断
  8. linux音频设备节点,Linux音频驱动之三:PCM设备的创建
  9. Foundation 6 – 先进的响应式的前端开发框架
  10. 一、 kettle开发、上线常见问题以及防错规范步骤
  11. eclipse目录改名,子目录及JAVA文件同步更改
  12. 盒形图pandas绘制方法及数据不等长、坐标倾斜问题记录
  13. 如何升级iOS 16正式版?iOS 16正式版一键刷机教程
  14. 【UVA 1589 --- Xiangqi】
  15. 岩棉墙能用CAN/ULC-S101-M89标准测试吗?
  16. MySQL导入Excel报1406_关于mysql 导入excel 中 数据不全或导入不了的 处理办法(工具sqlyong)借鉴经验...
  17. android开发技巧——仿新版QQ锁屏下弹窗
  18. TCP/IP协议,HTTP协议,get和post请求的关联与区别
  19. 国产FPGA!哪些公司比较牛?
  20. 拓嘉启远:拼多多的奖惩机制有哪些

热门文章

  1. Linux文件系统层次标准
  2. 2018年科技业大走势
  3. 计算机网络之UDP首部
  4. Spring官网下载SpringFramework
  5. 国内常用git仓库 中文gitlab
  6. 从mysql8.0读取数据并形成pandas dataframe类型数据,精确定位行列式中的元素,并读取...
  7. 达梦DCA之SpringBoot集成达梦数据库
  8. 单元化架构在金融行业的最佳实践
  9. 2022-12-04 第 322 场周赛
  10. 建筑施工员证怎么考?报名条件及报考时间是什么?