当前位置: 首页 > news >正文

简单了解ARP协议

目录

一、什么是ARP协议?

二、为什么需要ARP协议?

三、ARP报文格式

四、广播域是什么?

五、ARP缓存表是什么?

六、ARP的类型

6.1 ARP代理

6.2 免费ARP

七、不同网络设备收到ARP广播报文的处理规则

八、ARP工作机制原理


一、什么是ARP协议?

我们知道主机或三层网络设备会在系统中维护一个用于数据传输的ARP表项,每次发送数据包前都会查询ARP表项来将数据包封装成带MAC地址的数据帧。所谓的ARP协议就是根据目标网络设备的IP地址来获取其对应的物理MAC地址。

二、为什么需要ARP协议?

由于现在的局域网使用的都是以太网技术标准,所有的数据包都会经过二层网络设备进行转发,因此这种处境下致使网络间的数据传输就必须将数据包封装成带MAC地址的数据帧,只有这样数据帧才能在二层网络中转发而ARP协议就是通过IP获取对端(NH下一跳)的MAC地址,并保存到设备的ARP缓存表中。

三、ARP报文格式

通过抓包获取到的ARP报文格式:

四、广播域是什么?

广播域即广播报文能够到达的区域就是一个广播域。在没vlan划分情况下一个网段就是一个广播域,广播一般不能通过三层转发。路由器可以隔离广播域,收到广播报文要么处理、要么丢弃,不会进行转发。

五、ARP缓存表是什么?

ARP表项存放的是设备IP地址与MAC地址的映射关系。

六、ARP的类型

6.1 ARP代理

同一网段、不同物理网络的主机之间,可以通过ARP代理实现通信

场景:同一网段、不同物理网络上的计算机之间通信,通过ARP代理服务。

1.主机A与主机B在同一网段,主机A发送ARP请求包

D.MAC(F)+S.MAC(A)    D.IP(B)+S.IP(A)

2.路由器收到主机A发的ARP广播包、拆包,发现请求目的IP与自己接收ARP广播帧的接口IP不在同一网段,检查有没有到主机B的路由(有 ),给主机A回应一个ARP响应包(目的ip、mac主机A,源IP是主机B、源MAC是自身G0/0/0的MAC地址)

3.主机A收到了ARP响应包,把主机B的Ip和路由器G0/0/0的映射存到ARP缓存表项里

4.主机A给主机B方发送一个单播报文(D.MAC是G0/0/0),发送到路由器

5.路由器拆包,查IP路由表有去往主机B的路由,把包转发给主机B,主机B在给主机A发送个回包。

6.2 免费ARP

检测本网段内是否有别的主机与自身的IP地址一样导致IP地址冲突带来的网络数据帧走向发生错误、造成设备视频卡顿等问题。

原理:设备会发送一个源IP和目的IP都是自身的ARP广播包,当有主机响应了此广播包,说明局域网中有主机在用和我同样的IP地址;没收到则说明没有冲突。一般在主机获取了新的IP地址后会自动触发免费ARP报文。

七、不同网络设备收到ARP广播报文的处理规则

PC计算机:

1.首先查看ARP广播报文的IP源地址与自身收到的ARP广播报文接口的IP地址是否在同一网段?在同一网段(不在同一网段则丢弃)----->检查ARP目的IP是否是发给自己的?是则回复ARP广播报文的发起者,不是则丢弃。

RT路由器:

首先检查ARP的源IP与本身接收ARP的接口IP是否在同一个网段(即检查ARP广播报文是否来自于同网段)是则处理,不是则丢弃。

1.当路由器收到ARP广播报文目标IP与自身收接口在同一网段(即ARP要获取的目的MAC是本网段的某台设备)----->如果目标IP是自身,则单播回复ARP发起者---->如果不是自身则丢弃。

2.当路由器收到的ARP请求目标IP与自身路由器不在同一网段时,如果该设备开启了ARP代理,并检查到有去往目标IP的路由,则会冒充目标主机给ARP广播报文的发起者回复一个以源地址是目标IP,源MAC是自身MAC的ARP回复包,这样ARP广播报文发起者(本网段的另一个路由器)下次在与非本网段的PC通信时,数据包的会先发给代理路由器,在由代理路由器发给PC。

八、ARP工作机制原理

说明:使用静态手动给路由器配置目的网络路由时若下一跳设置为本路由器出接口,则路由器认为此目的网络与自己直连。因此所有使用此静态路由的数据包在通过路由器进行转发时,路由器会认为是数据包可以直接到达目的主机,所以触发的ARP数据包请求的目标IP也会是目的主机的IP地址。

例如:在AR1上通过静态出接口的方式指定了10.0.23.0/24的路由下一跳G0/0/0做出接口。

1、AR1主机ping 10.0.23.2时查本地路由表发现下一跳是自身G0/0/0做出接口、认为目标主机与自己直连。

2、根据目标主机10.0.23.2查找本地ARP缓存表发现没有其所对应的MAC地址,于是触发ARP广播包(S_mac: AR1   D_mac: 全f ,S_ip: 10.0.12.1  D_ip: 10.0.23.2)。

3、AR2的G0/0/0接口接收到ARP请求包后:

●检查ARP数据包所请求的目的IP是否与自己本身接收此ARP数据包的G0/0/0接口在同一网段:

●在同一网段----->检查ARP数据包请求目的IP是否是自身本地的IP地址,如果是则单播回复AR1告诉其自身IP所对应的MAC地址。如果不是则不做任何回复。同时在本地ARP缓存表中会记录AR1的目的IP所对应的IP地址。

●如果不在同一网段,并且AR2路由器没有开启Arp 路由代理,则会丢弃其ARP请求数据包,不予回复(例如:本次案例AR1因获取不到10.0.23.2所对应的mac地址无法与AR2的G0/0/1通信。直连网段通过静态出接口配置的环回口路由之间也会因此无法互通)。

解决办法:

●静态手动配置的路由下一跳通过IP地址来指定。

●在接收ARP包的路由器接口下开启ARP路由代理功能。

因此,路由器在处理ARP请求数据包时会检查请求目标IP是否与接收此ARP广播包的接口在同一网段,如果不在(没有开启ARP路由代理)则不会对ARP请求数据包做任何处理,即路由器会认为ARP数据包所请求的目标IP不跟自己在同一个广播域,不予处理。如果在同一网段并且请求的目标IP是自己本地的IP地址,则会给予回复告诉请求者自身的mac地址。

@声明:“山月润无声”博主知识水平有限,以上文章如有不妥之处,欢迎广大IT爱好者指正,小弟定当虚心受教!

相关文章:

简单了解ARP协议

目录 一、什么是ARP协议? 二、为什么需要ARP协议? 三、ARP报文格式 四、广播域是什么? 五、ARP缓存表是什么? 六、ARP的类型 6.1 ARP代理 6.2 免费ARP 七、不同网络设备收到ARP广播报文的处理规则 八、ARP工作机制原理 …...

【Linux】Stratis是什么?Stratis和LVM有什么关系和区别?

背景核心特性Stratis与LVM 的联系与区别感谢 💖 背景 在过去,Linux 用户通常依赖于多个工具和技术来管理存储资源,包括 LVM、mdadm、文件系统工具等。这些工具各自有自己的特点和用途,但也带来了复杂性和学习曲线。Stratis 的出现…...

植物大战僵尸修改金币【Steam下版本可行-其他版本未知】

#0.目的找到user1.dat文件,并修改其值 先关闭退出游戏 #1.找到植物大战僵尸的启动快捷方式-鼠标右键-属性-Web文档-URL-[steam://rungameid/3590] 记住这个【3590】 #2.Steam安装位置下有个【userdata】文件夹 #3.找到这个目录【xxxx\Steam\userdata\850524626\…...

GIS:生成Shp文件

/*** 生成shape文件** param shpPath 生成shape文件路径(包含文件名称)* param encode 编码* param geoType 图幅类型,Point和Rolygon* param geoms 图幅集合*/public static void write2Shape(String shpPath, String encode, String geo…...

【日常笔记】使用Server过程中可能遇到的一些问题

使用Server过程中可能遇到的一些问题 1. 如何查找GPU型号与驱动版本之间的关系?2. 如何查看当前Server的内核版本?3. 使用Nvidia过程中可能用到的命令4. 对Jupyter Notebook的一些配置5. TensorFlow的一般操作6. 使用PyTorch的一些操作7. 修改安装源为国…...

【Mysql】给查询记录增加序列号方法

在MySQL 8.0版本中,你可以使用ROW_NUMBER()函数来添加序号。以下是一个示例查询,演示如何添加序号: SELECT ROW_NUMBER() OVER (ORDER BY column_name) AS serial_number,column1, column2, ... FROMyour_table;请将column_name替换为你想要…...

Linux 安装elasticsearch-7.5.1

相关链接 官⽹: https://www.elastic.co/cn/downloads/elasticsearch 下载: wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.5.1-linux-x86_64.tar.gz 分词器: https://github.com/medcl/elasticsearch-an…...

ElementUI浅尝辄止26:Notification 通知

悬浮出现在页面角落,显示全局的通知提醒消息。 1.如何使用? 适用性广泛的通知栏 //Notification 组件提供通知功能,Element 注册了$notify方法,接收一个options字面量参数,在最简单的情况下,你可以设置tit…...

IDEA新建的Moudle失效显示为灰色

现象:IDEA新建的Moudle失效显示为灰色!!! 解决方案: 1. 右键点击父模块,选择Open Moudle Settings: 2. 点击加号,选择Import Moudle - 导入模块: 3. 找到对应模块的po…...

Protobuf的简单使用

一.protobuf是什么? Protobuf,全称为Protocol Buffers(协议缓冲区),是一种轻量级的数据序列化格式。它由Google开发,用于高效地存储和传输结构化数据。 与其他常见的数据序列化格式(如XML和JS…...

OpenCV 12(图像直方图)

一、图像直方图 直方图可以让你了解总体的图像像素强度分布,其X轴为像素值(一般范围为0~255),在Y轴上为图像中具有该像素值像素数。 - 横坐标: 图像中各个像素点的灰度级. - 纵坐标: 具有该灰度级的像素个数. 画出上图的直方图: …...

LeetCode 面试题 03.06. 动物收容所

文章目录 一、题目二、C# 题解 一、题目 动物收容所。有家动物收容所只收容狗与猫,且严格遵守“先进先出”的原则。在收养该收容所的动物时,收养人只能收养所有动物中“最老”(由其进入收容所的时间长短而定)的动物,或…...

快速理解DDD领域驱动设计架构思想-基础篇 | 京东物流技术团队

1 前言 本文与大家一起学习并介绍领域驱动设计(Domain Drive Design) 简称DDD,以及为什么我们需要领域驱动设计,它有哪些优缺点,尽量用一些通俗易懂文字来描述讲解领域驱动设计,本篇并不会从深层大论述讲解落地实现,这…...

C++学习笔记(堆栈、指针、命名空间、编译步骤)

C 1、堆和栈2、指针2.1、指针的本质2.2、指针的意义2.3、清空指针2.4、C类中的this 3、malloc and new4、命名空间4.1、创建命名空间4.2、使用命名空间 5、编译程序的四个步骤5.1、预处理5.2、编译5.3、汇编5.4、链接 1、堆和栈 堆(heap)和栈&#xff0…...

Rust Yew应用开发的事件初探

在Rust的世界中有一个叫Yew的框架,它借鉴了React的思想。我的React代码也写了不少,今天就聊一下我个人对Yew应用开发中事件相关部分的体验。 我的也是才开始学习Rust和Yew,说得不对的地方还请大家多多指教。 下面的例子涉及到3个组件 Paren…...

高并发下单例线程安全

1.使用静态内置类实现单例模式 自定义线程池 2.使用static代码块实现单例 3.使用静态内置类实现单例模式 4.使用static代码块实现单例 public class MySingleton {//使用volatile关键字保其可见性volatile private static MySingleton instance null;private MySingleton…...

【EKF】EKF原理

原理简述 卡尔曼滤波可以在线性模型,误差为高斯模型的情况下,对目标状态得出很好的估计效果,但如果系统存在非线性的因素,其效果就没有那么好了。比较典型的非线性函数关系包括平方关系,对数关系,指数关系…...

蓝桥杯官网填空题(古堡算式)

题目描述 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。 福尔摩斯到某古堡探险,看到门上写着一个奇怪的算式:ABCDE ∗ ?EDCBA 他对华生说:“ABCDE 应该代表不同的数字,问号…...

Python---集合set

集合特点 1. 可以容纳多个数据 2. 可以容纳不同类型的数据 3.数据是无序存储的(不支持下标索引) 4. 不允许重复数据存在 5. 可以修改 6. 支持for循环,不支持while循环 集合定义 # 定义集合 变量 {元素1, 元素2, 元素3, 元素4...}# 定…...

LORA项目源码解读

大模型fineturn技术中类似于核武器的LORA,简单而又高效。其理论基础为:在将通用大模型迁移到具体专业领域时,仅需要对其高维参数的低秩子空间进行更新。基于该朴素的逻辑,LORA降低大模型的fineturn门槛,模型训练时不需…...

ubuntu搭建nfs服务centos挂载访问

在Ubuntu上设置NFS服务器 在Ubuntu上,你可以使用apt包管理器来安装NFS服务器。打开终端并运行: sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享,例如/shared: sudo mkdir /shared sud…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件

在选煤厂、化工厂、钢铁厂等过程生产型企业,其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进,需提前预防假检、错检、漏检,推动智慧生产运维系统数据的流动和现场赋能应用。同时,…...

跨链模式:多链互操作架构与性能扩展方案

跨链模式:多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈:模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展(H2Cross架构): 适配层&#xf…...

(转)什么是DockerCompose?它有什么作用?

一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用,而无需手动一个个创建和运行容器。 Compose文件是一个文本文件,通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...

GitFlow 工作模式(详解)

今天再学项目的过程中遇到使用gitflow模式管理代码,因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存,无论是github还是gittee,都是一种基于git去保存代码的形式,这样保存代码…...

深入理解Optional:处理空指针异常

1. 使用Optional处理可能为空的集合 在Java开发中,集合判空是一个常见但容易出错的场景。传统方式虽然可行,但存在一些潜在问题: // 传统判空方式 if (!CollectionUtils.isEmpty(userInfoList)) {for (UserInfo userInfo : userInfoList) {…...

用鸿蒙HarmonyOS5实现中国象棋小游戏的过程

下面是一个基于鸿蒙OS (HarmonyOS) 的中国象棋小游戏的实现代码。这个实现使用Java语言和鸿蒙的Ability框架。 1. 项目结构 /src/main/java/com/example/chinesechess/├── MainAbilitySlice.java // 主界面逻辑├── ChessView.java // 游戏视图和逻辑├──…...

华为OD最新机试真题-数组组成的最小数字-OD统一考试(B卷)

题目描述 给定一个整型数组,请从该数组中选择3个元素 组成最小数字并输出 (如果数组长度小于3,则选择数组中所有元素来组成最小数字)。 输入描述 行用半角逗号分割的字符串记录的整型数组,0<数组长度<= 100,0<整数的取值范围<= 10000。 输出描述 由3个元素组成…...

【HarmonyOS 5】鸿蒙中Stage模型与FA模型详解

一、前言 在HarmonyOS 5的应用开发模型中&#xff0c;featureAbility是旧版FA模型&#xff08;Feature Ability&#xff09;的用法&#xff0c;Stage模型已采用全新的应用架构&#xff0c;推荐使用组件化的上下文获取方式&#xff0c;而非依赖featureAbility。 FA大概是API7之…...

英国云服务器上安装宝塔面板(BT Panel)

在英国云服务器上安装宝塔面板&#xff08;BT Panel&#xff09; 是完全可行的&#xff0c;尤其适合需要远程管理Linux服务器、快速部署网站、数据库、FTP、SSL证书等服务的用户。宝塔面板以其可视化操作界面和强大的功能广受国内用户欢迎&#xff0c;虽然官方主要面向中国大陆…...