大数跨境
0
0

以太网技术系列专题三:ARP 技术介绍

以太网技术系列专题三:ARP 技术介绍 通信行业搬砖工
2024-05-16
0
导读:本期文章介绍以太网常用通信技术ARP技术。了解更多通信行业知识,欢迎关注公众号:通信行业搬砖工!





本期通信行业搬砖工会继续介绍以太网常用通信技术专题三:ARP技术技术介绍。了解更多通信行业知识,欢迎关注公众号:通信行业搬砖工














1、IPv4网络中为什么需要ARP协议



ARP(Address Resolution Protocol,地址解析协议)是用来将IP地址解析为MAC地址的协议。主机或三层网络设备上会维护一张ARP表,用于存储IP地址和MAC地址的映射关系,一般ARP表项包括动态ARP表项和静态ARP表项,在计算机网络中起到了至关重要的作用,原因主要有以下几点:
  1. 实现IP与MAC地址的映射:在TCP/IP协议栈中,IP层使用32位的IP地址来标识设备,而数据链路层则使用48位的MAC地址来唯一标识网络上的每个设备。当数据包需要在不同网络层之间传输时,就需要一个机制来实现IP地址到MAC地址的转换。ARP协议就是完成这一任务的关键技术。

  2. 动态学习MAC地址:在大多数情况下,设备的MAC地址是固定的,但IP地址可能会因为网络配置的变化而改变。ARP协议允许设备动态学习网络中其他设备的MAC地址,而无需管理员手动配置。这大大提高了网络的灵活性和可管理性。

  3. 支持无连接的网络服务:ARP协议支持无连接的网络服务,这意味着在发送数据之前,发送方不需要与目标设备建立明确的连接。只要发送方知道目标设备的IP地址,它就可以使用ARP协议来解析出对应的MAC地址,并将数据包发送到目标设备。这种无连接的服务模式简化了网络通信的过程,提高了通信效率。

  4. 处理网络层与数据链路层之间的通信差异:网络层和数据链路层在通信方式和地址表示上存在差异。网络层使用IP地址进行通信,而数据链路层则使用MAC地址。ARP协议在这两个层次之间起到了桥梁的作用,确保数据包能够顺利地从一个层次传递到另一个层次。

  5. 维护网络稳定性和安全性:通过ARP技术,管理员可以配置静态ARP表项,确保特定设备始终使用正确的MAC地址进行通信。这有助于防止ARP欺骗等网络攻击,维护网络的稳定性和安全性。

在局域网中,当主机或其它三层网络设备有数据要发送给另一台主机或三层网络设备时,需要知道对方的网络层地址(即IP地址)。但是仅有IP地址是不够的,因为IP报文必须封装成帧才能通过物理网络发送,因此发送方还需要知道接收方的物理地址(即MAC地址),这就需要一个通过IP地址获取物理地址的协议,以完成从IP地址到MAC地址的映射。地址解析协议ARP即可实现将IP地址解析为MAC地址。










2、ARP协议类型介绍 



ARP(Address Resolution Protocol,地址解析协议)的类型主要包括以下几种:


动态ARP

1、动态ARP表项是由ARP协议通过ARP报文自动生成和维护的。
2、设备启动时会通过广播发送ARP请求,以获取同一局域网内其他设备的MAC地址,并动态地建立ARP表项。
3、这些表项可以被老化(即当一段时间内未使用时会被自动删除),也可以被新的ARP报文更新。
4、动态ARP适用于拓扑结构复杂、通信实时性要求高的网络。


静态ARP

1、静态ARP表项是由网络管理员手工建立的IP地址和MAC地址之间固定的映射关系。
2、静态ARP表项不会被老化,也不会被动态ARP表项覆盖。
3、静态ARP主要用于保证网络通信的安全性和稳定性,特别是在存在ARP攻击风险的网络环境中。
4、静态ARP表项可以限制本端设备和指定IP地址的对端设备通信时只使用指定的MAC地址,从而防止攻击报文修改ARP表项。


免费ARP(Gratuitous ARP)

免费ARP是设备主动使用自己的IP地址作为目的IP地址发送ARP请求的一种特殊形式。主要用于检测IP地址冲突、通告新的MAC地址以及在VRRP备份组中通告主备发生变换等


Proxy ARP

Proxy ARP是一种代理机制,允许一个设备(通常为路由器或三层交换机)对不在同一物理网络上的另一设备的ARP请求作出应答。这使得那些在同一网段但不在同一物理网络上的设备能够相互通信。Proxy ARP可以隐藏物理网络的细节,并使得两个物理网络可以使用同一个网络号。

总之一句话:每种ARP类型都有其特定的应用场景和配置方法,可以根据网络的具体需求和环境选择合适的ARP类型进行配置。












3、 应用举例(网络材料整理)



1、路由式Proxy ARP 
路由式Proxy ARP就是使那些在同一网段却不在同一物理网络上的网络设备能够相互通信的一种功能。
在实际应用中,如果连接设备的主机上没有配置缺省网关地址(即不知道如何到达本网络的中介系统),此时将无法进行数据转发。
如下图所示,Host_1的IP地址为172.16.1.10/16,Host_2的IP地址为172.16.2.20/16,Host_1与Host_2处于同一网段。Switch通过VLAN10和VLAN20连接两个网络,VLANIF10和VLANIF20的IP地址不在同一个网段。


当Host_1需要与Host_2通信时,由于目的IP地址与本机的IP地址为同一网段,因此Host_1以广播形式发送ARP请求报文,请求Host_2的MAC地址。但是,由于两台主机处于不同的物理网络(不同广播域)中,Host_2无法收到Host_1的ARP请求报文,因此也就无法应答。
通过在Switch上启用路由式Proxy ARP功能,可以解决此问题。启用路由式Proxy ARP后,Switch收到ARP请求报文后,Switch会查找路由表。由于Host_2与Switch直连,因此Switch上存在到Host_2的路由表项。Switch使用自己的MAC地址给Host_1发送ARP应答报文。Host_1将以Switch的MAC地址进行数据转发。此时,Switch相当于Host_2的代理。如上图所示,Host_1上的ARP表项中到目的地址Host_2的IP地址对应的MAC地址为Switch的VLANIF10接口的MAC地址。

2、vlan虚接口式proxy ARP
VLAN内Proxy ARP
如果两个用户属于相同的VLAN,但VLAN内配置了端口隔离。此时用户间需要三层互通,可以在关联了VLAN的接口上启动VLAN内Proxy ARP功能。
如下图所示,Host_1和Host_2是Switch设备下的两个用户。连接Host_1和Host_2的两个接口在Switch属于同一个VLAN10。


由于在Switch上配置了VLAN内不同接口彼此隔离,因此Host_1和Host_2不能直接在二层互通。
若Switch的接口使能了VLAN内Proxy ARP功能,可以使Host_1和Host_2实现三层互通。Switch的接口在接收到目的地址不是自己的ARP请求报文后,Switch并不立即丢弃该报文,而是查找该接口的ARP表项。如果存在Host_2的ARP表项,则将自己的MAC地址发送给Host_1,并将Host_1发送给Host_2的报文代为转发。实际上此时Switch相当于Host_2的代理。

VLAN间Proxy ARP

如果两台主机处于相同网段但属于不同的VLAN,用户间要进行三层互通,可以在关联了这些VLAN的接口(例如VLANIF接口或者子接口)上使能VLAN间Proxy ARP功能。
如下图所示,Host_1和Host_2是Switch设备下的两个用户,Host_1和Host_2处于相同网段,但Host_1属于VLAN10,Host_2属于VLAN20。


由于Host_1和Host_2属于不同的Sub-VLAN,Host_1和Host_2不能直接实现二层互通。
如果Switch上使能了VLAN间Proxy ARP功能,可以使Host_1和Host_2实现三层互通。Switch的接口在接收到目的地址不是自己的ARP请求报文后,并不立即丢弃该报文,而是查找ARP表项(包括动态学习的ARP表项和静态配置的ARP表项)。如果存在Host_2的ARP表项,则将自己的MAC地址发送给Host_1,并将Host_1发送给Host_2的报文代为转发。实际上此时Switch相当于Host_2的代理。













4、 ARP地址解析过程





ARP(地址解析协议)的地址解析过程主要涉及到发送端主机和接收端主机之间的交互,以下是其详细步骤:

  1. 发送ARP请求

  2. 当发送端主机A需要发送数据给目标主机B时,它首先会查看本地的ARP缓存。如果缓存中没有目标主机B的MAC地址,主机A会发送一个ARP请求广播包到本地网络上的所有主机。

  3. 接收ARP请求并响应

  4. 网络上的所有主机都会接收到这个ARP请求包,但只有目标主机B会根据自己的IP地址与ARP请求包中的目标IP地址进行比对。如果比对成功(即目标IP地址与主机B的IP地址一致),主机B会发送一个ARP响应包给主机A。

  5. 更新ARP缓存并发送数据

  6. 主机A收到目标主机B的ARP响应包后,会将目标主机B的IP地址和MAC地址插入到本地的ARP缓存中,并将待发送的数据包中的目标MAC地址设置为目标主机B的MAC地址。然后,主机A再次发送数据包给目标主机B。

在整个过程中,ARP协议通过动态或静态的方式建立和维护一个IP地址到MAC地址的映射表,以确保数据包能够在网络层和数据链路层之间正确传输。此外,ARP协议还涉及到一些安全性问题,如ARP欺骗等,需要网络管理员进行适当的安全配置和管理。

请注意,ARP协议是IPv4中网络层必不可少的协议,但在IPv6中已不再适用,而是使用基于ICMPv6协议承载的邻居发现协议(NDP)所替代。











5、 ARP地址解析过程举例




组网场景设计
ARP request:采用广播报文
ARP reply:采用单播报文


当需要通信的两台主机处于同一网段时,如上图中的Host_1和Host_3,Host_1要向Host_3发送数据。

  1. 首先,Host_1会查找自己本地缓存的ARP表,确定是否包含Host_3对应的ARP表项。如果Host_1在ARP表中找到了Host_3对应的MAC地址,则Host_1直接利用ARP表中的MAC地址,对数据报文进行帧封装,并将数据报文发送给Host_3。如果Host_1在ARP表中找不到Host_3对应的MAC地址,则先缓存该数据报文,并以广播方式发送一个ARP请求报文。如上图中所示,OP字段为1表示该报文为ARP请求报文,ARP请求报文中的源MAC地址和源IP地址为Host_1的MAC地址和IP地址,目的MAC地址为全0的MAC地址,目的IP地址为Host_3的IP地址。

  2. Switch_1收到ARP请求报文后,将该ARP请求报文在同一广播域内转发。

  3. 同一广播域内的主机Host_2和Host_3都能接收到该ARP请求报文,但只有被请求的主机(即Host_3)会对该ARP请求报文进行处理。Host_3比较自己的IP地址和ARP请求报文中的目的IP地址,当两者相同时进行如下处理:将ARP请求报文中的源IP地址和源MAC地址(即Host_1的IP地址和MAC地址)存入自己的ARP表中。之后以单播方式发送ARP应答报文给Host_1,ARP应答报文内容如上图中所示,OP字段为2表示该报文为ARP应答报文,源MAC地址和源IP地址为Host_3的MAC地址和IP地址,目的MAC地址和目的IP地址为Host_1的MAC地址和IP地址。

  4. Switch_1收到ARP应答报文后,将该ARP应答报文转发给Host_1。Host_1收到ARP应答报文后,将Host_3的MAC地址加入到自己的ARP表中以用于后续报文的转发,同时将数据报文进行帧封装,并将数据报文发送给Host_3。

当需要通信的两台主机处于不同网段时,涉及三层转发,如上图中的Host_1和Host_4,Host_1上已经配置缺省网关。

1、Host_1首先会发送ARP请求报文,请求网关gateway的IP地址对应的MAC地址。

2、Host_1收到ARP应答报文后,将数据报文封装并发给网关,再由网关gateway将数据报文发送给目的主机Host_4。

3、Host_1学习网关IP地址对应的ARP表项的过程,以及网关设备学习Host_4的IP地址对应的ARP表项的过程与上述同网段主机Host_1和Host_3之间进行ARP地址解析的过程类似,读者朋友们可以依照上述原理自行推导即可。














6、ARP协议的老化(agetime)机制



首先静态ARP表项不涉及老化时间的概念,因此本章节讲述的是动态ARP回话表项的老化机制

在linux内核中,arp表项的老化机制如下图所示:

一个完整的arp条目变化的流程。其中有三个计时器,第一个表示到达delay之后的计时,第二个表示到达reachable的计时,第三个表示条目状态变成stale之后的计时。对于delay和reachable我们不做多解释,重要的状态在于stale。之所以使用stale状态,是因为要减少网络中arp交互的开销,也就是尽量减少arp交互,但当条目变为stale之后,就说明,使用这个条目是不安全的不确定的。但是如果有应用用到这个条目发包,linux内核仍不进行arp交互,而是设立了一个delay的状态,在这个状态的持续过程中,收到了来自邻居的包,那么说明,此条目可用,则转为reachable的状态,如果没有,那么则会真正的进行arp交互,如果还没有,那么说明在这个网络中,此ip已经不对应任何一个mac地址,也没有必要存在了,置为failed。所以可见,linux设计这个缓存机制的目的主要有二,一减少arp交互,二减少条目的增加和删除操作造成的开销。

--------------------------------------------------------

ARP老化机制在交换机上的实现:
这里我们还是复用第五章节部分的组网架构图进行介绍。如上图中所示,如果每次Host_1和Host_3通信前都要发送一个广播的ARP请求报文,会极大的增加网络负担。而且同广播域的所有设备都需要接收和处理这个广播的ARP请求报文,也极大的影响了网络中设备的运行效率(容易引起ARP风暴引发链路震荡)。为了解决以上问题,每台主机或设备上都维护着一个高速缓存,这是ARP高效运行的一个关键。在这个高速缓存中,存放主机或设备最近学习到的IP地址到MAC地址的映射关系,这个就是交换机上常说的动态ARP表项
主机或设备每次发送报文时,会先在本地高速缓存中查找目的IP地址所对应的MAC地址。如果高速缓存中有对应的MAC地址,主机或设备不会再发送ARP请求报文,而是直接将报文发至这个MAC地址;如果高速缓存中没有对应的MAC地址,主机或设备才会广播发送ARP请求报文,进行ARP地址解析。
一方面由于高速缓存的容量限制,另一方面为了保证高速缓存中ARP表项的准确性,设备会对动态ARP表项进行老化和更新


一般情况下从ARP建立的表项之后,转发该IP的最后一个报文开始计时,而且ARP的老化时间是一个可配置的,如果是华为交换机可参考上述配置。

当交换机端口在老化时间内没有再次转发该IP报文来刷新老化时间,当时间超过老化时间后,交换机再次发送探测报文(即ARP请求报文),如果能收到ARP应答报文,则更新该动态ARP表项,本次老化探测结束。如果超过设置的老化探测次数后仍没有收到ARP应答报文,则删除该动态ARP表项。一言以蔽之:从最后一个报文开始倒计时,到达老化时间进行探测,探测成功更新ARP表项,探测失败则删除该ARP动态表项。


注意:在一般情况下,当交换机线卡板的端口,如ge端口、XE端口、CE端口在端口发生链路状态变更(linkstate 从up --> down),那么此时交换机也会删除对应端口的L2/L3转发表和动态ARP表项









7. ARP协议报文格式和字段介绍



ARP报文格式封装图如下图所示

ARP 字段格式介绍  +----------------+----------------+----------------+----------------+  | 硬件类型     | 协议类型     | 硬件地址长度 | 协议地址长度 |  +----------------+----------------+----------------+----------------+  | 操作码       |                                         |  +----------------+-----------------------------------------+  | 源mac             | 源IP              |  +----------------+----------------+----------------+----------------+  | 目的mac             | 目的IP               |  +----------------+----------------+----------------+----------------+

ARP报文各个字段参数意义介绍:

ARP协议介绍到此结束,相信同学们对ARP协议已经有了一定的了解。下期我们继续介绍数据通信领域常用的通信技术,感谢你们的阅读。




作者简介




作者:通信行业搬砖工 云网络高级软件工程师

近14年数通领域行业经验

原华为3Com软件部交换机产品线

现云网络行业从业者

公众号:通信行业搬砖工

更多互联网技术与咨询分享,欢迎关注我们的公众号

通信行业搬砖工





(正文完)

下期预告:网络之路专题三:ARP技术介绍






END




转载与投稿

文章转载需注明:文章来源公众号:通信行业搬砖工,并且附上链接

文章错误之处,欢迎指导斧正,各位大拿留言交流,探讨技术。

| 温馨提示 |

人到中年

年龄成为悬在头顶的达摩克利斯之剑!



欢迎分享、收藏、点赞、转发、留言交流。

点个在看你最好看


【声明】内容源于网络
0
0
通信行业搬砖工
14年通信研发经验,大厂搬砖,分享通信工程技术、经验、行业趋势等内容。
内容 503
粉丝 0
通信行业搬砖工 14年通信研发经验,大厂搬砖,分享通信工程技术、经验、行业趋势等内容。
总阅读19
粉丝0
内容503