您当前的位置:首页 > 电脑百科 > 网络技术 > 网络技术

一份学霸级的ARP学习笔记!引起众多网工纷纷收藏!

时间:2022-10-30 20:15:36  来源:  作者:网络工程师阿龙

前置知识:mac地址

在说到ARP协议之前,需要了解MAC地址,在OSI七层模型中,第三层是网络层,要解决的是下一跳机制确定的设备位置,具体来说就是网卡地址,MAC地址用于在网络中唯一标示一个 网卡 ,一台设备若有一或多个网卡,则每个网卡都需要并有一个唯一的MAC地址。

MAC地址格式

MAC地址共48位(6个字节),以十六进制表示。第1Bit为广播地址(0)/群播地址(1),第2Bit为广域地址(0)/区域地址(1)。前3~24位由IEEE决定如何分配给每一家制造商,且不重复,后24位由实际生产该网络设备的厂商自行指定且不重复。

ff:ff:ff:ff:ff:ff则作为广播地址。

01:xx:xx:xx:xx:xx是多播地址,01:00:5e:xx:xx:xx是IPv4多播地址。

ARP协议简介

地址解析协议(英语:Address Resolution Protocol,缩写:ARP)是一个 通过解析网络层地址来找寻数据链路层地址的网络传输协议 ,它在IPv4中极其重要。

ARP是通过 网络地址 来定位MAC地址。ARP已经在很多 网路层 和 数据链接层 之间得以实现,包括IPv4,Chao.NET, DECnet和Xerox PARC Universal Packet(PUP)使用IEEE 802标准, 光纤分布式数据接口, X.25, 帧中继和异步传输模式(ATM),IEEE 802.3和IEEE 802.11标准上IPv4占了多数流量。

在IPv6中, 邻居发现协议 (NDP)用于代替 地址解析协议 (ARP)。

ARP功能

在以太网协议中规定,同一局域网中的一台主机要和另一台主机进行直接通信,必须要知道目标主机的 MAC地址 。而在TCP/IP协议中,网络层和传输层只关心目标主机的IP地址。这就导致在以太网中使用IP协议时, 数据链路层 的以太网协议接到上层IP协议提供的数据中,只包含目的主机的IP地址。于是需要一种方法, 根据目的主机的IP地址,获得其MAC地址。这就是ARP协议要做的事情。所谓地址解析(address resolution)就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程 。

另外,当发送主机和目的主机不在同一个局域网中时,即便知道对方的MAC地址,两者也不能直接通信,必须经过 路由转发 才可以。所以此时,发送主机通过ARP协议获得的将不是目的主机的真实MAC地址,而是一台可以通往局域网外的 路由器的MAC地址 。于是此后发送主机发往目的主机的所有帧,都将发往该路由器,通过它向外发送。这种情况称为 委托ARP或ARP代理 (ARP Proxy)。

在点对点链路中不使用ARP,实际上在点对点网络中也不使用MAC地址,因为在此类网络中分别已经获取了对端的IP地址。

图解ARP协议

根据OSI数据封装顺序,发送方会自顶向下(从应用层到物理层)封装数据,然后发送出去,如果P1 ping P2,那么发生下图所示过程:

由于MAC是确定物理设备(网卡)唯一标识,那么这个包在数据链路层就会失败,因为没法找到对应的主机,于是有了ARP协议,说得简单点就是根据在发送数据之前,通过IP2获取MAC2的过程:

这时候,有了 [IP1=>IP2, MAC1=>MAC2] ,这两个信息就可以确定主机,并且建立通讯,这时候有个问题,我们图上是一对一的,如果这两个主机不在一个局域网呢?离得很远很远,那怎么办?

解决办法是广播:

当arp协议数据包进行广播时,非目的主机接受到这个包会直接丢弃,接收到这个包的目的主机PC2会直接将信息发送给PC1,注意,由于这时候PC2接收到的包中已经有了PC1的IP地址以及MAC地址,所以不需要广播,直接进行发送进行了。

经过上面的处理,PC1获取了PC2的MAC2地址,就可以把数据包发送出去,之后便可以进行正常的通信。ARP的功能和实现过程是如此的简单:它在发送方需要目标MAC地址的时及时出手,通过"一问一答"的方式获取到特定IP对应的MAC地址,然后存储到本地【ARP缓存表】,后续需要的话,就到这里查找。

ARP缓存表

如果我想向局域网中的某个电脑再发送一个数据,那么我的电脑就会从已有的 ARP缓存表 中寻找这个IP地址对应的物理地址的ARP表项,然后直接将数据写入以太网数据帧中让网卡进行发送即可,而如果没有找到这个IP地址,那么这个数据就没法立即发送,电脑会先在局域网上广播一个 ARP请求 (目标MAC地址为 FF-FF-FF-FF-FF-FF ),广播的ARP请求发出后,处于同一局域网内的所有主机都会接收到这个请求,如果目标IP地址与接收到ARP请求的主机自身IP地址吻合就会返回一个ARP应答,告诉请求者(即我的电脑)自身的MAC地址,当我的电脑收到这个ARP应答后,就去建立一个ARP表项,并且重新将数据发送出去。

ARP协议的核心就是对缓存表的操作,发送数据包的时候,查找ARP缓存表以得到对应的MAC地址,在ARP缓存表中的TTL即将过期的时候更新缓存表以保证ARP表项有效,此外ARP协议还需要不断处理来自局域网中其他主机的ARP请求。

如果两台电脑不在一个网段,电脑查询自己的路由表,知道如果想和博客主机通信则必须通过网关(gateway)来中转, 所以会在与网关直连的网卡上请求网关的MAC地址,因为电脑要把发给PC2主机的数据先发给网关,当合法以太帧到达网关并且顺利接收,网关会将数据递交给IP层,IP层查询路由表,找到与博客主机直连的接口 (假设是直连的,实际上肯定不是直连的),网关会发一个ARP请求到博客主机上,请求它的MAC地址,网关收到应答后将建立新的ARP表项并将开始维护ARP缓存表,然后完成最终的通信。

APR缓存表有一定的时限性,因为ARP是动态处理的,ARP表项的生存时间是一般为5-10分钟(LwIP中默认是5分钟),而ARP请求的等待时间是5秒钟,当这些时间到达后,就会更新ARP表项,如果在物理链路层无法连通则会删除表项, 另外电脑重启的话ARP缓存表会被清空 。因此每个协议栈的实现都必须维护着一个定时器(超时机制)来管理ARP缓存表,在必要的时候更新及删除ARP表项,关于怎么处理的就不多追究,有兴趣的可以看LwIP的etharp_tmr源码。

ARP报文

ARP报文格式如下:

当ARP报文封装在以太网帧中,格式:

在ARP首部一开始的 2个字节 存储的是硬件类型,表示要知道目标网卡的硬件类型,其中,值为 1 表示以太网地址;接下来还有 2字节 的协议类型,其中, 0x0800 表示IP协议,其他还可能是 ICMP/IGMP协议 等;接下来有 1个字节 表示硬件地址长度,指出该报文中硬件地址的长度,对于以太网硬件类型,它的值为6;还有 1字节 的协议地址长度,如果是ARP协议、IP协议等,该值为4;ARP首部最后的op字段用于记录ARP操作的类型,分别是:

  • ARP请求,其值为1。

  • ARP应答,其值为2。

  • RARP请求,其值为3。

  • RARP应答,其值为4。

ARP协议总结
  • ARP(Address Resolution Protocol)即地址解析协议, 用于实现从 IP 地址到 MAC 地址的映射,即询问目标IP对应的MAC地址。

  • 在网络通信中,主机和主机通信的数据包需要依据OSI模型从上到下进行数据封装,当数据封装完整后,再向外发出。所以在局域网的通信中,不仅需要源目IP地址的封装,也需要源目MAC的封装。

  • 一般情况下,上层应用程序更多关心IP地址而不关心MAC地址,所以需要通过ARP协议来获知目的主机的MAC地址,完成数据封装。

来源:https://www.cnblogs.com/Courage129/p/14322842.html



Tags:ARP   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
搞懂C#文件压缩:SharpZipLib vs. DotNetZip,实用代码一网打尽!
在C#中,有两个热门的文件压缩解析类库分别是SharpZipLib和DotNetZip。以下是它们的简要介绍以及使用实例代码。1. SharpZipLib功能: 支持ZIP和GZip格式的压缩和解压缩。 提供...【详细内容】
2023-12-31  Search: ARP  点击:(14)  评论:(0)  加入收藏
Python GUI 编程:dearpygui 和 tkinter 的对比与选择!
随着Python在GUI(图形用户界面)编程中的不断发展,出现了许多优秀的库,如dearpygui和tkinter。这两个库在许多方面都有所不同,不仅是在功能方面,还在设计哲学和用途上。本文将对...【详细内容】
2023-11-28  Search: ARP  点击:(232)  评论:(0)  加入收藏
微信 iOS 版 8.0.41 “史诗级更新”:已支持CarPlay和锁屏小组件
IT之家 8 月 30 日消息,iOS 微信近日推出了 v8.0.41 新版本,虽然官方更新说明只是简单地提到了“解决了一些已知问题”,但实际上这个版本增加了几个有用的新功能,包括对 CarPlay...【详细内容】
2023-08-30  Search: ARP  点击:(208)  评论:(0)  加入收藏
OpenAI大神Karpathy最新分享:为什么OpenAI内部对AI Agents最感兴趣
Andrej Karpathy这位OpenAI联合创始人最近在一个开发者活动上发表简短讲话,谈论了自己和OpenAI内部对AI Agents (人工智能代理人)的看法。Andrej Karpathy 对比了过去开发AI Ag...【详细内容】
2023-06-27  Search: ARP  点击:(72)  评论:(0)  加入收藏
C# WinForms使用CefSharp内嵌网页
CefSharp是一个基于Chromium的开源.NET库,可以在C#应用程序中嵌入Web浏览器。以下是使用CefSharp内嵌网页的步骤: 1. 安装CefSharp NuGet包:在Visual Studio中打开NuGet包管理...【详细内容】
2023-05-22  Search: ARP  点击:(483)  评论:(0)  加入收藏
强大的 Python GUI 库-DearPyGui
DearPyGui是一个GitHub上优秀的开源项目,目前项目点赞数已达:9.8k,底层采用 GPU 渲染提供了卓越的性能,内置多种现成的部件和样式控制,文档详细包含丰富的示例,可以轻松上手。 开...【详细内容】
2023-03-19  Search: ARP  点击:(530)  评论:(0)  加入收藏
和CarLife相比,CarPlay哪里好用?
我想大多数有车的朋友都“讨厌”CarLife。相反,苹果的CarPlay备受推崇,很多人甚至因为支持CarPlay而考虑买车。也有很多车只原生支持CarLife,车主特意买个外接盒换成CarPlay。...【详细内容】
2023-01-05  Search: ARP  点击:(455)  评论:(0)  加入收藏
最新Apple CarPlay的五大新功能
在移动互联时代,汽车不再只是交通工具那么简单,在智能车机互联方面,Apple CarPlay已经变得极为成熟,这个功能也是车主们最离不开的配置之一,那么2023年最新版本的Apple CarPlay有...【详细内容】
2023-01-04  Search: ARP  点击:(472)  评论:(0)  加入收藏
一份学霸级的ARP学习笔记!引起众多网工纷纷收藏!
前置知识:MAC地址在说到ARP协议之前,需要了解MAC地址,在OSI七层模型中,第三层是网络层,要解决的是下一跳机制确定的设备位置,具体来说就是网卡地址,MAC地址用于在网络中唯一...【详细内容】
2022-10-30  Search: ARP  点击:(328)  评论:(0)  加入收藏
.NET 图像处理库 ImageSharp 退出 .NET 基金会
ImageSharp 是一个流行的 .NET 项目,也是 .NET 生态中强大、跨平台的图像处理库。...【详细内容】
2022-10-24  Search: ARP  点击:(491)  评论:(0)  加入收藏
▌简易百科推荐
手机就可以修改WiFi密码,进行网络提速,还能防止别人蹭网
随着网络的普及和使用频率的增加,很多人可能遇到了一些网络管理上的问题,比如忘记了WiFi密码、网络速度缓慢、或者发现有不明设备在家中蹭网。相信朋友们也曾遇到过吧?但是,你知...【详细内容】
2024-04-03  老毛桃    Tags:WiFi密码   点击:(7)  评论:(0)  加入收藏
手机WiFi信号满格却接收消息延迟?这里有妙招帮你解决!
在现代社会,手机已经成为了我们生活中不可或缺的一部分。无论是工作、学习还是娱乐,手机都扮演着重要的角色。然而,有时我们会遇到一些令人烦恼的问题,比如明明手机WiFi信号满格...【详细内容】
2024-04-03  蔡前进    Tags:手机WiFi   点击:(6)  评论:(0)  加入收藏
SASE技术应用落地的五个关键趋势
在Gartner 最新发布的《2023网络技术成熟度曲线》报告中认为,SASE技术已经开始走出最初的技术炒作期,将逐步迈向新一轮的实用落地阶段。在Gartner发布的《Hype Cycle for Ente...【详细内容】
2024-04-01    安全牛  Tags:SASE   点击:(10)  评论:(0)  加入收藏
提示“该网站安全证书存在问题,连接可能不安全”如何解决
在你输入网址并浏览网页时,如果你的浏览器弹出一个警告,提示“网站的安全证书存在问题”,或是显示一个红色的锁标志,这些都是网站不安全的警示。这些提示通常是由HTTPS协议中的S...【详细内容】
2024-03-18  倏然间    Tags:网站安全证书   点击:(9)  评论:(0)  加入收藏
如何有效排除CAN总线错误
控制器局域网(CAN)控制器局域网(CAN)是现代车辆中电子元件无缝运行的基础。在远程信息处理领域,CAN总线系统的效率至关重要,其能够实现支撑当今汽车技术的复杂功能。然而,CAN总...【详细内容】
2024-02-20    千家网  Tags:CAN   点击:(49)  评论:(0)  加入收藏
网络连接受限或无连接怎么办?这里提供几个修复办法
可能错误提示 连接受限或无连接:连接具有有限的连接或无连接。你可能无法访问Internet或某些网络资源。 连接受限。排除和解决“连接受限或无连接”错误此错误可能由计算机上...【详细内容】
2024-02-06  驾驭信息纵横科技    Tags:网络连接受限   点击:(43)  评论:(0)  加入收藏
如何将Mac连接到以太网?这里有详细步骤
在Wi-Fi成为最流行、最简单的互联网连接方式之前,每台Mac和电脑都使用以太网电缆连接。这是Mac可用端口的标准功能。如何将Mac连接到以太网如果你的Mac有以太网端口,则需要以...【详细内容】
2024-02-03  驾驭信息纵横科技    Tags:Mac   点击:(66)  评论:(0)  加入收藏
简易百科之什么是端口映射
端口映射,也称为端口转发,是一种网络通信中的技术手段,通过将内网中的一个端口上的数据流量转发到另一个端口,使得外部网络能够访问到内部网络中的特定服务。在实现上,端口映射通...【详细内容】
2024-01-26    简易百科  Tags:端口映射   点击:(156)  评论:(0)  加入收藏
ip因频繁登陆已被禁止访问 无法显示图片 怎么办
首先,我们要明白,部分网站为了有效遏制数据爬取和非法攻击,保证访问速度和普通用户查询,会在系统中增加网络安全设备,加强安全防护机制,并提前设置安全访问规则。因此,一旦用户的行...【详细内容】
2024-01-20  何福意思    Tags:ip   点击:(64)  评论:(0)  加入收藏
电脑连上wifi却上不了网怎么办
当电脑连接上 WiFi 却无法上网时,可能会让人感到困惑和沮丧。这个问题通常会有多种可能的原因,包括网络配置问题、路由器故障、无线适配器问题等。在面对这个问题时,可以尝试以...【详细内容】
2024-01-16  编程资料站    Tags:wifi   点击:(69)  评论:(0)  加入收藏
站内最新
站内热门
站内头条