ARP协议定义及工作原理
ARP的定义
地址解析协议(Address Resolution Protocol,ARP):ARP协议可以将IPv4地址(一种逻辑地址)转换为各种网络所需的硬件地址(一种物理地址)。换句话说,所谓的地址解析的目标就是发现逻辑地址与物理地址的映射关系。 ARP仅用于IPv4协议,IPv6使用邻居发现协议(NDP)替代。
ARP协议目前最广泛应用于寻找32位IPv4地址与以太网的48位MAC地址之间的映射。
ARP --地址解析协议 通过对端的一种地址来获取对端另一种地址
AARP 正向ARP -- 已知同一网段的ip地址,通过广播来获取该ip对应的MAC地址
反向ARP --- 已知对端的MAC地址,获取本地的ip地址;
FARP -- 无故ARP 使用AARP,来查询本地的ip地址; --- 用于ip地址的冲突检测
重复或地址冲突检测(手动配置/DHCP获取到IP地址后首先发一个无故ARP检查网络中是否有地址与自己的冲突,如果没有接收到回复,该地址才能正常使用)
二级地址(物理地址和逻辑地址)
物理地址:制造商给定的永久的,将其存储在设备永久性内存中,是网络适配器的ID(相当于身份证)注意,物理地址是和网络适配器绑定的,如果主机更换了网络适配器,那么它的物理地址也会相应改变。-----使用在tcp/ip分层中的数据链路层和物理层
逻辑地址:IP地址,由软件实现,不固定,通常从某个网络的IP地址池中获取,若改变网络环境,IP地址也会发生变化。-------使用在网络层、传输层和应用层
为什么使用IP地址
IP地址有良好的分层。如果分组转发到同一子网,只需要在路由表中记录统一的网络前缀。比如,一个子网有6000个IP地址,对应6000个物理地址。记录IP地址网络前缀只需要1行,记录物理地址则需要6000行,所以IP地址能够大大节省路由器资源,提高工作效率。
ARP工作原理
ARP协议主要依赖ARP高速缓存(ARP cache)。ARP高速缓存就是一个映射表,它记录了IP地址和物理地址的映射关系。每一台主机和路由器都设有ARP高速缓存,在实际传输中,通常已知下一跳的目的IP地址,通过查询ARP高速缓存即可知道对应的物理地址。
如何建立ARP高速缓存----------广播ARP请求分组
ARP请求分组有3个重要信息:1.源IP地址。2.对应的源物理地址。3.目的IP地址。
查询的内容为:对应的目的物理地址。
以下是具体步骤:
一、源主机或者路由器会给该网络的所有主机发送ARP请求分组(也就是给这个网络广播该分组),所有主机会检查分组的目的IP地址是否与自身的IP地址相同。如果不相同,就丢弃该分组;如果相同,就说明自己就是被寻找的目的主机或者路由器。
二、目的主机(或目的路由器)在收到ARP请求分组后,会做两件事:
1.将源主机的IP地址和对应的物理地址添加进自身的ARP高速缓存映射表。
这是因为既然源主机会和自己通信,那么自己之后也可能会主动和源主机通信,提前建立源主机的映射表项是有必要的,之后自己要主动和源主机通信就不用广播ARP请求分组了。
2.给源主机发送ARP响应报文(注意,该报文是单播的----因为目的主机已经由源主机的物理地址,可以直接给源主机发对应帧)
目的主机需要给源主机发送ARP响应报文,告知源主机自己的物理地址。源主机在收到所需的ARP响应报文,就可以发送帧给目的主机了。
为什么是单播而不是广播呢?那是因为目的主机已经有源主机的物理地址了,可以直接给源主机发送对应的帧,不需要广播。
三、当源主机接收到ARP响应报文后,也会将目的主机的IP地址和对应的物理地址添加到自己的ARP高速缓存映射表中,这样下次再和该主机通信,就不用广播ARP分组了。之后就可以通过物理地址,给目的主机发送帧了。
ARP协议是在单个网络内部运行的。如果源主机和目的主机不在一个网络中,必须多次使用ARP协议。无论情况多复杂,都是由以下4种情况组合而成的。
如果源主机和目的主机在一个网络中,这就很简单,源主机直接通过ARP协议寻找目的主机的物理地址。也就是情况1:源主机直接通过ARP协议寻找同一个网络下目的主机的物理地址。
如果源主机和目的主机不在一个网络中,就必须通过路由器路由。通过查找路由表,将目的主机的IP地址转换为下一跳的IP地址。再通过ARP协议,将下一跳的IP地址转换为对应的物理地址。
细分有3种情况:
情况2:源主机寻找下一跳路由器的物理地址。
情况3:路由器寻找在同一个网络中的目的主机的物理地址。
情况4:路由器和目的主机不在同一个网络中,路由器A寻找下一条路由器B的物理地址。
高速缓存的生存周期
ARP高速缓存是动态的,而且缓存记录的映射项有生存周期,一般默认是20分钟。超过生存周期,那条映射就会从映射表中移除。
为什么需要设置生存周期呢?
是因为物理地址和IP地址都可能改变。比如目的主机更换了网络适配器,那么目的主机的物理地址就改变了。
如果源主机通过查看ARP映射表得到了目的主机以前的物理地址,肯定是无法正常通信的。但随着该表项生存周期到时,源主机会重新广播ARP请求分组,这样就可以得到目的主机新的物理地址。从而和目的主机正常通信。
ARP报文格式
硬件类型:该字段有16bit。指定运行ARP协议的物理网络类型,ARP协议可以运行在任何物理网络上。以太网是类型1。
协议类型:该字段有16bit。指定高层协议的类型。ARP可用于任何高层协议。IPv4协议的值为0x0800。
硬件长度:该字段有8bit。定义物理地址的长度,以字节为单位。对于以太网,该值为6字节。
协议长度:该字段有8bit。定义逻辑地址的长度,以字节为单位。对于IPv4,该值为4字节。
操作:该字段有16bit。用于定义分组类型,目前常用2种。ARP请求分组和ARP响应分组。
发送方硬件地址:记录发送方的物理地址。
发送方协议地址:记录发送方的逻辑地址。
接收方硬件地址:如果是ARP请求报文,由于不知道接收方的物理地址(请求报文就是通过广播询问接收方物理地址,当然事先不知道),该字段全部填充为0。
接收方协议地址:记录接收方的逻辑地址。
封装ARP协议
ARP协议是很特殊的协议,它像是介于网络层和链路层之间的协议。
ARP协议是封装在帧中的,就像IPv4协议封装在以太网帧一样,从这个角度讲,ARP协议像网络层协议。
但是ARP协议是为网络层协议服务的,从服务的角度讲,它又像链路层协议。
实际中,ARP协议常封装在以太网帧中。
当广播ARP请求分组时,该网络中的所有主机都会从以太网帧中提取出ARP协议分组,检查接收方协议地址字段,如果和自身IP地址不相同,就丢弃该分组。如果相同,说明自身的物理地址就是被寻找的地址。就需要给发送方回复ARP响应分组(通过单播)。
ARP的响应报文会将发送方硬件地址字段和发送方协议地址字段填写成自身的物理地址和IP地址。将接收方硬件地址和接收方协议地址填写为ARP请求报文的发送方硬件地址和发送方协议地址。
抓包分析
抓取ARP请求报文
从上图可知,ARP协议被封装在Ethernet协议(以太网协议)中。
我们先看Ethernet II部分:
Destination(目的物理地址)字段的值为:ff:ff:ff:ff:ff:ff
说明该以太网帧是广播帧,和ARP请求分组是通过广播形式发送吻合。
Source(源物理地址)字段的值为:50:eb:f6:56:ca:57
这是发送方主机的物理地址,和ARP协议的Sender MAC address字段的值完全吻合。
Type字段为:ARP(0x0806)。
说明该以太网帧封装的是一个ARP协议分组。
再看ARP协议部分:
前4个字段表明物理地址和逻辑地址的类型和长度,和之前讲解的吻合。
第五个字段Opcode的值为1,说明是ARP请求报文。
后面4个字段是源物理地址和IP地址,以及目标物理地址和IP地址。
值得注意的是,目标物理地址正如之前所说,全部填充的0。因为该字段正是ARP请求报文需要获取的,目前不知,只能全部填充为0。
查看ARP高速缓存
在windows系统的终端,输入arp -a命令可以显示ARP缓存中的所有条目。
静态映射与动态映射
可以看到,ARP高速缓存中,有的是静态映射,有的是动态映射。
通过ARP协议动态配置的表项就是动态映射。发送方检查ARP缓存,如果没找到所需物理地址,就发送ARP请求报文,并得到ARP响应报文。之后再将对应的映射添加到ARP映射表上。这种方式得到的映射表项就是动态映射。
通过手动方式添加的表项就是静态映射。这种方式添加的表项比较死板,因为对应的映射关系不一定固定不变。但是,静态映射更加安全,不会被攻击者通过ARP请求响应报文添加错误的映射关系。
相关文章:
ARP协议定义及工作原理
ARP的定义 地址解析协议(Address Resolution Protocol,ARP):ARP协议可以将IPv4地址(一种逻辑地址)转换为各种网络所需的硬件地址(一种物理地址)。换句话说,所谓的地址解析的目标就是发现逻辑地址与物理地址的映射关系。 ARP仅用于IPv4协议&a…...
express实现用户登录和注册接口
目录 1 创建数据库2 连接数据库3 集成ORM库4 创建业务逻辑5 创建路由7 测试接口总结 我们在编写后端接口的时候操作数据库是一种常见的功能需求,express本身并不提供直接操作数据库的能力,需要借助第三方库来操作数据库,本篇讲解一下软件开发…...
数字化转型,效率增长才是王道
在当今商业世界,数字化已经成为推动企业增长的强大引擎。然而,值得注意的是,数字化并非只是简单地追求规模扩张,更重要的是实现降本增效。没有效率的增长,就像是在加速自我毁灭。在数字化转型的道路上,企业…...
RHCE-2-chrony服务器
简介 重要性 由于IT系统中,准确的计时非常重要,有很多种原因需要准确计时: 在网络传输中,数据包括和日志需要准确的时间戳 各种应用程序中,如订单信息,交易信息等 都需要准确的时间戳 Linux的两个时钟 硬…...
音频RK809
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、目的二、知识准备2.1Audio框架2.1.1 DAI2.1.2 CODEC2.1.3 machine三、原理图3.1 整体原理图3.2 喇叭部分3.3 麦克风部分四、设备树4.1 sound 部分4.2 codec 部分五、驱动讲...
解决 linux 服务器 java 命令不生效问题
在Linux系统中,当你安装Java并设置了JAVA_HOME环境变量后,你可能需要使用source /etc/profile命令来使Java命令生效。这是因为/etc/profile是一个系统级的配置文件,它包含了系统的全局环境变量设置。 但是需要注意的是,source /e…...
22 多态
目录 多态的概念多态的定义及实现抽象类多态的原理单继承和多继承关系中的虚函数表继承和多态常见的面试问题 前言 需要声明的,下面的代码和解释的哦朴实vs2013x86环境,涉及指针是4bytes,如果要其他平台下,部分代码需要改动。比…...
排序算法超详细代码和知识点整理(java版)
排序 1、冒泡排序 两层循环,相邻两个进行比较,大的推到后面去,一共比较“数组长度”轮,每一轮都是从第一个元素开始比较,每一轮比较都会将一个元素固定到数组最后的一个位置。【其实就是不停的把元素往后堆&#…...
Java复习第十二天学习笔记(JDBC),附有道云笔记链接
【有道云笔记】十二 3.28 JDBC https://note.youdao.com/s/HsgmqRMw 一、JDBC简介 面向接口编程 在JDBC里面Java这个公司只是提供了一套接口Connection、Statement、ResultSet,每个数据库厂商实现了这套接口,例如MySql公司实现了:MySql驱动…...
Python从零到一构建GPT模型
只用Python和 torch框架,从零到一构建GPT模型,对大语言模型入门,了解GPT的内部网络结构,是一个很好示例。 Build_GPT_from_Scratch.ipynb...
V R虚拟现实元宇宙的前景|虚拟现实体验店加 盟合作|V R设备在线购买
VR(虚拟现实)技术作为一种新兴的技术,正在逐渐改变人们的生活和工作方式。随着技术的不断进步,人们对于元宇宙的概念也越来越感兴趣。元宇宙是一个虚拟世界,通过VR技术可以实现人们在其中进行各种活动和交互。 元宇宙的…...
大话设计模式之策略模式
策略模式是一种行为设计模式,它允许在运行时选择算法的行为。这种模式定义了一族算法,将每个算法都封装起来,并且使它们之间可以互相替换。 在策略模式中,一个类的行为或其算法可以在运行时改变。这种模式包含以下角色࿱…...
蓝桥杯23年第十四届省赛真题-三国游戏|贪心,sort函数排序
题目链接: 1.三国游戏 - 蓝桥云课 (lanqiao.cn) 蓝桥杯2023年第十四届省赛真题-三国游戏 - C语言网 (dotcpp.com) 虽然这道题不难,很容易想到,但是这个视频的思路理得很清楚: [蓝桥杯]真题讲解:三国游戏࿰…...
P15:PATH环境变量
为什么要配置环境变量 当我们打开DOS窗口,输入:javac,出现下面问题。 原因:windows操作系统在当前目录中无法找到javac命令文件。Windows操作系统是如何搜索硬盘上某一个命令? 首先从当前目录中搜索该命令如果当前目录…...
math模块篇(七)
文章目录 math.dist(p, q)math.hypot(*coordinates)math.sin(x)math.tan(x)math.degrees(x)math.radians(x)math.acosh(x)math.asinh(x)math.atanh(x) math.dist(p, q) 在Python的math模块中,并没有一个名为math.dist(p, q)的函数。可能你是想要计算两点p和q之间的…...
wordpress插件,免费的wordpress插件
WordPress作为世界上最受欢迎的内容管理系统之一,拥有庞大的插件生态系统,为用户提供了丰富的功能扩展。在内容创作和SEO优化方面,有一类特殊的插件是自动生成原创文章并自动发布到WordPress站点的工具。这些插件能够帮助用户节省时间和精力&…...
Remote Desktop Manager for Mac:远程桌面管理软件
Remote Desktop Manager for Mac,是远程桌面管理的理想之选。它集成了多种远程连接技术,无论是SSH、RDP还是VNC,都能轻松应对,让您随时随地安全访问远程服务器和工作站。 软件下载:Remote Desktop Manager for Mac下载…...
如何撰写研究论文
SEVENTYFOUR/SHUTTERSTOCK 即使对于有经验的作家来说,将数月或数年的研究浓缩到几页纸中也是一项艰巨的任务。作者需要在令人信服地解决他们的科学问题和详细地呈现他们的结果之间找到最佳平衡点,以至于丢失了关键信息。他们必须简明扼要地描述他们的方…...
数据结构
一、栈 先进后出 二、队列 先进先出 三、数组 查询快,增加修改慢 四、链表 查询慢,增加修改慢 五、二叉树 节点: 查找二叉树 二叉查找树的特点 二叉查找树,又称二叉排序树或者二叉搜索树 每一个节点上最多有两个子节点 左子树上所…...
动态规划相关题目
文章目录 1.动态规划理论基础2.斐波那契数3.爬楼梯4.使用最小花费爬楼梯5.不同路径6.不同路径 II7. 整数拆分8. 不同的二叉搜索树 1.动态规划理论基础 1.1 什么是动态规划? 动态规划,英文:Dynamic Programming,简称DP,如果某一…...
iOS - Runtime - Class-方法缓存(cache_t)
文章目录 iOS - Runtime - Class-方法缓存(cache_t)1. 散列表的存取值 iOS - Runtime - Class-方法缓存(cache_t) Class内部结构中有个方法缓存(cache_t),用散列表(哈希表)来缓存曾经调用过的方法,可以提高…...
2014年认证杯SPSSPRO杯数学建模B题(第一阶段)位图的处理算法全过程文档及程序
2014年认证杯SPSSPRO杯数学建模 B题 位图的处理算法 原题再现: 图形(或图像)在计算机里主要有两种存储和表示方法。矢量图是使用点、直线或多边形等基于数学方程的几何对象来描述图形,位图则使用像素来描述图像。一般来说&#…...
【物联网项目】基于ESP8266的家庭灯光与火情智能监测系统——文末完整工程资料源码
目录 系统介绍 硬件配置 硬件连接图 系统分析与总体设计 系统硬件设计 ESP8266 WIFI开发板 人体红外传感器模块 光敏电阻传感器模块 火焰传感器模块 可燃气体传感器模块 温湿度传感器模块 OLED显示屏模块 系统软件设计 温湿度检测模块 报警模块 OLED显示模块 …...
Unity中控制帧率的思考
如何控制帧率: 在Unity中,你可以通过设置Application.targetFrameRate来限制帧率。 例如,如果你想将帧率限制为16帧, 你可以在你的代码中添加以下行: Application.targetFrameRate 16; 通常,这行代码会放在…...
阿里云子域名配置,且不带端口访问
进入阿里云控制台,创建一个SSL证书 # 域名名称child.domain.com创建完成后,将返回主机记录以及记录值,保存好,用于下一步使用 创建DNS解析 创建DNS的TXT类型解析 选择记录类型:TXT 填写主机记录:_dnsa…...
C#-ConcurrentDictionary用于多线程并发字典
ConcurrentDictionary 是 .NET Framework 中用于多线程并发操作的一种线程安全的字典集合类。它提供了一种在多个线程同时访问和修改字典时保持数据一致性的机制。 以下是 ConcurrentDictionary 类的一些重要特性和用法: 线程安全性:ConcurrentDictiona…...
深入探讨多线程编程:从0-1为您解释多线程(下)
文章目录 6. 死锁6.1 死锁原因 6.2 避免死锁的方法加锁顺序一致性。超时机制。死锁检测和解除机制。 6. 死锁 6.1 死锁 原因 系统资源的竞争:(产生环路)当系统中供多个进程共享的资源数量不足以满足进程的需要时,会引起进程对2…...
深度学习pytorch——减少过拟合的几种方法(持续更新)
1、增加数据集 2、正则化(Regularization) 正则化:得到一个更加简单的模型的方法。 以一个多项式为例: 随着最高次的增加,会得到一个更加复杂模型,模型越复杂就会更好的拟合输入数据的模型(图-1)&#…...
排序第五篇 归并排序
一 简介 归并排序(Merge Sort) 的基本思想是: 首先将待排序文件看成 n n n 个长度为1的有序子文件, 把这些子文件两两归并, 得到 n 2 \frac{n}{2} 2n 个长度为 2 的有序子文件; 然后再把这 n 2 \frac{n}{2} 2n 个有序的子…...
【Win】使用PowerShell和Webhooks轻松发送消息至Microsoft Teams
Microsoft Teams是一款由微软开发的团队协作和通讯工具。如果您对这个名字还不太熟悉,那么现在就是一个了解它的好时机。微软将Teams定位为其之前Skype for Business解决方案的继任者,并且它也提供了与其他基于频道的通讯应用程序(例如Slack、…...
如何做ps4游戏视频网站/太原做网站的
http://codeforces.com/problemset/problem/301/B 大意是这样的:从1点经过k点到达n点,开始出发的时间是极短的(0.X),其中途中点可以给予不同的time资源,不同点之间的距离是曼哈顿距离——|x1-x2||y1-y2|。问还需要多少时间能到达…...
做推文的网站/企业官网搭建
oracle 12C 自动化静默安装脚本 项目地址: github: https://github.com/spdir/oracle-single-install 下载安装脚本 wget https://raw.githubusercontent.com/spdir/oracle-single-install/master/oracle_install.sh && \ chmod x oracle_install.sh 脚本使…...
商丘网站制作软件/项目推广方案怎么写
最近在用swagger写API手册,写一堆注解后,启动Java工程,API文档就自动生成了,打开swagger-ui.html,效果是这样的。上面可以执行RestAPI,但是用来阅读,非常不得劲。 因为,我们想要下面…...
网站诊断方案/学校seo推广培训班
Redhat Linux网卡及IP设置单网卡多IP例:将eht0 添加新地址 eth0:1拷贝/etc/sysconfig/network-scripts/ifcfg-eth0文件为ifcfg-eth0:1修改其中DEVICEeth0:1根据需要修改IP地址(IPADD)和掩码(NETMASK),可以删除NETWORK、BROADCAST、HWADDR重启网络服务#service netwo…...
wordpress twenty six/百度sem代运营
spinlock设计成了三层,第一层是接口,第二层raw实现层,第三层是CPU平台层。在第二层raw实现层提供了两个分支,分别是单CPU和多CPU(核)。第三层是不同CPU的锁操作实现。raw层除了调用锁操作来保护临界资源外&…...
会展设计用什么软件/石家庄抖音seo
这里我们来谈论下函数式编程中另一个重要的概念,柯里化 首先,我们先通过下面的方式将上节代码中不纯的函数变成纯函数。就是将mini拿到函数内部去。 function checkAge (age) {let mini 18;return age > mini; }但是当我们把这个mini拿到函数内部的…...