首页 > 其他分享 >ARP(Address Resolution Protocol)地址解析协议详解

ARP(Address Resolution Protocol)地址解析协议详解

时间:2024-05-30 12:29:09浏览次数:18  
标签:ARP 缓存 Protocol 请求 映射 MAC 地址 Address

ARP地址解析解析

ARP地址解析协议提供了一种在IPv4地址和硬件地址之间的动态映射。

动态是因为它会自动执行和随时间变化,不需要系统管理员重新配置。若一台主机改变了网络接口卡,从而改变了它的硬件地址,ARP可以在一定延时后继续正常运作。

举个例子:

  • 当我们使用Internet服务时,本地计算机必须确定如何与相关的服务器联系,它首先判断该服务是本地还是远程。如果是远程,则需要一台可到达目的地的路由器。仅在到达同一IP子网的系统是,ARP才能工作。

在一个共享的链路层网段中,ARP向所以主机发送一个称为ARP请求的以太网帧。ARP请求包含目的主机的IPv4地址。如果某个系统使用请求中指出的IPv4地址,它仅需要一个ARP应答。这个应答包含IPv4地址和对应的MAC地址(这个应答通常是直接发送给请求方)。同时,接收ARP请求的主机学习IPv4到MAC地址的映射,并记录在内存中供以后使用。

在这里插入图片描述

ARP直接交付

ARP地址解析协议的直接交付,是指在一个局域网(LAN)内部进行数据帧传输时,不需要经过ARP解析过程,而是直接将数据帧发送到目标主机的MAC地址。

在以太网中,当一个设备想要向另一个设备发送数据时,它需要知道目标设备的MAC地址。设备首先会检查其ARP缓存,看看是否已经有了目标IP地址对应的MAC地址。如果有,则直接构造数据帧,并将数据帧发送到这个MAC地址。

如果ARP缓存中没有找到对应的MAC地址,那么设备会广播一个ARP请求,询问拥有那个IP地址的设备的MAC地址是什么。接收到ARP请求的设备会回复一个ARP回复,告诉发送者其MAC地址。然后,发送者更新其ARP缓存,并将数据帧发送到这个MAC地址。

但在某些情况下,发送者已经知道目标主机的MAC地址,例如它们之前有过通信,此时发送者就可以直接构造数据帧并发送到目标MAC地址,而不需要再进行ARP请求和广播过程,这就是ARP的直接交付。直接交付可以减少网络上的广播流量,提高数据传输的效率

ARP缓存

ARP高效运行的关键是维护每个主机和路由器上的ARP缓存。该缓存为每个接口维护从网络层地址到硬件地址的最新映射。

ARP缓存的主要特点和功能包括:

  1. 动态更新:ARP缓存通常是根据需要动态更新的。当设备A需要与设备B通信时,如果A的ARP缓存中没有B的IP地址对应的MAC地址,A会发起一个ARP请求广播,询问“谁有这个IP地址,请告诉我你的MAC地址”。设备B收到这个请求后,会回复一个ARP回复,告诉A它的MAC地址。然后A将这个映射关系存储在它的ARP缓存中。
  2. 超时机制:为了确保ARP缓存中的信息是最新的,缓存条目通常会有一个超时时间。如果某个映射关系在一定时间内没有被使用,缓存会自动将其删除。这样,如果网络中的设备发生了变化(如更换了网络接口卡或者设备移动到了另一个网络),ARP缓存可以迅速适应这些变化。
  3. 静态映射:虽然ARP缓存通常是动态更新的,但管理员也可以手动配置静态ARP条目。这意味着可以手动设置IP地址与MAC地址的映射关系,这样的映射不会因为超时而被删除。
  4. 减少网络流量:通过使用ARP缓存,网络设备可以减少ARP请求的广播,从而减少网络流量。
  5. 提高效率:由于ARP缓存减少了ARP请求的次数,因此它可以显著提高网络通信的效率。

其他:

点到点链路(如PPP)不使用ARP,当这些链路建立后,在链路两端通知正在使用的地址,并不涉及硬件地址,因此不需要地址解析。

标签:ARP,缓存,Protocol,请求,映射,MAC,地址,Address
From: https://blog.csdn.net/m0_74973115/article/details/139320730

相关文章

  • C# 证件照替换底色与设置背景图---PaddleSegSharp
    PaddleSegSharp 是一个基于百度飞桨PaddleSeg项目的人像分割模块而开发的.NET的工具类库。PaddleSegSharp 中PaddleSeg.dll文件是基于开源项目最新发布版本PaddleSeg PaddleSeg的版本修改而成的C++动态库,基于opencv的x64编译而成的。PaddleSeg是基于飞桨PaddlePaddle的端到端......
  • 提速15%,PaddleOCRSharp新版v4.3发布
    PaddleOCRSharpv4.3版本,已经于5月23日发布。该版本的发布,在不影响识别精度的同时,带来了10%~15%速度的提升。项目地址:https://gitee.com/raoyutian/PaddleOCRSharp项目简介PaddleOCRSharp 作者是广州英田信息科技有限公司的创始人明月心(raoyutian) ,是一个基于百度飞桨Padd......
  • objcopy change-address参数
    在`objcopy`这个GNUBinutils工具中,`--change-address`(或简写为`-R`)参数用于修改输出文件中各个段的起始地址。这在处理二进制镜像(例如U-BootSPL,即SecondaryProgramLoader)时特别有用,因为你可能需要将这些镜像加载到特定的内存地址。具体来说,`--change-address=ADDRESS`参数......
  • c# 文件压缩DotNetZip和SharpZipLib
     SharpZipLib和DotNetZip  DotNetZip示例usingSystem;usingSystem.IO;usingIonic.Zip;classProgram{staticvoidMain(string[]args){stringfolderToCompress=@"C:\path\to\your\folder";//要压缩的文件夹路径stringzi......
  • 【解决办法】RegularPolygon.__init__() takes 3 positional arguments but 4 were gi
    我在学习用Python绘制一个六边形且隐藏全部轴脊的代码时,出现如下报错:RegularPolygon._init_()takes3positionalargumentsbut4weregiven报错意思:RegularPolygon.__init__()接受3个位置参数,但给定了4个通过上网查询、询问同学,我解决了这个问题,其中的解决过程我详细地......
  • 游戏开发:rpc protocol demo
    看好项目的源码总是会有重复造轮子的冲动。最近对比测了下我们业务使用的数据序列化协议的性能,review了社区上几个常用库的源码,尝试做了点优化,有些想法。浅浅写了个demo,这里记录下实现的思路,供后面查阅和反思。协议的实现分为几个部分:schematext:协议描述文件compiler:解析器,负......
  • windows系统桌面壁纸切换的三种csharp办法,兼容win10及旧版,还有一个现成桌面小程序
    我自己用这些代码做的小app如下: 最新版本已经改成了服务的方式,也可以选择性添加系统的右键菜单,并且我自己使用的源码库已经开源到了nuget,大家可以直接拿来做二次开发,新版的下载地址为:https://www.zhaimaojun.cn/P/桌面壁纸管理器/开源库为(可以直接在vs的nuget包管理中搜索......
  • .NET集成DeveloperSharp实现http网络请求&与其它工具的比较
     爆了,爆了,DeveloperSharp系列近期又被制造业ERP、民航飞行App、建筑BIM、电力掌上营业厅、等多家大型采用,站在巨人的肩膀上你能走的更远。 支持.NetCore2.0及以上,支持.NetFramework4.0及以上http请求调用是开发中经常会用到的功能。在内,调用自有项目的WebApi等形式接口时......
  • 使用 firewall-cmd --list-all 命令查看防火墙策略信息显示不全,缺少protocols选项
      出现这个问题的原因是我们当前Linux系统的防火墙的版本太低导致的。 需要升级一下防火墙。对于RedHat、CentOS或Fedora系统:sudoyumupdatesudoyuminstalliptables或者,如果你想使用firewalld:sudoyumupdatesudoyuminstallfirewalld 再次进行查看......
  • 《计算机网络微课堂》3-7-3 ARP 协议
    在之前的课程中,‍‍我们分别介绍了属于数据链路层范畴的MAC地址和属于网络层范畴的IP地址,‍‍以及数据包在传输过程中IP地址和MAC地址的变化情况之后,我们提出了这样一个问题,‍‍那就是如何通过IP地址找到其相应的IP地址?‍‍这就是本节课我们将要介绍的地址解析协议,ARP......