ARP协议
ARP协议
ARP协议的作用
当网络设备有数据要发送给另一台网络设备时,必须要知道对方的网络层地址(即IP地址)。IP地址由网络层来提供,但是仅有IP地址是不够的,IP数据报文必须封装成帧才能通过数据链路进行发送。数据帧必须要包含目的MAC地址,因此发送端还必须获取到目的MAC地址。通过目的IP地址来获取目的MAC地址的过程就是由ARP(Address Resolution Protocol)协议来实现的
ARP协议的位置
ARP协议工作在网络层和数据链路层之间(ARP协议和RARP协议属于MAC帧的上层协议),通常被认为是一个跨两层的协议
与之类似的,网络层当中的ICMP协议和IGMP协议,这两个协议虽然与IP协议都属于网络层,但这两个协议属于IP的上层协议
ARP协议的数据格式
- 硬件类型指链路层的网络类型,1为以太网
- 协议类型指要转换的地址类型,0x0800为IP地址
- 硬件地址长度对于以太网地址为6字节,因为MAC地址是48位的
- 协议地址长度对于IP地址为4字节,因为IP地址是32位的
- op字段为1表示ARP请求,op字段为2表示ARP应答
从ARP的数据格式也可以看出,ARP是MAC帧协议的上层协议,ARP数据格式中的前3个字段和最后一个字段对应的就是以太网首部,但由于ARP数据包的长度不足46字节,因此ARP数据包在封装成为MAC帧时还需要补上18字节的填充字段
ARP协议的工作流程
例如,路由器D要将数据转发给同一局域网当中的主机B,前提是路由器D必须知道主机B的MAC地址,而现在路由器D只知道主机B的IP地址,因此路由器D现在需要向主机B发起ARP请求,然后等待主机B发送ARP应答得知主机B的MAC地址
ARP请求的过程
路由器D首先需要先构建ARP请求
-
首先,因为路由器D构建的是ARP请求,因此ARP请求当中的op字段设置为1
-
ARP请求当中的硬件类型字段设置为1,因为当前使用的是以太网通信
-
ARP请求当中的协议类型设置为0800,因为路由器是要根据主机B的IP地址来获取主机B的MAC地址
-
ARP请求当中的硬件地址长度和协议地址长度分别设置为6和4,因为MAC地址的长度是48位,IP地址的长度是32位
-
ARP请求当中的发送端以太网地址和发送端IP地址,对应就是路由器D的MAC地址和IP地址
-
ARP请求当中的目的以太网地址和目的IP地址,对应就是主机B的MAC地址和IP地址,但由于路由器D不知道主机B的MAC地址,因此将目的以太网地址的二进制序列设置为全1,表示在局域网中进行广播
此时ARP请求构建完成,如下:
ARP请求构建完成后,为了能将ARP请求发送到以太网当中,还需要将ARP数据包向下交付给MAC帧协议,封装成MAC帧
- 封装MAC帧报头时,以太网目的地址和以太网源地址,对应分别是主机B和路由器D的MAC地址,但由于路由器D不知道主机B的MAC地址,因此MAC帧报头当中的以太网目的地址的二进制序列也只能设置为全1,表示在局域网中进行广播
- 因为这里封装的是一个ARP请求数据包,因此MAC帧当中的帧类型字段设置为0806
- 由于ARP请求数据包的长度只有28字节,不足46字节,因此还需要在MAC帧的有效载荷当中补上18字节的填充字段,最后再对MAC帧进行CRC校验即可
此时ARP请求就被封装成MAC帧了,如下:
MAC帧封装完毕后,路由器D就可以将封装好的MAC帧以广播的方式发送到局域网当中了。
-
因为这个MAC帧是以广播的方式发出的,因此局域网当中的每台主机收到这个MAC帧后,都会对该MAC帧进行解包。当这些主机识别到MAC帧当中的帧类型字段为0806后,便知道这是一个ARP的请求或应答的数据包,于是会将MAC帧的有效载荷向上交付给ARP层
-
当ARP层收到这个数据包后,发现ARP数据包当中的op字段为1,于是判定这是一个ARP请求,然后再提取出ARP数据包当中的目的IP地址字段,虽然局域网当中的所有主机都会将该数据包交给自己的ARP层,但最终只有主机B发现ARP数据包当中的目的IP地址与自己相同,因此只有主机B会对该ARP请求进行应答,而局域网当中的其他主机在识别到ARP数据包当中的目的IP地址与自己不匹配后,就会直接将这个ARP请求报文丢弃
需要注意的是,局域网当中其他不相干的主机在收到这个ARP请求报文后,不是在MAC帧层丢弃的,而是在ARP层发现该ARP数据包的目的IP与自己的IP不匹配后丢弃的。
ARP应答的过程
主机B在应答时首先需要构建ARP应答
-
首先,因为主机B构建的是ARP应答,因此ARP应答当中的op字段设置为2
-
ARP应答当中的硬件类型、协议类型、硬件地址长度、协议地址长度的值与ARP请求当中设置的值相同
-
ARP应答当中的发送端以太网地址和发送端IP地址,对应就是主机B的MAC地址和IP地址
-
ARP应答当中的目的以太网地址和目的IP地址,对应就是路由器D的MAC地址和IP地址,因为路由器D发来的ARP请求当中告知了主机B它的MAC地址和IP地址,因此主机B是知道的
此时ARP应答构建完成,如下:
ARP应答构建完成后,为了能将ARP应答发送到以太网当中,也需要将ARP数据包向下交付给MAC帧协议,封装成MAC帧
-
封装MAC帧报头时,以太网目的地址和以太网源地址,对应分别是路由器D和主机B的MAC地址
-
因为这里封装的是一个ARP应答数据包,因此MAC帧当中的帧类型字段设置为0806
-
由于ARP应答数据包的长度也只有28字节,不足46字节,因此也需要在MAC帧的有效载荷当中补上18字节的填充字段,最后再对MAC帧进行CRC校验
此时ARP应答就被封装成MAC帧了,如下:
MAC帧封装完毕后,主机B就可以将封装好的MAC帧发送到局域网当中了。
-
此时局域网当中的每台主机在底层都能收到这个MAC帧,但局域网当中的不相干的主机,在发现该MAC帧对应的以太网目的地址与自己不同后,就会将该MAC帧丢弃,而不会交付给上层ARP层,最终只有路由器D会将解包后MAC帧的有效载荷向上交付给自己的ARP层
-
当路由器D的ARP层收到这个数据包后,发现ARP数据包当中的op字段为2,于是判定这是一个ARP应答,然后就会提取出ARP数据包当中的发送端以太网的地址和发送端IP地址,此时路由器D就拿到了主机B的MAC地址
需要注意的是,局域网当中其他不相干的主机在收到这个ARP应答报文后,直接在MAC帧层就丢弃了,并没有将其交付给自己的ARP层
ARP缓存
实际不是每次要获取对方的MAC地址时都需要发起ARP请求,每次发起ARP请求后都会建立对应主机IP地址和MAC地址的映射关系,每台主机都维护了一个ARP缓存表,我们可以用arp -a
命令进行查看
需要注意的是,缓存表中的表项有过期时间,这个时间一般为20分钟,如果20分钟内没有再次使用某个表项,那么该表项就会失效,下次使用时就需要重新发起ARP请求来获得目的主机的硬件地址
相关文章:
ARP协议
ARP协议 ARP协议的作用 当网络设备有数据要发送给另一台网络设备时,必须要知道对方的网络层地址(即IP地址)。IP地址由网络层来提供,但是仅有IP地址是不够的,IP数据报文必须封装成帧才能通过数据链路进行发送。数据帧…...
科技赋能安居梦:中建海龙以模块化革新重塑城市更新范式
在北京市西城区桦皮厂胡同,一栋始建于上世纪70年代的住宅楼正经历着一场脱胎换骨的蜕变。这座曾被鉴定为D级危房的建筑,在中建海龙科技有限公司(以下简称“中建海龙”)的匠心打造下,仅用三个月便完成"原拆原建&qu…...
2025 AI智能数字农业研讨会在苏州启幕,科技助农与数据兴业成焦点
4月2日,以"科技助农数据兴业”为主题的2025AI智能数字农业研讨会在苏州国际博览中心盛大启幕。本次盛会吸引了来自全国各地相关部门领导、知名专家学者、行业协会组织,以及县级市农业企业代表、县级市农产品销售商等万名嘉宾齐聚姑苏城,…...
2000-2021年 全国各地区城镇登记失业率数据
全国各地区城镇登记失业率数据2000-2021年.ziphttps://download.csdn.net/download/2401_84585615/90259723 https://download.csdn.net/download/2401_84585615/90259723 城镇登记失业率是衡量地区就业状况的重要指标,反映了在一定时期内,符合就业条件的…...
Cursor的主要好处
以下是Cursor的主要好处: 代码生成与优化 • 快速生成代码:根据简短描述或部分代码片段,Cursor能快速生成完整代码模块,还能智能预测下一步操作,将光标放在合适位置,让开发者一路Tab键顺滑编写代码。 • …...
超便捷语音转文字工具CapsWriter-Offline本地部署与远程使用全流程
文章目录 前言1. 软件与模型下载2. 本地使用测试3. 异地远程使用3.1 内网穿透工具下载安装3.2 配置公网地址3.3 修改config文件3.4 异地远程访问服务端 4. 配置固定公网地址4.1 修改config文件 5. 固定tcp公网地址远程访问服务端 前言 今天给大家安利一个绝对能让你工作效率飙…...
什么是数据仓库
什么是数据仓库 Data warehouse 是面向主题的 主要根据各种数据来源,来进行历史分析 形成一个趋势分析 为数据挖掘、预测建模、机器学习提供基础数据 与传统数据库比如gaussdb的区别。数据仓库注重历史数据分析,guassdb注重实时事务处理 数据仓库时企业的…...
【动态规划】二分优化最长上升子序列
最长上升子序列 II 题解 题目传送门:AcWing 896. 最长上升子序列 II 一、题目描述 给定一个长度为 N 的数列,求数值严格单调递增的子序列的长度最长是多少。 输入格式: 第一行包含整数 N第二行包含 N 个整数,表示完整序列 输…...
MySQL的安装与初始化流程
MySQL概述 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,MySQL AB公司被Sun公司收购,Sun公司又被Oracle公司收购,目前属于Oracle公司。 MySQL是目前最流行的关系型数据库管理系统,在WEB应用方面MySQL是最…...
flink standalone集群模式部署
一. 环境准备 1、下载并安装jdk11 2、下载flink 并解压 3、确保服务器之间的免密登录 二、集群搭建 搭建集群至少有三台机器,每台机器的分配角色如下 master: jobManager salve01:taskManager salve02:taskManager 1、在JobManager(…...
Linux线程概念与控制:【线程概念(页表)】【Linux线程控制】【线程ID及进程地址空间布局】【线程封装】
目录 一. 线程概念 1.1什么是线程 1.2分页式存储管理 1.2.1虚拟地址和页表的由来 1.2.2物理内存管理 1.2.3页表 1.2.4页目录结构 1.2.5二级页表地址转换 1.3线程的优点 二.进程VS线程 三.Linux线程控制 3.1POSIX线程库 3.2创建线程 编辑 pthread库是个什么东西 …...
7-6 混合类型数据格式化输入
本题要求编写程序,顺序读入浮点数1、整数、字符、浮点数2,再按照字符、整数、浮点数1、浮点数2的顺序输出。 输入格式: 输入在一行中顺序给出浮点数1、整数、字符、浮点数2,其间以1个空格分隔。 输出格式: 在一行中…...
最新全开源码支付系统,赠送3套模板
最新全开源码支付系统,赠送3套模板 码支付是专为个人站长打造的聚合免签系统,拥有卓越的性能和丰富的功能。它采用全新轻量化的界面UI 让您能更方便快捷地解决知识付费和运营赞助的难题,同时提供实时监控和管理功能,让您随时随地…...
Eclipse Leshan 常见问题解答 (FAQ) 笔记
本笔记基于 Eclipse Leshan Wiki - F.A.Q. 页面内容,旨在解答关于 Eclipse Leshan(一个开源的 LwM2M 服务器和客户端 Java 实现)的常见问题,帮助您更好地理解和使用该工具。 一、Leshan 是什么,我该如何使用它&#x…...
【6】数据结构的栈篇章
目录标题 栈的定义顺序栈的实现顺序栈的初始化入栈出栈获取栈顶元素顺序栈总代码与调试 双端栈的实现双端栈的初始化入栈出栈双端栈总代码与调试 链栈的实现链栈的初始化入栈出栈获取栈顶元素链栈总代码与调试 栈的定义 定义:栈(Stack)是一种…...
开源虚拟化管理平台Proxmox VE部署超融合
Proxmox VE 是一个功能强大、开源的虚拟化平台,结合了 KVM 和 LXC,同时支持高可用集群、存储管理(ZFS、Ceph)和备份恢复。相比 VMware ESXi 和 Hyper-V,PVE 具有开源、低成本、高灵活性的特点,适用于中小企…...
C语言基础要素(019):输出ASCII码表
计算机以二进制处理信息,但二进制对人类并不友好。比如说我们规定用二进制值 01000001 表示字母’A’,显然通过键盘输入或屏幕阅读此数据而理解它为字母A,是比较困难的。为了有效的使用信息,先驱者们创建了一种称为ASCII码的交换代…...
函数柯里化(Currying)介绍(一种将接受多个参数的函数转换为一系列接受单一参数的函数的技术)
文章目录 柯里化的特点示例普通函数柯里化实现使用Lodash进行柯里化 应用场景总结 函数柯里化(Currying)是一种将接受多个参数的函数转换为一系列接受单一参数的函数的技术。换句话说,柯里化将一个多参数函数转化为一系列嵌套的单参数函数。 …...
基于大模型的主动脉瓣病变预测及治疗方案研究报告
目录 一、引言 1.1 研究背景 1.2 研究目的 1.3 研究意义 二、大模型预测主动脉瓣病变原理 2.1 大模型介绍 2.2 数据收集与处理 2.3 模型训练与优化 三、术前预测与评估 3.1 主动脉瓣病变类型及程度预测 3.2 患者整体状况评估 3.3 手术风险预测 四、术中应用与监测…...
VSCode开发者工具快捷键
自动生成浏览器文件.html的快捷方式 在文本里输入: ! enter VSCode常用快捷键列表 代码格式化:Shift Alt F向上或向下移动一行:Alt Up 或者 Alt Down快速复制一行代码:Shift Alt Up 或者 Shift Alt Down快速保…...
AI助力PPT制作,让演示变得轻松高效
AI助力PPT制作,让演示变得轻松高效!随着科技的进步,AI技术早已渗透到各行各业,特别是在办公领域,AI制作PPT已不再是未来的梦想,而是现实的工具。以前你可能需要花费数小时来制作一个完美的PPT,如…...
行业专家视角下的技术选型与任务适配深度解析
行业专家视角下的技术选型与任务适配深度解析 一、任务属性与技术栈的映射逻辑 (1)学术类项目需优先考虑技术严谨性、可复现性和理论深度: 机器学习模型开发:PyTorchJupyterMLflow形成完整实验闭环,TensorFlow Exte…...
从零构建大语言模型全栈开发指南:第五部分:行业应用与前沿探索-5.2.1模型偏见与安全对齐(Red Teaming实践)
👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 大语言模型全栈开发指南:伦理与未来趋势 - 第五部分:行业应用与前沿探索5.2.1 模型偏见与安全对齐(Red Teaming实践)一、模型偏见的来源与影响1. 偏见的定义与分类2. 偏见的实际影响案例二、安全对齐…...
JUC系列JMM学习之随笔
JUC: JUC 是 Java 并发编程的核心工具包,全称为 Java Util Concurrent,是 java.util.concurrent 包及其子包的简称。它提供了一套强大且高效的并发编程工具,用于简化多线程开发并提高性能。 CPU核心数和线程数的关系:1核处理1线程(同一时间单次) CPU内核结构: 工作内…...
OpenRouter开源的AI大模型路由工具,统一API调用
简介 OpenRouter是一个开源的路由工具,它可以绕过限制调用GPT、Claude等国外模型。以下是对它的详细介绍: 一、主要功能 OpenRouter专注于将用户请求智能路由到不同的AI模型,并提供统一的访问接口。它就像一个“路由器”,能…...
3.9/Q2,Charls最新文章解读
文章题目:Association between remnant cholesterol and depression in middle-aged and older Chinese adults: a population-based cohort study DOI:10.3389/fendo.2025.1456370 中文标题:中国中老年人残留胆固醇与抑郁症的关系࿱…...
水下图像增强与目标检测:标签缺失的“锅”?
水下图像增强与目标检测:标签缺失的“锅”? 在水下计算机视觉领域,图像增强和目标检测一直是研究热点。然而,一个有趣的现象引起了研究者的关注:在某些情况下,增强后的水下图像用于目标检测时,…...
从扩展黎曼泽塔函数构造物质和时空的结构-13
得到这些数据到底有什么用呢?无非都是振动,只有频率不同。电性振动和磁性振动的正交环绕关系,本质上只是某个虚数单位的平方倍数, 既然如此,我们就可以考虑,把电和磁当成同一种东西。比如通过改变真空介电常…...
Android学习总结之handler源码级
一、核心类关系与线程绑定(ThreadLocal 的核心作用) 1. Looper 与 ThreadLocal 的绑定 每个线程的 Looper 实例通过 ThreadLocal<Looper> sThreadLocal 存储,确保线程隔离: public final class Looper {// 线程本地存储&…...
多模态学习(八):2022 TPAMI——U2Fusion: A Unified Unsupervised Image Fusion Network
论文链接:https://ieeexplore.ieee.org/stamp/stamp.jsp?tp&arnumber9151265 目录 一.摘要 1.1 摘要翻译 1.2 摘要解析 二.Introduction 2.1 Introduciton翻译 2.2 Introduction 解析 三. related work 3.1 related work翻译 3.2 relate work解析 四…...
adb检测不到原来的设备List of devices attached解决办法
进设备管理器-通用串行总线设备 卸载无法检测到的设备驱动 重新拔插数据线...
探索高通骁龙光线追踪技术
什么是光线追踪? 光线追踪(Raytracing)是通过模拟现实世界中光线的传播过程并生成更加真实的效果的一种图形渲染技术。 早期在电影,动画,设计等领域已经使用软件摸拟光线追踪来渲染更加真实的图像。一般的做法是从相…...
qRegisterMetaType函数使用
一、有两种形式: 1、int qRegisterMetaType(const char *typeName) template <typename T> int qRegisterMetaType(const char *typeName #ifndef Q_CLANG_QDOC, T * dummy nullptr, typename QtPrivate::MetaTypeDefinedHelper<T, QMetaTypeId2<T&g…...
【北京化工大学】 神经网络与深度学习 实验6 MATAR图像分类
本次实验使用老师发的雷达奇妙数据 实验要求 读取图像形式的MASTAR数据 1、划分数据集为test/train 2、归一化 题目1:定义并训练线性分类器的神经网络 注:本次老师的要求是不限方法,使用pytorch尽可能提升精度 1、准备函数 #本文用的…...
Flutter 的开发环境搭建教程
为了配置Flutter的运行环境,首先我们需要确保你的开发环境支持Flutter,且相关工具都已经安装好。以下是详细的配置步骤: 1. 安装Flutter SDK Flutter是Google推出的用于开发跨平台应用的框架,支持Android、iOS、Web、桌面等多平台…...
MCP:让 AI 应用更聪明,只需几分钟
用 Leonardo.AI 和 FLUX Dev 模型生成(作者制作) 现在 AI 世界最新的趋势是 MCP(模型上下文协议)。 如果听起来无聊或者很复杂,别担心 —— 这是个非常简单又有效的工具,可以帮你从零开始构建更好的 AI 智能…...
【编程之路】动态格式化字符串
动态格式化字符串 1.代码功能2.关键组件解析3.完整流程4.示例场景5.注意事项6.典型用途7.总结 🚀 本文讨论的代码段来自《Python Cookbook》的《2.15.字符串中插入变量》。 针对下面这段代码,我们一起来分析一下。 class safesub(dict):""&qu…...
接收灵敏度的基本概念与技术解析
接收灵敏度是指接收机在特定条件下能够正确提取有效信号的最小输入功率。其技术原理可概括如下:灵敏度主要受热噪声、系统噪声系数及解调所需信噪比共同影响。根据公式(S 10lg(kTB) NF SNR)计算,其中k为玻尔兹曼常数(1.3810⁻ J/K…...
KUKA机器人软件WorkVisual更改语言方法
KUKA机器人的常用的工作软件WorkVisual软件在使用时也可以更改软件操作界面的语言。如果安装时语言没有选择中文,安装完成后也可以进行更改。以下通过WorkVisual 5.0版本进行简单介绍。 一、打开WorkVisual软件5.0版本; 二、在菜单栏选择【Ext…...
图形渲染: tinyrenderer 实现笔记(Lesson 5 - 7)
目录 Lesson 5: Gouraud shadingLesson 6: Shaders for the software rendererphongShading法线贴图Specular mapping 高光贴图tangent space normal mapping 切线空间法线贴图 Lesson 7: Shadow mapping GitHub主页:https://github.com/sdpyy 项目仓库:https://g…...
AiCube 试用 - 创建流水灯工程
AiCube 试用 - 创建流水灯工程 本文介绍了 Aiapp-ISP 仿真调试平台软件的 AiCube 工具,实现流水灯工程的快速创建的主要流程。 下载运行 下载 最新版 AIapp-ISP 软件; 解压并打开该软件,右侧操作界面选择并进入 Keil 仿真设置 标签项&…...
DBAPI设置服务器开机自启动
在 /etc/systemd/system 目录下创建一个新的服务文件,例如 dbapi.service [Unit] Descriptiondbapi standalone Service Afternetwork.target[Service] ExecStart/your-path/dbapi-enterprise-4.2.2/bin/dbapi.sh start standalone Restartalways Userroot[Install…...
“Nural”传感科技带给高速吹风筒的技术革命---其利天下技术
风筒界的革命,戴森将高速风筒带到了我们生活里,高速风筒的产生,将无刷电机的运用再一次向推到了我们新的产品领域。 然而随着智能家居领域的运用越来越广泛,戴森又将智能温控概念引入高速吹风筒,HD16引入“Nural”传感…...
DeepSeek-R1模型现已登录亚马逊云科技
在今年的Amazon re:Invent大会上,亚马逊CEO安迪贾西分享了公司内部开发近 1,000 个生成式 AI应用程序的经验教训。基于如此大规模的AI部署实践,贾西提出了三个关键观察,这些观察塑造了亚马逊在企业AI实施方面的方法。 第一点是,当…...
Python入门(8):文件
1. 文件基本概念 文件:存储在计算机上的数据集合,Python 通过文件对象来操作文件。 文件类型: 文本文件:由字符组成,如 .txt, .py 二进制文件:由字节组成,如 .jpg, .mp3 2. 文件打开与关闭…...
408 计算机网络 知识点记忆(4)
前言 本文基于王道考研课程与湖科大计算机网络课程教学内容,系统梳理核心知识记忆点和框架,既为个人复习沉淀思考,亦希望能与同行者互助共进。(PS:后续将持续迭代优化细节) 往期内容 408 计算机网络 知识…...
《Java编程思想》读书笔记:第九章 接口
目录 9.1抽象类和抽象方法 9.2接口 9.3完全解耦 9.4Java的多重继承 9.5通过继承来扩展接口 9.5.1组合接口时的名字冲突 9.6适配接口 9.7接口中的域 9.7.1初始化接口中的域 9.8嵌套接口 9.9接口与工厂 9.1抽象类和抽象方法 在第8章所有“乐器”的例子中,基…...
【gdutthesis模板】章节标题有英文解决方案
按下面格式修改代码即可 \section{中文{\rmfamily{English}}中文}{Chinese English Chinese}效果如下:...
【C语言入门】由浅入深学习指针 【第二期】
目录 1. 指针变量为什么要有类型? 2. 野指针 2.1 未初始化导致的野指针 2.2 指针越界导致的野指针 2.3 如何规避野指针 3. 指针运算 3.1 指针加减整数 3.2 指针减指针 3.3 指针的关系运算 4. 二级指针 5. 指针数组 5.1 如何使用指针数组模拟二维数组 上…...
循环神经网络 - 机器学习任务之异步的序列到序列模式
前面我们学习了机器学习任务之同步的序列到序列模式:循环神经网络 - 机器学习任务之同步的序列到序列模式-CSDN博客 本文我们来学习循环神经网络应用中的第三种模式:异步的序列到序列模式! 一、基本概述: 异步的序列到序列模式…...