计算机网络-Wireshark探索ARP

news2025/3/1 11:43:27

使用工具


  • Wireshark
  • arp: To inspect and clear the cache used by the ARP protocol on your computer.
  • curl(MacOS)
  • ifconfig(MacOS or Linux): to inspect the state of your computer’s network interface.
  • route/netstat: To inspect the routes used by your computer.
  • Browser.

Network Setup


ARP is used to find the Ethernet address that corresponds to a local IP address to which your computer wants to send a packet.

Capture a Trace


运行下面的命令,获取自己的`Ethernet address

ifconfig

Find the IP address of the local router or default gateway that your computer uses to reach the rest of the Internet.

netstat -r # or use `route -n get default`

Wireshark设置:

  • Interface: Wi-Fi: en0(MacOS+WiFi)
  • filter: arp
  • Uncheck capture packets in promiscuous mode: This mode is useful to overhear packets sent to/from other computers on broadcast networks

设置完成后,开启抓包。

在命令行窗口运行以下命令:

arp -a # 查看arp缓存

sudo arp -d -a # Mac, 清除arp缓存
arp -a # 再次查看arp缓存

我们将本机的缓存删除之后,再次使用arp -a查看缓存信息发现还有一条信息,这是为什么呢?下面这一段话是对于这一现象的解释。

计算机在需要和某个远程 IP 地址通信时,会自动发送新的 ARP 请求来重新获取该 IP 地址对应的 MAC 地址。这种请求通常是由系统后台的网络活动触发的,例如定时检测网络状态、后台程序通信等。因此,清除条目后,即使在短时间内查看 ARP 表(通过 arp -a),也可能发现该条目已经重新出现在 ARP 表中。

Note that the command should run without error but the ARP entry may not appear to be cleared if you check with “arp –a”. This is because your computer will send ARP packets to repopulate this entry as soon as you need to send a packet to a remote IP address, and that can happen very quickly due to background activity on the computer.

然后打开浏览器,这时Wireshark会捕获到一些分组,实际上我没打开浏览器时就捕获到了一些,可能是后台应用太多了。捕获到了之后就停止捕获,然后进入下一步的探究👀。

Inspect the Trace


我们首先分析发往我们自己电脑的和从我们电脑发出的分组,所以需要先过滤一下。

# 填入自己的 MAC 地址
eth.addr==10:b5:88:57:d8:0d 

Find and select an ARP request for the default gateway and examine its fields. There are two kinds of ARP packets, a request and a reply, and we will look at each one in turn.


字段含义:

  • Hardware typeProtocol type分别用来指定底层的网络硬件类型和上层协议的类型。This matches the ARP translation from IP to Ethernet address.
  • Hardware and Protocol size are set to 6 and 4, respectively. These are the sizes of Ethernet and IP addresses in bytes.
  • opcode标识这是一个Request,根据IP查找MAC的请求。
  • 最后四个字段分别是发送者的MAC和IP以及目标的MAC和IP,但这是我们发送出去的request,此时我们还不知道目标的MAC,所以这一字段是没有被填的。

字段含义:

  • The Hardware and Protocol type and sizes are as set as before.
  • The opcode field has a different value that tells us that this is a reply.
  • Next come the four key fields, the sender MAC (Ethernet) and IP and the target MAC (Ethernet) and IP just as before. These fields are reversed from the corresponding request, since the old target is the new sender (and vice versa). The fields should now be all filled in since both computers have supplied their addresses

APR request and reply


根据下图绘制:

Details of ARP over Ethernet


  1. What opcode is used to indicate a request? What about a reply?

    01表示request,02表示reply。

  2. How large is the ARP header for a request? What about for a reply?

    reply: 28 bytes, request: 28 bytes(or 24 bytes 减去没填的Target MAC address)

  3. What value is carried on a request for the unknown target MAC address?

    Target MAC address: 00:00:00_00:00:00 (00:00:00:00:00:00)

  4. What Ethernet Type value which indicates that ARP is the higher layer protocol?

  5. Is the ARP reply broadcast (like the ARP request) or not?

    返回时因为已经知道了双方的IP和MAC,所以不是通过广播,而是直接根据MAC返回。

下面讲述了ARP的工作原理:

ARP packets are carried in Ethernet frames, and the values of the Ethernet header fields are chosen to support ARP. For instance, you may wonder how an ARP request packet is delivered to the target computer so that it can reply and tell the requestor its MAC address. The answer is that the ARP request is (normally) broadcast at the Ethernet layer so that it is received by all computers on the local network including the target. Look specifically at the destination Ethernet address of a request: it is set to ff:ff:ff:ff:ff:ff, the broadcast address. So the target receives the request and recognizes that it is the intended recipient of the message; other computers that receive the request know that it is not meant for them. Only the target responds with a reply. However, anyone who receives an ARP packet can learn a mapping from it: the sender MAC and sender IP pair.

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

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

相关文章

Qt之自定义动态调控是否显示日志

创作灵感 最近在芯驰x9hp上开发仪表应用。由于需要仪表警告音,所以在该平台上折腾并且调试仪表声音的时候,无意间发现使用: export QT_DEBUG_PLUGINS1 可以打印更详细的调试信息。于是想着自己开发的应用也可以这样搞,这样更方便…

右玉200MW光伏电站项目 微气象、安全警卫、视频监控系统

一、项目名称 山西右玉200MW光伏电站项目 微气象、安全警卫、视频监控系统 二、项目背景: 山西右玉光伏发电项目位于右玉县境内,总装机容量为200MW,即太阳能电池阵列共由200个1MW多晶硅电池阵列子方阵组成,每个子方阵包含太阳能…

Java基础学习:java常用启动命令

一、java -jar 1、系统属性传递 使用形式:java -DpathD:\jacoco -jar 获取方式:System.getProperties() 2、系统参数传递 使用形式:java -jar application.jar --jacocoPathD:\tomcat 获取方式:通过启动方法入口main的参数arg…

一级考试真题(2019)

一级考试真题(2019)

echarts图表自定义配置(二)——代码封装

下图是初版,火山图的代码。可以看出,里面的变量,逻辑,函数存在冗余,基本上都是改了参数,同样的get和set,去刷新图表;对于往后继续开发十几二十个图表,会很麻烦。因此需要…

如何用状态图进行设计05

到目前为止,我们已经讨论了状态图的原理。这些原理对状态图和扩展状态图都适用。第二章后面的部分主要讲述了扩展状态图的扩展功能。我们将围绕这些增强的功能,使你对BetterState Pro的设计能力有很好的了解。 关于这些内容和其他有关扩展状态图特性的完…

鸿蒙NEXT开发案例:九宫格随机

【引言】 在鸿蒙NEXT开发中,九宫格抽奖是一个常见且有趣的应用场景。通过九宫格抽奖,用户可以随机获得不同奖品,增加互动性和趣味性。本文将介绍如何使用鸿蒙开发框架实现九宫格抽奖功能,并通过代码解析展示实现细节。 【环境准…

【efinance一个2k星的库】

efinance 是一个可以快速获取基金、股票、债券、期货数据的 Python 库,回测以及量化交易的好帮手 但没有等比复权的,不用。 import efinance as ef ef.stock.get_quote_history(510880,fqt2)

协同办公软件新升级:细节优化,让办公更简单

细节决定成败,企业酷信协同办公系统通过贴近客户实际需求的一系列改进和创新,在技术架构、系统结构、管理理念和使用性能上,都达到了国内先进水平,同时具备独特的优势。让我们看看企业酷信是如何通过这些细节提升,为企…

【AI知识】有监督学习分类任务之支持向量机

1.支持向量机概念 支持向量机(Support Vector Machine, SVM) 是一种有监督学习算法,主要用于分类任务(也可用于回归任务,即支持向量回归,SVR)。SVM的核心思想是找到一个最优的超平面&#xff0…

MySQL有哪些高可用方案?

大家好,我是锋哥。今天分享关于【MySQL有哪些高可用方案?】面试题。希望对大家有帮助; MySQL有哪些高可用方案? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 MySQL 高可用方案旨在确保数据库系统的高可靠性、低宕机时间、以及在硬件故障…

利用Docker分层构建优化镜像大小

合适docker镜像文件大小不仅影响容器启动效率,也影响资源占用效率。本文介绍如何利用分层方式构建docker镜像,采用多种方式避免镜像文件太大而影响性能。 Docker 镜像大小优化的重要性 资源利用效率 较小的镜像文件在存储和传输过程中占用更少的空间和带…

threejs——无人机概念切割效果

主要技术采用着色器的切割渲染,和之前写的风车可视化的文章不同,这次的切割效果是在着色器的基础上实现的,并新增了很多可调节的变量,兄弟们,走曲儿~ 线上演示地址,点击体验 源码下载地址,点击下载 正文 从图中大概可以看出以下信息,一个由线组成的无人机模型,一个由…

我的AI工具箱Tauri版-SpiderYtDlp油管视频多功能下载

本教程基于自研的AI工具箱Tauri版进行SpiderYtDlp油管视频多功能下载。 SpiderYtDlp油管视频多功能下载 是一款基于自研AI工具箱的全新解决方案,专为满足多场景需求的用户设计。工具集成了便捷的链接直接下载功能和强大的关键词模糊搜索下载功能,赋能创…

PyCharm如何导入库( 包 )

目录 1.在主界面中导库 2.用设置->项目安装库 2.1.使用右上方按钮 2.2.使用右下方Python解释器 3.使用左下角终端导库 1.在主界面中导库 在主界面输入导库后等待一会儿,会在那一行出现一个红色灯。 图1 红色灯 我们点击红色灯,会出现 图2 错误选…

Bananna Pi开源社区联合矽昌通信打造开源的低成本Wifi5路由器

香蕉派 BPI-Wifi5 路由器采用矽昌SF19A2890S2芯片方案设计。它是一款高性能无线路由器,适用于小微企业、家庭和其他网络环境。Banana Pi开源社区提供整体解决方案。所有代码开源,用户可以在上面自由开发自己的应用。 Banana Pi wifi5 路由器github代码: …

Spring Boot教程之二十五: 使用 Tomcat 部署项目

Spring Boot – 使用 Tomcat 部署项目 Spring Boot 是一个基于微服务的框架,在其中创建可用于生产的应用程序只需很少的时间。Spring Boot 建立在 Spring 之上,包含 Spring 的所有功能。如今,它正成为开发人员的最爱,因为它是一个…

scale index的计算

scale index定义 基本实现 需要注意,scale index的提出者分别构建了MATLAB和R语言的实现方式。 但是,需要注意,经过我向作者求证。 MATLAB编写的代码已经“过时了”,为了拥抱时代,作者构建了R语言包,名称为…

虚幻5描边轮廓材质

很多游戏内都有这种描边效果,挺实用也挺好看的,简单复刻一下 效果演示: Linethickness可以控制轮廓线条的粗细 这样连完,然后放到网格体细节的覆层材质上即可 可以自己更改粗细大小和颜色

【Java Nio Netty】基于TCP的简单Netty自定义协议实现(万字,全篇例子)

基于TCP的简单Netty自定义协议实现(万字,全篇例子) 前言 有一阵子没写博客了,最近在学习Netty写一个实时聊天软件,一个高性能异步事件驱动的网络应用框架,我们常用的SpringBoot一般基于Http协议&#xff0…