ARP协议定义及工作原理

news2025/2/2 15:56:03

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请求响应报文添加错误的映射关系。
 

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

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

相关文章

QT资源添加调用

添加资源文件&#xff0c;新建资源文件夹&#xff0c;命名resource&#xff0c;然后点下一步&#xff0c;点完成 资源&#xff0c;右键add Prefix 添加现有文件 展示的label图片切换 QLabel *led_show; #include "mainwindow.h" #include<QLabel> #include&l…

海豚【货运系统源码】货运小程序【用户端+司机端app】源码物流系统搬家系统源码师傅接单

技术栈&#xff1a;前端uniapp后端vuethinkphp 主要功能&#xff1a; 不通车型配置不通价格参数 多城市定位服务 支持发货地 途径地 目的地智能费用计算 支持日期时间 预约下单 支持添加跟单人数选择 支持下单优惠券抵扣 支持司机收藏订单评价 支持订单状态消息通知 支…

ps 常用命令

ps 常用命令 什么是ps&#xff1f; ps是process status的缩写&#xff0c;用于查看当前系统中运行的进程信息。它提供了关于进程的各种详细信息&#xff0c;如进程 PID、进程状态、CPU 使用情况、内存占用、运行时间等。 常用选项参数 -A &#xff1a;所有的进程均显示出来…

JZ-7-201XMT跳位合位监视专用继电器 220VDC 板后接线,面板安装 JOSEF约瑟

系列型号&#xff1a; JZ-7Y-201XMT跳位合位监视继电器&#xff1b; JZ-7J-201XMT跳位合位监视继电器&#xff1b; JZ-7Y-203XMT跳位合位监视继电器&#xff1b; JZ-7J-203XMT跳位合位监视继电器&#xff1b; JZ-7Y-204XMT跳位合位监视继电器&#xff1b; JZ-7J-204XMT跳…

【御控物联】JavaScript JSON结构转换(11):数组To数组——综合应用

文章目录 一、JSON结构转换是什么&#xff1f;二、术语解释三、案例之《JSON数组 To JSON数组》四、代码实现五、在线转换工具六、技术资料 一、JSON结构转换是什么&#xff1f; JSON结构转换指的是将一个JSON对象或JSON数组按照一定规则进行重组、筛选、映射或转换&#xff0…

Web漏洞-深入WAF注入绕过

目录 简要其他测试绕过 方式一:白名单&#xff08;实战中意义不大&#xff09; 方式二:静态资源 方式三: url白名单 方式四:爬虫白名单 #阿里云盾防SQL注入简要分析 #安全狗云盾SQL注入插件脚本编写 在攻防实战中&#xff0c;往往需要掌握一些特性&#xff0c;比如服务…

基于SSM框架的校园失物招领系统:从设计思路到实现细节

末尾获取源码作者介绍&#xff1a;大家好&#xff0c;我是墨韵&#xff0c;本人4年开发经验&#xff0c;专注定制项目开发 更多项目&#xff1a;CSDN主页YAML墨韵 学如逆水行舟&#xff0c;不进则退。学习如赶路&#xff0c;不能慢一步。 目录 一、项目简介 二、开发技术与环…

在Windows中部署redis

下载redis Windows版redis在GitHub开源&#xff0c;由microsoftarchive维护,项目地址为 https://github.com/microsoftarchive/redis 找到releases&#xff0c;然后在latest中选择msi&#xff0c;或者zip进行下载 安装 msi安装包安装 下载完成后双击运行&#xff0c;同意协…

光伏发电量预测(Python代码,CNN结合LSTM,TensorFlow框架)

1.数据集&#xff08;开始位置&#xff09;&#xff0c;数据集免费下载链接&#xff1a;https://download.csdn.net/download/qq_40840797/89051099 数据集一共8列&#xff0c;第一列是时间&#xff0c;特征列一共有6列&#xff1a;"WindSpeed" - 风速 "Sunshi…

Netty核心原理剖析与RPC实践16-20

Netty核心原理剖析与RPC实践16-20 16 IO 加速&#xff1a;与众不同的 Netty 零拷贝技术 今天的课程我们继续讨论 Netty 实现高性能的另一个高阶特性——零拷贝。零拷贝是一个耳熟能详的词语&#xff0c;在 Linux、Kafka、RocketMQ 等知名的产品中都有使用&#xff0c;通常用于…

最快捷读取xlsx,用python读取excel转换成json

这是中英文json&#xff0c;用在国际化vue上的&#xff0c;业务人员统计的表格&#xff0c;我需要读取进行转换 # -*- coding: utf-8 -*-import pandas as pd import json# 读取Excel文件中的数据 excel_file rD:\解析excel\中英.xlsx df pd.read_excel(excel_file)# 生成中…

阿里云Salesforce CRM功能差异列表 - Winter‘24

阉割版的阿里云Salesforce由于技术和监管等因素与国际版的Salesforce差距很大&#xff01; 一、Winter‘ 24版差异概况&#xff1a; 1.1. 主要版本&#xff1a; 阿里云上的 Salesforce 提供两个版本&#xff0c;用于生产用途的 CN 版本&#xff08;CN Edition&#xff09;和用…

深入MNN:开源深度学习框架的介绍、安装与编译指南

引言 在人工智能的世界里&#xff0c;深度学习框架的选择对于研究和应用的进展至关重要。MNN&#xff0c;作为一个轻量级、高效率的深度学习框架&#xff0c;近年来受到了众多开发者和研究人员的青睐。它由阿里巴巴集团开源&#xff0c;专为移动端设备设计&#xff0c;支持跨平…

基于哈希槽的docker三主三从redis集群配置

目录 一、三主三从redis集群配置 1、关闭防火墙启动docker后台服务 2、新建6个docker容器redis实例 3、进入容器redis-node-1为6台机器构建集群关系 3.1进入容器 3.2构建主从关系 4、查看集群状态 4.1链接进入6381作为切入点 二、主从容错切换迁移按例 1、数据读写存储…

网络安全接入认证-802.1X接入说明

介绍 802.1X是一个网络访问控制协议&#xff0c;它可以通过认证和授权来控制网络访问。它的基本原理是在网络交换机和认证服务器之间建立一个安全的通道&#xff0c;并要求客户端提供身份验证凭据。如果客户端提供的凭据是有效的&#xff0c;交换机将开启端口并允许访问。否则&…

英语广场期刊投稿发表论文

《英语广场》是由国家新闻出版总署批准的正规期刊&#xff0c;杂志本着“轻松读原作&#xff0c;快乐学英语”的宗旨&#xff0c;倡导“寓学于乐”的学习理念&#xff0c;其活泼的办刊风格和优秀的文章选材受到读者特别是广大中学生的广泛欢迎&#xff0c;取得了良好的社会效益…

Window11系统下,VMware安装Ubuntu 18.04虚拟机

本文主要记录Window11系统&#xff0c;VMware安装Ubuntu 18.04虚拟机&#xff0c;主要包括常见的镜像网站下载、硬盘分区、创建虚拟机和Ubuntu系统安装四部分。 &#x1f3a1;导航小助手&#x1f3a1; 1. Ubuntu镜像下载2.磁盘分区3.创建Ubuntu虚拟机4.Ubuntu系统安装 1. Ubun…

什么是防火墙,部署防火墙有什么好处?

与我们的房屋没有围墙或界限墙一样&#xff0c;没有防护措施的计算机和网络将容易受到黑客的入侵&#xff0c;这将使我们的网络处于巨大的风险之中。因此&#xff0c;就像围墙保护我们的房屋一样&#xff0c;虚拟墙也可以保护和安全我们的设备&#xff0c;使入侵者无法轻易进入…

Docker 容器编排利器 Docker Compose

文章目录 一、Docker Compose 简介二、Docker Compose 安装2.1 Mac、Windows 平台默认支持2.2 Linux 安装(通过包管理)2.2.1 安装2.2.2 测试2.2.3 卸载 2.3 使用PIP 安装与卸载2.3.1 PIP安装2.3.2 PIP 卸载 三、基本使用3.1 术语3.2 部署Flask 应用 四、Compose 常用命令4.1 命…

美国裸机云多IP服务器:独享IP,多C段,高速稳定,站群优选!

美国裸机云多IP服务器&#xff0c;近年来在站群运营、网络架构优化等领域逐渐崭露头角&#xff0c;成为许多企业和个人用户的优选方案。那么&#xff0c;这种服务器究竟有何特别之处呢?下面&#xff0c;我们就来详细科普一下。 首先&#xff0c;我们来了解一下什么是裸机云多I…