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

一份学霸级的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   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
前置知识:MAC地址在说到ARP协议之前,需要了解MAC地址,在OSI七层模型中,第三层是网络层,要解决的是下一跳机制确定的设备位置,具体来说就是网卡地址,MAC地址用于在网络中唯一...【详细内容】
2022-10-30  Tags: ARP  点击:(0)  评论:(0)  加入收藏
ImageSharp 是一个流行的 .NET 项目,也是 .NET 生态中强大、跨平台的图像处理库。...【详细内容】
2022-10-24  Tags: ARP  点击:(11)  评论:(0)  加入收藏
在实际应用中,我们经常遇到这样的问题:已知一个机器的 IP 地址,但在实际网络的链路上传送数据帧时,最终还是必须使用该网络的硬件地址,需要知道其 MAC 地址。如果两个都需要去记忆或输入,大大增加了其繁琐程度。地址解析协...【详细内容】
2022-10-07  Tags: ARP  点击:(18)  评论:(0)  加入收藏
以太网首部目地MAC地址(8字节)源MAC地址(8字节)类型(2字节)1、IP头的结构 (1)字节和数字的存储顺序是从右到左,依次是从低位到高位,而网络存储顺序是从左到右,依次从低位到高位。(2)版本:...【详细内容】
2022-08-29  Tags: ARP  点击:(110)  评论:(0)  加入收藏
搜图编辑搜图无线 CarPlay 适配器真的有效吗?几年前我买了两辆车。本田思域配备有线 Apple CarPlay。本田 HR-V 有一个基本的娱乐系统,我用带有无线 CarPlay的 Alpine 装置进...【详细内容】
2022-08-21  Tags: ARP  点击:(53)  评论:(0)  加入收藏
当我们在使用CarPlay时,页面上可能会出现一个小汽车的图标,那你知道这个小汽车的图标是什么意思吗? 这个功能是专注模式,在iOS15中新增的重点功能,同样应用到CarPlay。 在CarPlay...【详细内容】
2022-08-15  Tags: ARP  点击:(99)  评论:(0)  加入收藏
广播:将广播地址作为目的地址的数据帧;每个网段的最后一个IP地址就是该网段的广播地址。如(10.1.1.0/24中的10.1.1.255就是该网段的广播地址)广播域:网络中能接收到同一个广播所...【详细内容】
2022-08-01  Tags: ARP  点击:(79)  评论:(0)  加入收藏
前言内核里面已经有网络协议栈了,为什么还要实现一遍用户态协议栈呢,主要是站在一个设计者的角度,自己去尝试实现一个协议栈,那么对协议栈的理解会比较透彻,这不比背八股文强?获取...【详细内容】
2022-07-21  Tags: ARP  点击:(75)  评论:(0)  加入收藏
两部手机先连哪个?问:“我和我老婆的手机,都连过车上的无线Carplay,当我们同时拿着手机,出现在车里时,请问无线Carplay,会连哪个人的手机?” CarlinKit 车连易盒子连接保时捷718今天...【详细内容】
2022-06-14  Tags: ARP  点击:(133)  评论:(0)  加入收藏
不少车主在使用Carplay的时候,有这么一个难点:怎么在启动carplay以后,让它自动播放歌曲,而不是再去手戳戳,或者喊Siri。有的车是自动播放音乐,无需设置,如果你的车不支持的话,可以...【详细内容】
2022-05-20  Tags: ARP  点击:(180)  评论:(0)  加入收藏
▌简易百科推荐
前置知识:MAC地址在说到ARP协议之前,需要了解MAC地址,在OSI七层模型中,第三层是网络层,要解决的是下一跳机制确定的设备位置,具体来说就是网卡地址,MAC地址用于在网络中唯一...【详细内容】
2022-10-30  网络工程师阿龙    Tags:ARP   点击:(0)  评论:(0)  加入收藏
IPv4到IPv6的过渡技术主要有双栈协议,隧道技术和网络地址转换-协议地址转换技术三种技术方案,接下来中科三方将分三篇文章分别针对这三种技术的原理和应用场景做下简单介绍。...【详细内容】
2022-10-28  中科三方    Tags:IPv6   点击:(0)  评论:(0)  加入收藏
WLAN在使用过程中,有时候会发现无线终端(STA)在ping其他设备时,会出现连续丢包现象。这种情况下可能还伴随ping延时增大(几百毫秒),并导致一些应用感觉不是很好,例如下载速度变慢、...【详细内容】
2022-10-25  山里娃007  今日头条  Tags:丢包   点击:(6)  评论:(0)  加入收藏
现在的web项目,很多都是前后端分离,特别容易出现跨域问题那么什么是跨域问题呢?本篇文章带你彻底从本质上弄明白什么是跨域问题以及如何解决一 跨域有什么现象?我们先看一下现象...【详细内容】
2022-10-19  HelloWorld开发者社区    Tags:跨域   点击:(24)  评论:(0)  加入收藏
随着企业终端的多样化,以及大量的远程办公需求。IT人员使用传统的远程桌面功能很难来完成排查计算机和服务器的故障的任务了。他们需要可以随时随地远程、并且具体有更多功能...【详细内容】
2022-10-18  舒科技    Tags:远程桌面   点击:(9)  评论:(0)  加入收藏
写了不少文章讲解不同厂商设备的配置,很多小伙伴希望我给讲讲如何构建一个大型企业网,这里我借一个实例讲讲中大型企业网络如何搭建。所有实验配置我全部无偿奉献给各位小伙伴...【详细内容】
2022-10-18  山里娃007  今日头条  Tags:企业网络   点击:(22)  评论:(0)  加入收藏
路由器,可以说现在的每家每户基本上都有安装,因为只有安装了路由器,我们的手机、电脑、平板以及网络电视才能通过路由器的wifi功能进行上网,那么我们的路由器每天需不需要重启呢...【详细内容】
2022-10-13  小俊爱分享  搜狐号  Tags:路由器   点击:(11)  评论:(0)  加入收藏
工业交换机的软件故障是指系统及其配置上的故障,当发现工业交换机在通信中出现问题,怀疑是工业交换机出现问题后,那么我们该怎么进行应对呢?(1)系统错误:工业交换机系统是硬件和...【详细内容】
2022-10-08  交换机知识分享z  搜狐号  Tags:交换机   点击:(12)  评论:(0)  加入收藏
我原本对wifi信号的强弱是没有什么要求的,偶尔看看网页和视频,也没有觉得卡顿。直到前两年开始玩游戏,才感受到了“wifi信号不满格”的恐惧。从那时候起,我就致力于找到wifi全屋...【详细内容】
2022-10-08  多多生活馆     Tags:组网方案   点击:(14)  评论:(0)  加入收藏
手机怎样远程控制另一部手机或电脑?相信很多人都碰到这种情况,朋友或亲人电话咨询我们,问我们怎样操作手机或电脑上的某一个功能,可是我们又不在他们身边,没办法帮他们操作,这个时...【详细内容】
2022-10-06  蓝猫真懒  搜狐号  Tags:远程协助   点击:(17)  评论:(0)  加入收藏
站内最新
站内热门
站内头条