ARP基本原理

news2024/7/5 0:23:27
相关概念
  • ARP报文

    ARP报文分为ARP请求报文和ARP应答报文,报文格式如图1所示。

    图1 ARP报文格式

Ethernet Address of destination(0–31)和Ethernet Address of destination(32–47)分别表示Ethernet Address of destination字段的前32个比特和后16个比特,Ethernet Address of destination字段的总长度是48比特

ARP报文的长度是42字节。前14字节的内容表示以太网首部,后28字节的内容表示ARP请求或应答报文的内容。ARP报文中相关字段的解释如表1所示。

  • 表1 ARP报文各字段的含义

    字段

    长度

    含义

    Ethernet Address of destination

    48比特

    以太网目的MAC地址。发送ARP请求报文时,为广播的MAC地址:0xFF-FF-FF-FF-FF-FF。

    Ethernet Address of sender

    48比特

    以太网源MAC地址。

    Frame Type

    16比特

    数据的类型。对于ARP请求或应答来说,该字段的值为0x0806。

    Hardware Type

    16比特

    硬件地址的类型。对于以太网,该类型的值为“1”。

    Protocol Type

    16比特

    发送方要映射的协议地址类型。对于IP地址,该值为0x0800。

    Hardware Length

    8比特

    硬件地址的长度。对于ARP请求或应答来说,该值为6。

    Protocol Length

    8比特

    协议地址的长度。对于ARP请求或应答来说,该值为4。

    OP

    16比特

    操作类型。OP的值与操作类型的关系如下:
    • 1表示ARP请求
    • 2表示ARP应答
    • 3表示RARP请求
    • 4表示RARP应答

    Ethernet Address of sender

    48比特

    源MAC地址。这个字段和ARP报文首部的以太网源MAC地址字段是相同的信息。

    IP Address of sender

    32比特

    源IP地址。

    Ethernet Address of destination

    48比特

    目的MAC地址。发送ARP请求报文时,该处填充值为0x00-00-00-00-00-00。

    IP Address of destination

    32比特

    目的IP地址。

  • ARP表

    如果每次主机在向外发送数据报文前都要先发送ARP请求报文,会大幅增加网络的通信量。而且网络上的所有设备都必须接收和处理该ARP请求报文,极大地影响了网络的运行效率。为了解决上述问题,每台主机上都维护着一个ARP表,这是ARP高效运行的关键。在这个ARP表中,存放着最近获得的IP地址和MAC地址之间的映射关系,这种映射关系称为ARP表项。

    根据ARP表项的生成方式不同,可以将ARP表项分为动态ARP表项和静态ARP表项。两者的区别仅在于:

    • 动态ARP表项由ARP协议通过ARP报文自动生成和维护,可以被老化,可以被新的动态ARP表项更新,也可以被静态ARP表项覆盖。
    • 静态ARP表项由网络管理员通过手工配置生成和维护,不会被老化,也不会被动态ARP表项覆盖。
    主机在每次发送数据报文前,都会先在ARP表中查找目的IP地址所对应的MAC地址。
    • ARP表中有对应的MAC地址时,主机就不会再发送ARP请求报文,而是直接将数据报文发至这个MAC地址。

    • ARP表中没有对应的MAC地址时,主机才会发送ARP请求报文,请求目的主机的MAC地址。

  • 逆地址解析协议RARP(Reverse Address Resolution Protocol)

    当一台主机只知道自己的MAC地址时,可以通过发送和接收RARP报文,找出本设备的IP地址。

    网络管理员先在网络中的网关路由设备上创建一个MAC地址和与其对应的IP地址的映射关系。当用户需要对一台新的主机进行配置时,该设备的RARP客户机程序就会向网关路由设备上的RARP服务器请求相应的IP地址。

实现过程

  1. HostA查看自己的ARP表,发现没有目的主机HostB的IP地址和MAC地址的映射关系。于是,HostA对外发送ARP请求报文,请求HostB的MAC地址。该ARP请求报文中的源IP地址和源MAC地址为HostA的IP地址和MAC地址,目的IP地址和目的MAC地址分别为HostB的IP地址和全0的MAC地址,以太网源MAC地址和目的MAC地址分别为HostA的MAC地址和广播MAC地址。

  2. CE1收到ARP请求报文后,将该报文在本网段内广播。

  3. HostB收到ARP请求报文后,更新自己的ARP表,将HostA的MAC地址添加到ARP表,同时向该ARP请求报文的发送方HostA发送ARP响应报文。该ARP响应报文中的源IP地址和源MAC地址为HostB的IP地址和MAC地址,目的IP地址和目的MAC地址为HostA的IP地址和MAC地址,以太网源MAC地址和目的MAC地址分别为HostB的MAC地址和HostA的MAC地址。

    由于ARP请求报文的目的IP地址不是设备PE的IP地址,所以PE在收到ARP请求报文后,直接将其丢弃。

  4. CE1收到该ARP响应报文后,将该报文转发给目的主机HostA。

  5. HostA收到ARP响应报文后,更新自己的ARP表,将HostB的MAC地址添加到ARP表中,同时将数据报文发送给HostB。

以HostA向HostC发送数据报文为例,结合图3和图4详细介绍不同网段间ARP是如何实现的。

图3描述了同网段的HostA和PE之间ARP的实现过程。通过这个网段内ARP的实现,HostA可以将数据报文发送到PE。

图3 同网段内HostA和PE之间地址解析的实现过程

  1. HostA查看自己的ARP表,发现没有到达目的主机HostC的默认网关PE的接口Interface1的IP地址和MAC地址的映射关系。于是,HostA对外发送ARP请求报文,请求PE的接口Interface1的MAC地址。该ARP请求报文中的源IP地址和源MAC地址为HostA的IP地址和MAC地址,目的IP地址和目的MAC地址分别为PE的接口Interface1的IP地址和全0的MAC地址,以太网源MAC地址和目的MAC地址分别为HostA的MAC地址和广播MAC地址。

  2. CE1收到ARP请求报文后,将该报文在本网段内广播。

  3. 网关PE收到ARP请求报文后,更新自己的ARP表,将HostA的MAC地址添加到ARP表,同时向该ARP请求报文的发送方HostA发送ARP响应报文。该ARP响应报文中的源IP地址和源MAC地址为PE的接口Interface1的IP地址和MAC地址,目的IP地址和目的MAC地址为HostA的IP地址和MAC地址,以太网源MAC地址和目的MAC地址分别为PE的接口Interface1的MAC地址和HostA的MAC地址。

    由于ARP请求报文的目的IP地址不是HostB的IP地址,所以HostB在收到ARP请求报文后,直接将其丢弃。

  4. CE1收到该ARP响应报文后,将该报文转发给目的主机HostA。

  5. HostA收到ARP响应报文后,更新自己的ARP表,将PE的接口Interface1的MAC地址添加到ARP表中,同时将数据报文发送给PE。

图4描述了同网段的PE和HostC之间ARP的实现过程。通过这个网段内ARP的实现,PE可以将数据报文发送给HostC。

图4 同网段内PE和HostC之间地址解析的实现过程

首先,PE通过查询路由表,将数据报文从Interface1发送到Interface2。

  1. PE查看自己的ARP表,发现没有目的主机HostC的IP地址和MAC地址的映射关系。于是,PE发送ARP请求报文,请求HostC的MAC地址。该ARP请求报文中的源IP地址和源MAC地址为PE的接口Interface2的IP地址和MAC地址,目的IP地址和MAC地址分别为HostC的IP地址和全0的MAC地址,以太网源MAC地址和目的MAC地址分别为PE的接口Interface2的MAC地址和广播MAC地址。

  2. CE2收到ARP请求报文后,将该报文在本网段内广播。

  3. HostC收到ARP请求报文后,更新自己的ARP表,将PE的接口Interface2的MAC地址添加到ARP表,同时向该ARP请求报文的发送方PE发送ARP响应报文。该ARP响应报文中的源IP地址和源MAC地址为HostC的IP地址和MAC地址,目的IP地址和目的MAC地址为PE的接口Interface2的IP地址和MAC地址,以太网源MAC地址和目的MAC地址分别为HostC的MAC地址和PE的接口Interface2的MAC地址。

    由于ARP请求报文的目的IP地址不是HostD的IP地址,所以HostD在收到ARP请求报文后,直接将其丢弃。

  4. CE2收到该ARP响应报文后,将该报文发送给目的设备PE。

  5. PE收到ARP响应报文后,更新自己的ARP表,将HostC的MAC地址添加到ARP表中,同时将数据报文发送给HostC。

通过以上两个同网段内ARP的实现,不同网段间的主机HostA和HostC可以进行数据报文的传送。

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

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

相关文章

Linux中解决普通用户使用不了sudo问题

目录 sudo的使用场景sudo使用不了的原因解决方法 sudo的使用场景 之前我们介绍了文件的权限问题 如果一个普通用户想去执行一个它命令之外的权限,只能使用sudo 比如普通用户使用yum去安装软件,需要sudo yum xxxx sudo使用不了的原因 这里我们用普通用户…

浏览器的下载行为基本原理

浏览器解析 在使用浏览器访问某些资源时,有些资源是直接下载有些资源是直接打开。例如前端的html,xml,css,图片等资源都是直接打开,而txt,excel等文件是直接下载。那么如何控制访问一个资源时是下载文件还…

C# run Node.js

C# run nodejs Inter-Process Communication,IPC Process类 启动Node.js进程,通过标准输入输出与其进行通信。 // n.js// 监听来自标准输入的消息 process.stdin.on(data, function (data) {// 收到消息后,在控制台输出并回复消息console.l…

MyBatisPlus标准分页功能制作,以及设置分页拦截器,selectPage(new Page<>(current,size),null)

目录 1、设置分页拦截器 2、创建数据库及表 3、pom.xml 4、添加MP的相关配置信息 application.yml 5、根据数据库表创建实体类 User 6、创建 UserDao 接口 7、编写引导类 8、编写测试类 9、Run的运行结果 1、设置分页拦截器 package com.example.config; import com.baomidou.m…

从零开始傅里叶变换

从零开始傅里叶变换 1 Overview2 傅里叶级数2.1 基向量2.2 三角函数系表示 f ( t ) f(t) f(t)2.2.1 三角函数系的正交性2.2.2 三角函数系的系数 2.3 复指数函数系表示 f ( t ) f(t) f(t)2.3.1 复指数函数系的系数2.3.2 复指数函数系的正交性 2.4 傅里叶级数总结 3 傅里叶变换…

基于轻量级神经网络GhostNet开发构建CIFAR100数据集场景下的图像识别分析系统,对比不同分辨路尺度下模型的性能情况

Cifar100数据集是一个经典的图像分类数据集,常用于计算机视觉领域的研究和算法测试。以下是关于Cifar100数据集的详细介绍: 数据集构成:Cifar100数据集包含60000张训练图像和10000张测试图像。其中,训练图像分为100个类别&#x…

肯尼亚大坝决堤反思:强化大坝安全监测的必要性

一、背景介绍 近日,肯尼亚发生了一起严重的大坝决堤事件。当地时间4月29日,肯尼亚内罗毕以北的一座大坝决堤,冲毁房屋和车辆。当地官员称,事故遇难人数已升至71人。这起事件再次提醒我们,大坝安全无小事,监…

SpringMVC源码解读[1] -Spring MVC 环境搭建

源码地址: https://github.com/chen-jiacheng/springmvc-quickstart 一、使用 IDEA 创建 Spring MVC 项目 直接创建项目即可 默认项目结构: springmvc-quickstart ├── pom.xml └── src├── main│ ├── java│ │ └── com│ │ └── chenjiache…

微软开发者大会:编程进入自然语言时代、“AI员工”闪亮登场

当地时间周二,美国科技公司微软召开年度Build开发者大会。在CEO纳德拉的带领下,微软各个产品团队再一次展现出惊人的执行力,在发布会上又拿出了接近50个新产品或功能更新。 整场发布会持续了接近两个小时,在这里挑选了一些投资者…

深度学习之基于YoloV5入侵检测系统

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景 随着信息技术的飞速发展,网络安全问题日益凸显。入侵检测系统(IDS&#xff0…

[图解]产品经理创新模式01物流变成信息流

1 00:00:01,570 --> 00:00:04,120 有了现状的业务序列图 2 00:00:04,960 --> 00:00:08,490 我们就来改进我们的业务序列图了 3 00:00:08,580 --> 00:00:11,010 把我们要做的系统放进去,改进它 4 00:00:13,470 --> 00:00:15,260 怎么改进?…

第五节 Starter 的加载全貌

tips:下载源码,再结合本章内容,学习整个加载过程。 上一章,我们理解了 spring.factories 的触发时机,但放在 SpringBoot 的整个加载过程来讲,只能算部分。 而这一章,将从 SpringBoot 的加载全貌…

Day 60 84.柱状图中最大的矩形

柱状图中最大的矩形 给定 n 个非负整数&#xff0c;用来表示柱状图中各个柱子的高度。每个柱子彼此相邻&#xff0c;且宽度为 1 。 求在该柱状图中&#xff0c;能够勾勒出来的矩形的最大面积。 1 < heights.length <10^50 < heights[i] < 10^4 ​ 这道题很明显&…

x264码率控制基础

x264码率控制模型 x264码率控制也是基于率失真模型即,D为失真,R为码率,为拉格朗日因子,当取值较大时,倾向于低码率高失真的情况;当取值较小时,倾向于高码率低失真的情况。由拉格朗日乘数法知, 参考[1], x264采用的是高码率下码率和失真之间的关系

数据结构和算法|排序算法系列(一)|选择排序

首先需要你对排序算法的评价维度和一个理想排序算法应该是什么样的有一个基本的认知&#xff1a; 《Hello算法之排序算法》 主要内容来自&#xff1a;Hello算法11.2 选择排序 选择排序是明显的基于比较的排序。下文开始阐述选择排序的整个算法流程 算法流程 选择排序应该已…

x264 码率控制原理:x264_ratecontrol_start 函数

x264_ratecontrol_start 函数 函数原理 函数功能:编码一帧之前,为当前帧选择一个量化 QP,属于帧级别码率控制;这对于控制视频质量和文件大小至关重要。通过调整QP,编码器可以在保持视频质量的同时,尽可能减小输出文件的大小。函数参数:x264_t *h: 编码器上下文结构体指…

贴片 RS8752XK 封装SOP-8 250MHz,2通道高速运放

传感器信号放大&#xff1a;在传感器应用中&#xff0c;RS8752XK可以用于放大微弱的传感信号&#xff0c;如压力、温度、光强等传感器的信号。 数据采集系统&#xff1a;在数据采集设备中&#xff0c;RS8752XK可以用于放大和调理模拟信号&#xff0c;以供模数转换器&#xff0…

abs(-2147483648) == 2147483648?

从数学意义上&#xff0c;这是对的。但是&#xff0c;就怕但是。 #include int main() {long long v;v abs(-2147483648);printf("%lld\n", v);return 0; } 输出: -2147483648 我们从source code中一一解开. /* Return the absolute value of I. */ int abs (…

Mist-开源macOS系统版本安装包管理工具

Mist 用于下载 macOS 系统安装包的工具&#xff0c;可下载macOS 固件 / 安装程序。 需要经常下载macOS的可以体验一下。 可以在底部选择显示 macOS 的 Beta 版本 筛选出与当前 Mac 兼容的 macOS 版本 想了解更多可访问项目地址&#xff1a; https://github.com/ninxsoft/Mis…