DHCP数据包分析

news2024/10/7 10:16:49

目录

1、DHCP

2、DHCP报文种类

3、DHCP工作原理

4、DHCP报文格式


1、DHCP

DHCP(Dynamic Host Configuration Protocol,动态主机配置协议),前身是BOOTP协议,是一个局域网的网络协议,使用UDP协议工作,统一使用两个IANA分配的端口:67(服务器端),68(客户端)。DHCP通常被用于局域网环境,主要作用是集中的管理、分配IP地址,使client动态的获得IP地址、Gateway地址、DNS服务器地址等信息,并能够提升地址的使用率。简单来说,DHCP就是一个不需要账号密码登录的、自动给内网机器分配IP地址等信息的协议。

2、DHCP报文种类

报文类型说明
Discover(0x01)DHCP客户端在请求IP地址时并不知道DHCP服务器的位置,因此DHCP客户端会在本地网络内以广播方式发送Discover请求报文,以发现网络中的DHCP服务器。所有收到Discover报文的DHCP服务器都会发送应答报文,DHCP客户端据此可以知道网络中存在的DHCP服务器的位置。
Offer(0x02)DHCP服务器收到Discover报文后,就会在所配置的地址池中查找一个合适的IP地址,加上相应的租约期限和其他配置信息(如网关、DNS服务器等),构造一个Offer报文,发送给DHCP客户端,告知用户本服务器可以为其提供IP地址。但这个报文只是告诉DHCP客户端可以提供IP地址,最终还需要客户端通过ARP来检测该IP地址是否重复。
Request(0x03)DHCP客户端可能会收到很多Offer请求报文,所以必须在这些应答中选择一个。通常是选择第一个Offer应答报文的服务器作为自己的目标服务器,并向该服务器发送一个广播的Request请求报文,通告选择的服务器,希望获得所分配的IP地址。另外,DHCP客户端在成功获取IP地址后,在地址使用租期达到50%时,会向DHCP服务器发送单播Request请求报文请求续延租约,如果没有收到ACK报文,在租期达到87.5%时,会再次发送广播的Request请求报文以请求续延租约。
Decline(0x04)DHCP客户端收到DHCP服务器ACK应答报文后,通过地址冲突检测发现服务器分配的地址冲突或者由于其他原因导致不能使用,则会向DHCP服务器发送Decline请求报文,通知服务器所分配的IP地址不可用,以期获得新的IP地址。
ACK(0x05)DHCP服务器收到Request请求报文后,根据Request报文中携带的用户MAC来查找有没有相应的租约记录,如果有则发送ACK应答报文,通知用户可以使用分配的IP地址。
NAK(0x06)如果DHCP服务器收到Request请求报文后,没有发现有相应的租约记录或者由于某些原因无法正常分配IP地址,则向DHCP客户端发送NAK应答报文,通知用户无法分配合适的IP地址。
Release(0x07)当DHCP客户端不再需要使用分配IP地址时(一般出现在客户端关机、下线等状况)就会主动向DHCP服务器发送RELEASE请求报文,告知服务器用户不再需要分配IP地址,请求DHCP服务器释放对应的IP地址。
Inform(0x08)DHCP客户端如果需要从DHCP服务器端获取更为详细的配置信息,则向DHCP服务器发送Inform请求报文;DHCP服务器在收到该报文后,将根据租约进行查找到相应的配置信息后,向DHCP客户端发送ACK应答报文。目前基本上不用了。

3、DHCP工作原理

4、DHCP报文格式

  • op:报文的操作类型。分为请求报文和响应报文。1:请求报文,2:应答报文。即client送给server的封包,设为1,反之为2。
    • 请求报文:DHCP Discover、DHCP Request、DHCP Release、DHCP Inform和DHCP Decline。
    • 应答报文:DHCP Offer、DHCP ACK和DHCP NAK。
  • htype:DHCP客户端的MAC地址类型。MAC地址类型其实是指明网络类型。htype值为1时表示为最常见的以太网MAC地址类型。
  • hlen:DHCP客户端的MAC地址长度。以太网MAC地址长度为6个字节,即以太网时hlen值为6。
  • hops:DHCP报文经过的DHCP中继的数目,默认为0。DHCP请求报文每经过一个DHCP中继,该字段就会增加1。没有经过DHCP中继时值为0。(若数据包需经过router传送,每站加1,若在同一网内,为0。)
  • xid:客户端通过DHCP Discover报文发起一次IP地址请求时选择的随机数,相当于请求标识。用来标识一次IP地址请求过程。在一次请求中所有报文的Xid都是一样的。
  • secs:DHCP客户端从获取到IP地址或者续约过程开始到现在所消耗的时间,以秒为单位。在没有获得IP地址前该字段始终为0。(DHCP客户端开始DHCP请求后所经过的时间。目前尚未使用,固定为0。)
  • flags:标志位,只使用第0比特位,是广播应答标识位,用来标识DHCP服务器应答报文是采用单播还是广播发送,0表示采用单播发送方式,1表示采用广播发送方式。其余位尚未使用。(即从0-15bits,最左1bit为1时表示server将以广播方式传送封包给client。)
    • 注意:在客户端正式分配了IP地址之前的第一次IP地址请求过程中,所有DHCP报文都是以广播方式发送的,包括客户端发送的DHCP Discover和DHCP Request报文,以及DHCP服务器发送的DHCP Offer、DHCP ACK和DHCP NAK报文。当然,如果是由DHCP中继器转的报文,则都是以单播方式发送的。另外,IP地址续约、IP地址释放的相关报文都是采用单播方式进行发送的。
  • ciaddr:DHCP客户端的IP地址。仅在DHCP服务器发送的ACK报文中显示,因为在得到DHCP服务器确认前,DHCP客户端是还没有分配到IP地址的。在其他报文中均显示,只有客户端是Bound、Renew、Rebinding状态,并且能响应ARP请求时,才能被填充。
  • yiaddr:DHCP服务器分配给客户端的IP地址。仅在DHCP服务器发送的Offer和ACK报文中显示,其他报文中显示为0。
  • siaddr:下一个为DHCP客户端分配IP地址等信息的DHCP服务器IP地址。仅在DHCP Offer、DHCP ACK报文中显示,其他报文中显示为0。(用于bootstrap过程中的IP地址)
    • 一般来说是服务器的ip地址.但是注意!根据openwrt源码给出的注释,当报文的源地址、siaddr、option­>server_id字段不一致(有经过跨子网转发)时,通常认为option­>srever_id字段为真正的服务器ip,siaddr有可能是多次路由跳转中的某一个路由的ip
  • giaddr:DHCP客户端发出请求报文后经过的第一个DHCP中继的IP地址。如果没有经过DHCP中继,则显示为0。(转发代理(网关)IP地址)
  • chaddr:DHCP客户端的MAC地址。在每个报文中都会显示对应DHCP客户端的MAC地址。
  • sname:为DHCP客户端分配IP地址的DHCP服务器名称(DNS域名格式)。在Offer和ACK报文中显示发送报文的DHCP服务器名称,其他报文显示为0。
  • file:DHCP服务器为DHCP客户端指定的启动配置文件名称及路径信息。仅在DHCP Offer报文中显示,其他报文中显示为空。
  • options:可选项字段,长度可变,格式为"代码+长度+数据"。

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

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

相关文章

国产手机无奈放弃芯片研发,关键还是芯片制造,前路在何方?

OPPO放弃芯片研发,影响仍然在继续,这引发了各方对国产芯片发展方向的思考,那么如果不是OPPO,其他国产芯片企业又能突破困境么?其实关键还是在芯片制造。 国内最强大的芯片企业,由于众所周知的原因&#xff…

ChatGPT联网后几大功能

这周ChatGPT plus 已经可以联网了,联网后对我们的用处更大了,这里总结了几点ChatGPT联网 后的几个功能: 1.对给定的网页进行读取,并根据解读后来回答问题 给ChatGPT一个网址,让他总结一下这个网址,不到一…

Java 中 CAS 是什么,有哪些实际应用场景

CAS 是什么 CAS(Compare And Swap)是一种并发编程中的原子操作,用于实现多线程之间的同步。在 Java 中,CAS 操作通过 sun.misc.Unsafe 类实现。 CAS 操作是一种乐观锁机制,它假设对于共享变量的修改操作不会引起冲突…

一个高级测试工程师从23岁到33岁,经历过时间才会懂的这个行业

本文将概述测试工程师的现状及发展方向,并着重介绍测试开发工程师的发展及所需具备的技能,以及本部门搭建的测试平台的概况和意义。 一、测试工程师的现状 很多测试小伙伴在工作中有时会比较迷茫,不知该怎样突破瓶颈,更好的发展。…

加密解密软件VMProtect教程(六):主窗口之控制面板“项目”部分(2)

VMProtect 是新一代软件保护实用程序。VMProtect支持德尔菲、Borland C Builder、Visual C/C、Visual Basic(本机)、Virtual Pascal和XCode编译器。 同时,VMProtect有一个内置的反汇编程序,可以与Windows和Mac OS X可执行文件一起…

代码随想录算法训练营day44 | 完全背包,518. 零钱兑换 II,377. 组合总和 Ⅳ

代码随想录算法训练营day44 | 完全背包,518. 零钱兑换 II,377. 组合总和 Ⅳ 完全背包完全背包问题概述例题遍历顺序分析 518. 零钱兑换 II解法一:动态规划 377. 组合总和 Ⅳ解法一:动态规划 总结 完全背包 教程视频:h…

听说你们都在问?(摇人儿啦)

嗨嗨嗨,🤗 宝子们,今天咱们来一则招聘公告!这是 Hugging Face 的 Post-Sales Machine Learning Solutions Engineer - Asia Remote 职位,感兴趣的宝宝请继续往后看: Description Here at Hugging Face, we’…

算法---被围绕的区域

题目 给你一个 m x n 的矩阵 board ,由若干字符 ‘X’ 和 ‘O’ ,找到所有被 ‘X’ 围绕的区域,并将这些区域里所有的 ‘O’ 用 ‘X’ 填充。 示例 1: 输入:board [[“X”,“X”,“X”,“X”],[“X”,“O”,“O”…

Jetson 套件使用VS-Code远程操作经验分享

远程操作Jetson Nano时,笔者一开始使用FinalShell这个便利的SSH工具,并搭配Nomachine图形界面软件。在前期的单纯学习与简易开发时还能游刃有余,但随着复杂度的提升,不仅需要在几个关联文件中进行交叉修改,可能还需要查看图像/视频这类的输出结果,必须在几个视窗之间不断…

有限合伙企业与有限公司的区别

1、设立要求不同: 有限合伙企业:根据《合伙企业法》设立,第61条规定必须由2个(包含2个)以上的合伙人出资设立,有限合伙企业合伙人中至少有一名是普通合伙人。有限责任公司:根据《公司法》设立&…

七大语言模型PK,ChatGPT内容基线测评稳居第一

随着ChatGPT的爆火与流行,大型语言模型(LLM)与生成式人工智能(AIGC)不断跃入大众视野,随之也带来了许多内容风险隐患。 近日,知道创宇内容安全专家对互联网上流行的7款大型语言模型进行了全面和…

Android Service 使用

在Android应用开发中,Service是一种非常重要的组件。Service可以在后台执行长时间运行的任务,例如播放音乐、下载文件等。在本文中,我将会介绍如何使用Service组件,并通过代码实现来说明它的作用。 Android Service概述 在Androi…

微信小程序xr-frame实现交互(地月案例)

基础知识: 1.轮廓 如果想要与场景中的物体进行互动,比如说点击、拖拽物体,那么这个物体得先拥有一个轮廓才行。轮廓是一个组件。与某个物体互动,实际上是在与这个物体的轮廓进行互动,轮廓让这个物体在物理世界中拥有…

C++职工管理系统(类继承、文件、指针操作、中文乱码解决)

文件目录及界面 CMakeLists.txt避免中文乱码配置。 # C的解决办法 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -fexec-charsetGBK") # C 的解决办法 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -fexec-charsetGBK") 一、退出管理程序 退出当前管理…

不需要#魔#法就能直接访问chatgpt

你还在付费使用chatgpt吗?你还在使用魔法访问chatgpt吗?你还在忍受每分钟刷新一下页面才能继续与gpt聊天吗? 今天给大家分享2种方法,可以使用国内网络在本地就能直接访问chatgpt。 这两种方法都是基于GitHub上的开源项目chatbot-u…

基于SSM的网上宠物店

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

低代码赋能生物药企数字化

一、关于复宏汉霖 汉霖是复星在2010年投资孵化的一家生物医药公司,经过这十几年的发展,2019年在港股上市,是生物药企18A企业之一。 经过这些年的发展,我们在管线方面布局了肿瘤、肢体、免疫、眼科类,从早研阶段到临床…

Midjourney|文心一格prompt教程[Text Prompt(下篇)]:游戏、实物、人物、风景、动漫、邮票、海报等生成,终极模板教学

Midjourney|文心一格prompt教程[Text Prompt(下篇)]:游戏、实物、人物、风景、动漫、邮票、海报等生成,终极模板教学 场景6:游戏 Prompt 真的越长越好吗? 按照 Midjourney 的官方文档里的说法&#xff0…

基于html+css的图展示76

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

人类禁止进入的“微博”,我的AI机器人在那里吹牛,“勾搭”AI小姑娘

最近球友推荐了一个非常有趣的网站,叫“奇鸟”(https://chirper.ai/zh)。 简单来说,这是一个AI专属的微博,人类禁止发言,但是你可以创建一个叫“奇鸟”的机器人代理,让它在里边发帖,…