计算机网络-Wireshark探索ARP
使用工具
- 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 type和Protocol 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
-
What opcode is used to indicate a request? What about a reply?
01表示request,02表示reply。 -
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)
-
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)
-
What Ethernet Type value which indicates that ARP is the higher layer protocol?

-
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.

相关文章:
计算机网络-Wireshark探索ARP
使用工具 Wiresharkarp: 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.Brows…...
减少30%人工处理时间,AI OCR与表格识别助力医疗化验单快速处理
在医疗行业,化验单作为重要的诊断依据和数据来源,涉及大量的文字和表格信息,传统的手工输入和数据处理方式不仅繁琐,而且容易出错,给医院的运营效率和数据准确性带来较大挑战。随着人工智能技术的快速发展,…...
1.2.3计算机软件
一个完整的计算机系统由硬件和软件组成,用户使用软件,而软件运行在硬件之上,软件进一步的划分为两类:应用软件和系统软件。普通用户通常只会跟应用软件打交道。应用软件是为了解决用户的某种特定的需求而研发出来的。除了每个人都…...
二、uni-forms
避坑指南:uni-forms表单在uni-app中的实践经验-CSDN博客...
Android13开机向导
文章目录 前言需求-场景第三方资料说明需求思路按照平台 思路 从配置上去 feature换个思路,去feature。SimMissingActivity 判断跳过逻辑SetupWizardUtils 判断SIM 、 hasSystemFeature FEATURE_TELEPHONYPackageManager.FEATURE_TELEPHONYApplicationPackageManage…...
软件测试丨Appium 源码分析与定制
在本文中,我们将深入Appium的源码,探索它的底层架构、定制化使用方法和给软件测试带来的优势。我们将详细介绍这些技术如何解决实际问题,并与大家分享一些实用的案例,以帮助读者更好地理解和应用这一技术。 Appium简介 什么是App…...
1.网络知识-IP与子网掩码的关系及计算实例
IP与子网掩码 说实话,之前没有注意过,今天我打开自己的办公地电脑,看到我的网络配置如下: 我看到我的子网掩码是255.255.254.0,我就奇怪了,我经常见到的子网掩码都是255.255.255.0啊?难道公司配…...
Android中Gradle常用配置
前言 本文记录了一些常用的gradle配置,基本上都是平时开发中可能会使用到的,如果有新内容会不定时更新,附官网 1.依赖库版本写法 不推荐写法: dependencies {compile com.example.code.abc:def:2. // 不推荐的写法 }这样写虽然可…...
Linux操作系统3-文件与IO操作2(文件描述符fd与文件重定向)
上篇文章:Linux操作系统3-文件与IO操作1(从C语言IO操作到系统调用)-CSDN博客 本篇代码Gitee仓库:myLerningCode 橘子真甜/Linux操作系统与网络编程学习 - 码云 - 开源中国 (gitee.com) 本篇重点:文件描述符fd与文件重定向 目录 一. 文件描述…...
k8s调度策略
调度策略 binpack(装箱策略) Binpacking策略(又称装箱问题)是一种优化算法,用于将物品有效地放入容器(或“箱子”)中,使得所使用的容器数量最少,Kubernetes等集群管理系…...
uniapp中父组件传参到子组件页面渲染不生效问题处理实战记录
上篇文件介绍了,父组件数据更新正常但是页面渲染不生效的问题,详情可以看下:uniapp中父组件数组更新后与页面渲染数组不一致实战记录 本文在此基础上由于新增需求衍生出新的问题.本文只记录一下解决思路. 下面说下新增需求方便理解场景: 商品信息设置中添加抽奖概率设置…...
螺丝螺帽缺陷检测识别数据集,支持yolo,coco,voc三种格式的标记,一共3081张图片
螺丝螺帽缺陷检测识别数据集,支持yolo,coco,voc三种格式的标记,一共3081张图片 3081总图像数 数据集分割 训练组90% 2781图片 有效集7% 220图片 测试集3% 80图片 预处理…...
一个简单带颜色的Map
越简单 越实用。越少设计,越易懂。 需求背景: 创建方法,声明一个hashset, 元素为 {“#DE3200”, “#FA8C00”, “#027B00”, “#27B600”, “#5EB600”} 。 对应的key为 key1 、key2、key3、key4、key5。 封装该方法,…...
kubeadm安装K8s集群之基础环境配置
系列文章目录 1.kubeadm安装K8s集群之基础环境配置 2.kubeadm安装K8s集群之高可用组件keepalivednginx 3.kubeadm安装K8s集群之master节点加入 4.kubeadm安装K8s集群之worker1节点加入 kubeadm安装K8s集群基础环境配置 1.首先确保所有机器可以通信,然后配置主机host…...
前端实现在线预览excel文件
在前端开发中,经常会遇到需要在线预览各种文件的需求。本文将介绍如何使用前端技术实现在线预览 Excel 文件的功能。 一、基于微软office服务的excel预览 获取要预览的 Excel 文件的 URL(例如存储在 OneDrive 或 SharePoint 上的文件)。 使…...
关于idea-Java-servlet-Tomcat-Web开发中出现404NOT FOUND问题的解决
在做web项目时,第一次使用servlet开发链接前端和后端的操作,果不其然,遇到了诸多问题,而遇到最多的就是运行项目打开页面时出现404NOT FOUND的情况。因为这个问题我也是鼓捣了好久,上网查了许多资料才最终解决…...
SCRM私域流量管理工具助力企业微信电商转型升级
内容概要 在当今数字化时代,SCRM(社交客户关系管理)私域流量管理工具正逐渐成为企业转型的重要助力。尤其是在电商领域,企业微信的兴起为许多公司打开了新的销售渠道,通过SCRM系统的高效整合,企业能够更加…...
三相异步电动机为什么能够旋转?
三相异步电动机,作为一种广泛应用于工业、农业及其他领域的电动机,其工作原理的理解对于工程技术人员以及相关从业者来说至关重要。 一、三相异步电动机的基本结构 三相异步电动机主要由定子、转子和机壳组成。定子是电动机的静止部分,包含…...
优化移动端H5:常见问题与解决方案
移动端H5开发中的“坑”与解决方案 本文介绍了开发中遇到的几个关于移动端H5开发中的小问题,以及解决的方法。 一、iOS滑动不流畅问题 在iOS设备上,H5页面的滑动效果有时会出现不流畅的情况,特别是在页面高度超过一屏时。这通常是由于iOS的…...
TM1不藏私系列——#10. TM1快速运算的秘密武器-Feeder
与其他BI产品对比,TM1的快速运算能力一骑绝尘。 但是在多维度的数据组合下,TM1是依据什么进行运算的呢? 今天将和大家一同了解TM1快速运算的秘密武器-Feeder。 上期我们提到通过配置维度中的元素权重,可以在合并层级加总计算。除…...
Python自动化脚本:模拟鼠标键盘输入保持系统活跃状态
1. 项目概述:当你的电脑需要“假装在线”你有没有遇到过这样的场景:公司要求电脑必须保持在线状态,否则会被判定为“离开”或“闲置”,影响考勤或系统状态;或者,你在运行一个需要持续交互的软件,…...
如何在matlab中调用taotoken聚合大模型api的详细教程
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 如何在 MATLAB 中调用 Taotoken 聚合大模型 API 的详细教程 对于使用 MATLAB 进行科学计算、数据分析或工程开发的用户而言&#x…...
大语言模型剪枝技术:Týr-the-Pruner框架解析
1. 大语言模型剪枝技术背景与挑战在自然语言处理领域,大语言模型(LLMs)如Llama、GPT等已经展现出惊人的能力,但其庞大的参数量(通常达到数十亿甚至上千亿)带来了显著的部署挑战。以Llama-3.1-70B为例&#…...
收藏 | 从零开始学大模型:6个月完整开发路线图(附免费资源)
本文提供一份从Python基础到企业级大模型应用开发的6-8个月学习路线图,涵盖API调用、提示词工程、RAG知识库问答、Agent智能体开发及模型微调部署。结合近百份招聘需求及专家建议,适合初学者快速构建AI技能体系,附有前沿拓展方向与免费学习资…...
别再熬夜改答辩 PPT 了!okbiye AI PPT,4 步搞定学术演示稿(附保姆级操作指南)
okbiye-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/AI PPTAI PPT制作 - Okbiye智能写作https://www.okbiye.com/ppt 作为一名被毕业答辩 PPT 折磨过两次的过来人,我太懂那种痛苦了:对着几万字的论文,不知道怎么浓缩成十几页 …...
PADS PCB设计工具的核心优势与应用实践
1. PADS PCB设计工具概述作为一名拥有十年PCB设计经验的工程师,我亲身体验过从Protel到Altium再到Cadence Allegro的各种EDA工具。但当我在2015年首次接触PADS时,它独特的"约束驱动设计"理念和高效的交互式布线引擎立刻吸引了我。PADS…...
发音人「像真人」之外还要看什么:稳定性与一致性
🎯 发音人「像真人」之外还要看什么:稳定性与一致性在文字转语音领域,「像真人」往往是第一印象。然而,当您需要批量生成有声内容、长期使用同一音色时,真正决定体验的是稳定性与一致性。 顶伯文字转语音工具正是围绕这…...
AI工具导航站Awesome-AITools:社区驱动的资源聚合与高效使用指南
1. 项目概述:为什么我们需要一个AI工具导航站?如果你最近也在关注AI领域,大概率会和我有同样的感受:新工具、新模型、新应用的出现速度,已经快到了让人眼花缭乱的地步。今天刚听说一个能自动剪辑视频的AI,明…...
降AI率软件数据安全测评:嘎嘎降不留存vs拿你论文训练AI!
降AI率软件数据安全测评:嘎嘎降不留存vs拿你论文训练AI! 一个月后导师消息:「你论文跟去年某高校论文相似度异常」 我硕士毕业季预算紧,搜降 AI 工具时格外注意「免费」「不限字数」这种关键词。找到一家工具——免费额度大、价…...
Java集成ChatGPT实战:PlexPt SDK核心功能与生产部署指南
1. 项目概述与核心价值如果你是一名Java开发者,最近正琢磨着怎么在自己的应用里集成ChatGPT的能力,比如做个智能客服、代码助手或者内容生成工具,那你大概率已经搜过一圈了。官方的OpenAI API虽然强大,但直接用在Java项目里&#…...
