5.2.6 地址解析协议ARP

news2024/11/24 3:44:02

5.2.6 地址解析协议ARP

我们知道要想实现全球范围内主机之间的通信,必须要有两个统一,一个是地址,另一个是数据格式,我们使用IP地址来实现统一的地址,使用IP分组实现统一的数据格式,在前面局域网的学习中我们知道在实际的物理网络中,真正用来通信的是物理地址,所以就需要把全球统一的IP地址映射为它在某个物理网络中所使用到的物理地址,我们在前面已经学过TCP/IP协议栈,在它的网际层有一个和IP配套的ARP协议,这个协议就是用来**把全球统一的IP地址映射为它在某个物理网络中所使用到的物理地址。**这就是我们这里要学习的主要内容即ARP地址解析协议。

ARP的作用

地址解析ARP为网络层(IP)地址和数据链路层(MAC)地址提供动态映射。即ARP协议是把一台主机的IP地址转换为它在一个屋里网络中使用的MAC地址,世界上有许多不同类型的计算机网络,进行地址转换的方法也是各不相同,这里我们就以最为广泛使用的以太网为例来介绍一下在以太网中是如何实现这种地址转换的。

ARP请求分组

如图是一个总线型的以太网,假设A主机想要和B主机通信,根据以太网的帧结构,第一个字段是目的MAC地址,占6个字节48个比特位,也就是A发送给B的数据帧首部中第一个字段是B的MAC地址,因此A主机必须要知道B主机的MAC地址,此时A主机就会发送一个ARP请求分组,在这个请求分组里包含有A主机的IP地址,A主机的物理地址,以及B主机的IP地址,该分组是如何发送出去的呢?在以太网中首先想到的是成为广播的方法,所以当A主机发出ARP请求之后,所有的主机都能收到。

这里的关键是谁会来应答这个请求,在ARP协议中规定,问谁谁回答,因为刚才这个请求分组中询问的是B的MAC地址,又因为B主机也知道A的MAC地址,所以如图

相应分组

B主机就会以单播的形式向A主机返回一个ARP相应分组。在相应分组中包含有B主机的IP地址,以及B主机的物理地址,这里需要注意的是,虽然说X、Y、Z三个主机没有给A主机相应,但他们会不约而同的做一件事情,具体做什么事情呢?这个在后面说,总之通过这种方式A主机最终获得了B主机的物理地址,表面上看问题已经得到了解决,但我们也发现了这里面存在着一个问题,如果所有的主机都采用广播的方式去得到其他主机MAC地址的话,对于网络来说由于这种广播所造成的通信量就会使得网络负担过重,为了减轻网络的负担改进的方法就是在以太网中采用了一种**ARP Cache(高速缓存)**在每台主机都会存在着一个ARP高速缓存,在高速缓存中存放的是最近获得的本网络中某些主机IP地址和物理地址的映射,在实际的应用中我们可以使用DOC命令行输入命令

arp -a

查看本机ARP缓存的内容。如图

高速缓存

IP地址是224.0.0.2在高速缓存中对应的MAC地址。所以说源主机和目的主机进行通信的时候,源主机首先会查看本机的ARP缓存中有没有目的主机的MAC地址,如果有就无需广播,这样就很好的减轻了网络的负担。

我们回到刚才的问题,在刚才的示例中X、Y、Z三台主机虽然说收到请求分组以后不会给出相应,但是他们会不约而同的做一件事情,包括B主机在内都会把A主机的IP地址和物理地址写入到自己的ARP Cache(高速缓存)中,同样道理当A主机收到B主机单播的相应分组以后也会更新自己的ARP高速缓存,但是我们还要考虑可能出现的一种情况,比如说刚才示例中的B主机网卡坏掉了,换了一个新的网卡,或者B主机关机之后它的IP地址换了主人,给了一台网络中新加入的主机,此时该IP地址对应的物理地址就改变了,也就是说针对着ARP高速缓存中的信息有可能会失效的问题,在以太网的ARP协议软件中采用了一种超时的方法,它规定了当一条信息被写入到它的ARP Cache中的有效时间是20分钟,20分钟后这条信息会自动删除。

我们刚才举的示例是A主机和B主机在同一个物理网络中,如果两个主机不在同一个物理网络中,通过ARP协议获取的是什么信息呢?即获取的是谁的物理地址呢?这时我们要思考一个问题,当我们使用自己的计算机去访问某一个网站时,这时通过本机的ARP协议软件获取的是该网站对应的WWW服务器的物理地址么?要回答这个问题我们首先要了解一下从源主机到网站的WWW服务器之间是怎么样进行连接的。如图

web访问

数据从源主机出发经过了若干台路由器(这里我们假设为两台),即路由器R1和路由器R2的转发最终到达www服务器,从协议栈的角度来看整个数据的流向,对于源主机来说,数据是从最高层到最低层有一个层层封装的过程,最终从源主机发出去一个比特流,到了第一台路由器的输入接口,从接收到的比特流中剥离除了帧,从帧中又剥离出封装的IP分组,通过路由选择,为该分组找到下一跳后再把该IP分组封装到新的MAC帧中,通过路由器R1的输出接口,送交给路由器R2,在路由器R2中通过类似的过程,最终通过路由器R2送达给目的主机,也就是我们所要访问的目的网站的www服务器,到达目的主机后又从最低层向上层有一个层层剥离的过程,最终完成了这个web请求。

从网路层角度来看,在IP分组首部中的源IP地址和目的IP地址,始终是不变的,而从数据链路层来看传输的基本单位是帧,在帧的首部中源MAC地址和目的MAC地址每段都是改变的,那我们刚才通过ARP协议软件究竟获取的是谁的MAC地址呢?我们可以发现他其实得到的是路由器R1左边接口的MAC地址也就是HA3。

我们也可以通过数据报捕获软件来做一下这个实验,当然在捕获之前需要先通过

arp -d

命令清空我们的ARP Cache,通过实验我们可知,由于源主机高速缓存是空的,所以就先广播了一个ARP请求分组,因为目的MAC地址是全1的,当目的主机和源主机不在一个物理网络中的时候通过ARP协议软件得到的是和本主机相连的默认路由器的MAC地址。

这里我们还要知道ARP协议软件是什么时候工作的呢?它就像一个活雷锋一样,在需要的时候自动的去运行,所以说对于用来说是觉察不出来的。

以上就是我们学习的内容,我们主要学习了ARP的作用以及在以太网中ARP协议软件是如何实现地址转换的,通过学习我们也知道在以太网协议软件运行的时候有一个前提也就是说不管是发出ARP请求分组的主机还是发出ARP响应分组的主机,他们发出的分组里自己的地址信息都是可信的,但是目前的社会有一些居心叵测的人就会利用了ARP中彼此之间的信任进行**“”ARP诱骗和ARP攻击“**。

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

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

相关文章

【AIGC】13、GLIP | 首次将 object detection 重建为 phrase grounding 任务

文章目录 一、背景二、方法2.1 将 object detection 和 phrase grounding 进行统一2.2 Language-aware deep fusion2.3 使用语义丰富的数据来进行预训练 三、效果3.1 迁移到现有 Benchmarks3.2 在 COCO 上进行零样本和有监督的迁移3.3 在 LVIS 上进行零样本迁移学习3.4 在 Flic…

android 如何分析应用的内存(四)

android 如何分析应用的内存(四) 接上文 在介绍细节部分时,先介绍了各种工具的使用,而这些工具,大部分都用来调试,诸如:特定内存点,堆栈,寄存器,变量值等的…

MySQL安装流程 及 8.0与5.7区别

一、MySQL版本介绍 1、MySQL 8.0 窗口函数:MySQL 8.0版本支持窗口函数,这是数据分析工作中非常常用的一类函数。窗口函数可以让用户在单个查询中跨多个行检索数据,并在查询结果中对数据执行计算。隐藏索引:在MySQL 8.0版本中&am…

C++STL详解 string【C++】

文章目录 函数模板函数模板的原理函数模板的实例化模板参数的匹配原则 类模板类模板的定义格式类模板的实例化 string 函数模板 函数模板的原理 template <typename T> //模板参数 ——类型 void Swap(T& x1, T& x2) {T tmp x1;x1 x2;x2 tmp; } int main()…

牛客网语法刷题篇(C语言) — 输出格式化

&#x1f929;本文作者&#xff1a;大家好&#xff0c;我是paperjie&#xff0c;感谢你阅读本文&#xff0c;欢迎一建三连哦。 &#x1f970;内容专栏&#xff1a;这里是《C语言—语法篇》专栏&#xff0c;笔者用重金(时间和精力)打造&#xff0c;基础知识一网打尽&#xff0c;…

解析Linux中断子系统之中断映射

中断是当前计算机系统的基础功能&#xff0c;也是系统响应外设事件的必备桥梁。不同的架构对中断控制器有不同的设计理念&#xff0c;本文针对ARM公司提供的通用中断控制器&#xff08;GIC,Generic Interrupt Controller&#xff09;介绍在linux系统中的硬件中断号与软件中断号…

SpringBootWeb登录认证

1. 登录功能 1.1 需求 在登录界面中&#xff0c;我们可以输入用户的用户名以及密码&#xff0c;然后点击 “登录” 按钮就要请求服务器&#xff0c;服务端判断用户输入的用户名或者密码是否正确。如果正确&#xff0c;则返回成功结果&#xff0c;前端跳转至系统首页面。 1.2 …

简单聊一聊数据库驱动

数据库驱动通常是数据库厂家提供的&#xff0c;他们按照jdbc协议对自家数据库封装了一套可对外调用的API。在应用程序和数据库之间起到了桥接的作用。它是一个软件组件&#xff0c;提供了与特定数据库系统进行通信的接口和功能。 1. 数据库驱动的作用&#xff1a; 连接数据库&…

AAOS 音频动态路由

文章目录 基本概念车载音频配置文件外部的配置音频区的方式车载音频服务配置路由流程框架中获取可用输出设备配置例子测试方法相关问题 基本概念 Android 管理来自 Android 应用的声音&#xff0c;同时控制这些应用&#xff0c;并根据其声音类型将声音路由到 HAL 中的输出设备…

FastAPi上传文件报错,There was an error parsing the body

问题描述 通过postman调用fastapi编写的文件接口报错&#xff0c;如下图&#xff1a; {"detail": "There was an error parsing the body" } 问题的解决过程 postman本身的问题 postman有个work directory的概念&#xff0c;所以再使用postman上传的文…

Git常用命令submodule

Git常用命令submodule 1、需求 当程序比较大参与开发人员较多时&#xff0c;代码管理就复杂起来。代码如果全员可见&#xff0c;可以创建 share 分支维护共用代 码&#xff0c;可以创建 core 分支维护核心算法代码&#xff0c;各进程分别占一个分支&#xff0c;定期同步 sha…

如何从 OpenAI 迁移到 Azure OpenAI(保姆级教程,包含如何兼容 JS 语言版 LangChain)

Azure OpenAI 和 OpenAI 一样&#xff0c;本质都是调用 api&#xff0c;Azure OpenAI 的使用会稍微复杂一点&#xff0c;但好处就是方便付费。 创建 Azure OpenAI 资源 首先&#xff0c;先登录 Azure 账号&#xff1a;https://azure.microsoft.com/zh-cn/ 接着创建 OpenAI 资…

硬件工程师-BOOST升压电源设计

一、Boost变换原理 开关闭合时&#xff0c;电感电压等于输入电压 开关断开时&#xff0c;电感电压输出电压-输入电压&#xff0c; 电感的感生电动势&#xff0c;N ΔΦ磁通的变化率&#xff0c;Δt时间 假设开关闭合与开关断开&#xff0c;开关断开时能量全部释放光 将第三个式…

MySQL(进阶篇1.0)

MySQL体系结构 1、连接层 最上层是一些客户端和连接服务&#xff0c;包含本地sock通信和大多数基于客户端/服务端工具实现的类似于TCP/IP的通信。主要完成一些类似于连接处理、授权认证、及相关安全方案。在该层上引入了线程池的概念&#xff0c;为通过认证安全接入的客户端提…

进程的通信方式有哪些?

目录 管道消息队列共享内存信号量信号套接字 管道 最初我们在学习Linux基本命令使用的时候&#xff0c;我们经常通过多个命令的组合来完成我们的需求。比如说我们想知道如何查看进程或者端口是否在使用&#xff0c;会使用下面的这条命令 netstat nlp | grep xxx 这里的"|“…

电子科技大学计算机系统结构复习笔记(四):存储系统

目录 前言 重点一览 Cache基本原理 三种映像方式 物理地址与Cache地址的映射计算 Cache块标识 Cache替换算法 Cache写策略 分离cache与一体cache Cache性能与优化 Cache性能计算 Cache性能优化 主存储器与虚拟存储器 主存储器性能优化 虚拟存储器 虚拟存储器与…

编译 ONNX 模型

本篇文章译自英文文档 Compile ONNX Models — tvm 0.13.dev0 documentation 作者是 Joshua Z. Zhang 更多 TVM 中文文档可访问 →TVM 中文站。 本文将介绍如何用 Relay 部署 ONNX 模型。 首先安装 ONNX 包&#xff0c;最便捷的方法推荐安装 protobuf 编译器&#xff1a; pi…

【资料分享】浪涌电流(Inrush Current)产生原因

1、对Inrush Current电流的直观感受 当电灯在电路中工作时&#xff0c;如果突然启动马达或者变压器时&#xff0c;会出现电灯暗一下&#xff0c;此时电灯出现暗的情况就是因为马达或者变压器启动时&#xff0c;在电路中产生较大Inrush Current&#xff0c;具体分析可以参考下图…

图解HTTP书籍学习

了解Web及网络基础 HTTP&#xff08;HyperText Transfer Protocol&#xff0c;超文本传输协议&#xff09; Web是建立在HTTP协议上通信的 把SGML&#xff08;Standard Generalized Markup Language&#xff0c;标准通用标记语言&#xff09; HTML&#xff08;HyperText Mar…

大数据:spark任务调度,DAGscheduler,Taskscheduler

大数据&#xff1a;spark任务调度 2022找工作是学历、能力和运气的超强结合体&#xff0c;遇到寒冬&#xff0c;大厂不招人&#xff0c;可能很多算法学生都得去找开发&#xff0c;测开 测开的话&#xff0c;你就得学数据库&#xff0c;sql&#xff0c;oracle&#xff0c;尤其s…