ARP协议:地址解析的“翻译官”

核心概念

ARP(Address Resolution Protocol,地址解析协议)是一种用于将网络层地址(IP地址)解析为数据链路层地址(MAC地址)的协议。
“地址解析”就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址(将32位IP地址映射为48位MAC地址 )

为什么需要ARP?

在局域网中,当主机或其它三层网络设备有数据要发送给另一台主机或三层网络设备时,需要知道对方的网络层地址(即IP地址)。但是仅有IP地址是不够的,因为IP报文必须封装成帧才能通过物理网络发送,因此发送方还需要知道接收方的物理地址(即MAC地址)

ARP类型

常见的分为静态ARP和动态ARP两类
【动态ARP】
动态ARP表项由ARP协议通过ARP报文自动生成和维护可以被老化,可以被新的ARP报文更新,也可以被静态ARP表项覆盖
(适用于拓扑结构复杂、通信实时性要求高的网络 )
【静态ARP】
静态ARP表项是由网络管理员手工建立的IP地址和MAC地址之间固定的映射关系。静态ARP表项不会被老化,不会被动态ARP表项覆盖

正常情况下网络中设备可以通过ARP协议进行ARP表项的动态学习,生成的动态ARP表项可以被老化,可以被更新。但是当网络中存在ARP攻击时,设备中动态ARP表项可能会被更新成错误的ARP表项

静态ARP表项不会被老化,也不会被动态ARP表项覆盖,可以保证网络通信的安全性。

还有一些其他的ARP
【免费ARP】
设备主动使用自己的IP地址作为目的IP地址发送ARP请求

用于IP地址冲突检测通告一个新的MAC地址、在VRRP备份组中用来通告主备发生变换

当设备接口的协议状态变为Up时,设备主动对外发送免费ARP报文。正常情况下不会收到ARP应答,如果收到,则表明本网络中存在与自身IP地址重复的地址。

发送方更换了网卡,MAC地址变化了,为了能够在动态ARP表项老化前通告网络中其他设备,发送方可以发送一个免费ARP 发生主备变换后,Master设备会广播发送一个免费ARP报文来通告发生了主备变换

【Proxy ARP】
如果ARP请求是从一个网络的主机发往同一网段但不在同一物理网络上的另一台主机,那么连接这两个网络的设备就可以回答该ARP请求,这个过程称作ARP代理(Proxy ARP)。

工作原理——如何进行地址解析

动态ARP通过广播ARP请求单播ARP应答这两个过程完成地址解析

当需要通信的两台主机处于同一网段时,如上图中的Host_1和Host_3,Host_1要向Host_3发送数据:
Host_1:我是10.10.70.1,硬件地址是00-e0-fc-12-34-56,我想知道主机10.10.70.3的硬件地址

Host_3:我是10.10.70.3,硬件地址是00-e0-fc-12-34-58

ARP协议的广播请求无法穿越路由器,仅限于同一广播域内

  1. 查ARP表并发送请求:Host_1先查ARP表。若找到Host_3的MAC地址,则直接封装发送;若未找到,则缓存数据,并广播ARP请求(OP=1),请求中包含自身IP/MAC,目的IP为Host_3的IP,目的MAC为全0。
  2. 交换机转发请求:Switch_1收到ARP请求后,在广播域内泛洪转发。
  3. 目标主机回应:Host_3收到后,将Host_1的IP-MAC映射存入自身ARP表,并向Host_1单播发送ARP应答(OP=2),包含自己的IP和MAC地址。
  4. 接收应答并通信:Switch_1将ARP应答转发给Host_1。Host_1收到后,将Host_3的MAC地址存入ARP表,封装并发送缓存的数据。

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

Host_1首先会发送ARP请求报文,请求网关Router的IP地址对应的MAC地址。Host_1收到ARP应答报文后,将数据报文封装并发给网关,再由网关将数据报文发送给目的主机Host_4

Host_1学习网关IP地址对应的ARP表项的过程,以及网关设备学习Host_4的IP地址对应的ARP表项的过程与上述同网段主机Host_1和Host_3之间进行ARP地址解析的过程类似

ARP帧格式

ARP是一个独立的三层协议,所以ARP报文在向数据链路层传输时不需要经过IP协议的封装,而是直接生成自己的报文,其中包括ARP报头,到数据链路层后再由对应的数据链路层协议(如以太网协议)进行封装。

  • 硬件类型:表示ARP报文可以在哪种类型的网络上传输(值为1表示为以太网地址)
  • 上层协议类型:表示硬件地址要映射的协议地址类型(映射IP地址时的值为0x0800)
  • MAC地址长度:标识MAC地址长度
  • IP协议地址长度:标识IP得知长度
  • 操作类型:指定本次ARP报文类型(1:请求报文,2:应答报文)
  • 源MAC地址:标识发送设备的硬件地址。
  • 源IP地址:标识发送方设备的IP地址。
  • 目的MAC地址:表示接收方设备的硬件地址,在请求报文中该字段值全为0,即00-00-00-00-00-00,表示任意地址
  • 目的IP地址:表示接受方的IP地址。

ARP表

设备通过ARP解析到目的MAC地址后,将会在自己的ARP表中增加IP地址到MAC地址的映射表项,以用于后续到同一目的地报文的转发。

动态ARP表项由ARP协议通过ARP报文自动生成和维护,可以被老化,可以被新的ARP报文更新,可以被静态ARP表项覆盖。当到达老化时间、接口down时会删除相应的动态ARP表项。

动态ARP表项的老化参数有:老化超时时间、老化探测次数和老化探测模式。

设备上动态ARP表项到达老化超时时间后,设备会发送老化探测报文(即ARP请求报文),如果能收到ARP应答报文,则更新该动态ARP表项,本次老化探测结束;如果超过设置的老化探测次数后仍没有收到ARP应答报文,则删除该动态ARP表项,本次老化探测结束。

ARP表、MAC表、路由表

MAC表:记录MAC地址与交换机端口的映射关系

动态学习流程:
        PC1从端口G1/0/1发送数据帧
        交换机提取源MAC,写入MAC表

ARP表:维护IP地址与MAC地址的映射关系

路由表:决定数据包的最佳转发路径
(匹配原则:最长掩码匹配 )

【三表协同工作】
假设:
PC1
:IP 为192.168.1.5,属于 VLAN 10(假设)
PC2:IP 为10.1.1.10,属于 VLAN 20(假设)

路由表查询:找到匹配10.1.1.0/24网段的路由条目,确定下一跳为 Vlanif20 接口(IP 为 172.16.1.1)
ARP表查询:下一跳的 IP 地址(172.16.1.1)查询ARP 表,寻找 “IP 地址172.16.1.1对应的 MAC 地址”
MAC表查询:PC1 将数据包封装为数据帧(目的MAC为下一跳,源MAC为自身),发送至交换机。交换机查MAC表,根据目的MAC查找对应端口进行转发。

VLAN技术:广播域的 “隔离墙”

无VLAN的问题

早期以太网采用CSMA/CD,主机过多时易冲突、广播泛滥,导致性能下降甚至网络瘫痪。二层设备虽可减少冲突,但无法隔离广播和显著提升网络质量。

传统局域网的局限性:

  • 广播风暴:传统局域网(LAN)中所有设备处于同一广播域,广播流量可能导致网络拥塞。
  • 安全性不足:所有设备可直接通信,难以隔离敏感数据。
  • 管理僵化:物理拓扑变更需重新布线,灵活性差。

在这种情况下出现了VLAN技术。这种技术可以把一个LAN划分成多个逻辑的VLAN,每个VLAN是一个广播域,VLAN内的主机间通信就和在一个LAN内一样,而VLAN间则不能直接互通,广播报文就被限制在一个VLAN内。

什么是VLAN

VLAN(Virtual Local Area Network)即虚拟局域网,是将一个物理的LAN在逻辑上划分成多个广播域的通信技术。每个VLAN是一个广播域,VLAN内的主机间可以直接通信,而VLAN间则不能直接互通。
(其技术标准是在1999年6月发布的IEEE 802.1q标准,而最早的VLAN技术是在1996年就由Cisco提出了 )

  • 限制广播域:广播域被限制在一个VLAN内,节省了带宽,提高了网络处理能力。
  • 增强局域网的安全性:不同VLAN内的报文在传输时相互隔离,即一个VLAN内的用户不能和其它VLAN内的用户直接通信。
  • 提高了网络的健壮性:故障被限制在一个VLAN内,本VLAN内的故障不会影响其他VLAN的正常工作。
  • 灵活构建虚拟工作组:用VLAN可以划分不同的用户到不同的工作组,同一工作组的用户也不必局限于某一固定的物理范围,网络构建和维护更方便灵活。

VLAN的划分方式

VLAN的划分有5种常见的方式,基于接口、MAC地址、子网、协议和策略进行划分。基于接口简单直接,适合固定设备;而基于策略则灵活安全,适用于复杂环境。在实际部署中,应根据网络规模、用户流动性及管理需求选择合适的方式。

VLAN Tag和VLAN ID

交换机内部处理的数据帧都带有VLAN标签

要使交换机能够分辨不同VLAN的报文,需要在报文中添加标识VLAN信息的字段。

IEEE 802.1Q协议规定,在以太网数据帧中加入4个字节的VLAN标签(又称VLAN Tag,简称Tag),用以标识VLAN信息。

  • TPID:固定值0x8100,标识802.1Q帧。
  • PRI:3位优先级(用于QoS)。
  • CFI:1位规范格式指示符。
  • VID:12位VLAN ID(范围1-4094)

未打标签的流量默认属于Native VLAN(也叫本征vlan,通常为VLAN 1)

交换机内部处理的数据帧都带有VLAN标签。而交换机连接的部分设备(如用户主机、服务器)只会收发不带VLAN tag的传统以太网数据帧。因此,要与这些设备交互,就需要交换机的接口能够识别传统以太网数据帧,并在收发时给帧添加、剥除VLAN标签。添加什么VLAN标签,由接口上的缺省VLAN(Port Default VLAN ID,PVID)决定

VLAN的接口类型和VLAN标签的处理机制

现实网络中同一VLAN的用户可能跨交换机连接,且存在多个跨交换机VLAN。为实现互通,交换机间接口需能识别和转发多VLAN数据帧。根据连接对象和数据帧处理方式的不同,VLAN接口有多种类型,以适应不同组网需求。

对于华为设备来说,常见的VLAN接口类型有三种,包括:AccessTrunkHybrid
在一个VLAN交换网络中,以太网数据帧主要有以下两种形式:
无标记帧(Untagged帧):原始的、未加入4字节VLAN标签的帧。
有标记帧(Tagged帧):加入了4字节VLAN标签的帧

交换机内部处理的数据帧一律都带有VLAN标签,而现网中交换机连接的设备有些只会收发Untagged帧,要与这些设备交互,就需要接口能够识别Untagged帧并在收发时给帧添加、剥除VLAN标签。同时,现网中属于同一个VLAN的用户可能会被连接在不同的交换机上,且跨越交换机的VLAN可能不止一个,如果需要用户间的互通,就需要交换机间的接口能够同时识别和发送多个VLAN的数据帧

不同VLAN之间的互通

【通信场景1】:不同VLAN不同网段用户间的通信,用户通过三层交换机互联

要实现VLAN间互通,就要建立VLAN间路由,此场景用户直连在三层交换机上,只需直连路由即可。

VLANIF接口是一个三层的逻辑接口,在其上配置IP地址为用户的网关地址后,它就在三层交换机上生成直连路由,同时,可作为用户的网关。 发往各VLAN网段的报文,就可在路由表中分别找到其出接口--VLANIF接口,从而实现三层转发。

【通信场景2】:不同VLAN不同网段用户间的通信,用户通过二层交换机互联,仅通过一台三层交换机实现VLAN间通信。

(使用技术:子接口,又称单臂路由)
 

跟VLANIF一样,子接口也是三层逻辑接口。

在子接口上配置IP地址为用户的网关地址后,在三层交换机上同样形成直连路由,VLAN内的用户同样将网关指向对应的子接口(如图中VLAN2内用户的网关为Port1.1,VLAN3内用户的网关为Port2.1),进而实现三层通信。

通过子接口实现三层互通,虽然可减少物理接口占有量,不过由于发送的流量会争用物理主接口的带宽,网络繁忙时,会导致通信瓶颈

【通信场景3】:不同VLAN不同网段用户间的通信,用户通过二层交换机互联,仅通过一台三层交换机实现VLAN间通信。

(使用技术:Super VLAN,又称VLAN聚合)
如下图所示,因IP地址有限,不同VLAN用户共用一网段,但又需要互通以及访问外网。

Super-VLAN只用来建立三层VLANIF接口,与网关对应,不包含物理接口;Sub-VLAN只包含物理接口,不建立三层VLANIF接口,用来隔离广播域,一个Super-VLAN可以包含一个或多个Sub-VLAN

Sub-VLAN只映射物理接口,负责保留各自独立的广播域;

而Super-VLAN负责实现所有Sub-VLAN共享同一个三层接口的需求,使不同Sub-VLAN内的主机可以共用同一个网关;

再通过建立Super-VLAN和Sub-VLAN间的映射关系,把三层逻辑接口和物理接口这两部分有机的结合起来,从而在实现普通VLAN功能的同时,达到节省IP地址的目的。

上述组网中,VLAN间用户均是通过三层交换机实现三层互通,三层互通需要查找路由表,转发效率较低

【通信场景4】:不同VLAN用户跨一台或多台交换机互联

(使用技术:VLAN Switch)

预先在各交换节点(如图中的Switch)上建立一条静态转发路径(即VLAN Switch表,指定VLAN转换关系和出接口)。

Switch根据VLAN Switch表将Port2上收到报文中的VLAN2转换为VLAN3,并从Port3发出;

将Port3上收到报文的VLAN3将转换为VLAN2,并从Port2发出,从而实现VLAN2和VLAN3间的二层互通。

VLAN Switch转发查的是VLAN Switch表,而不是MAC表,这就使得VLAN Switch转发效率较高。

【通信场景5】:不同VLAN用户跨运营商网络互联

(使用技术:VLAN Mapping)

在VLAN转换两端设备(如SwitchA、SwitchB)配置VLAN映射关系。SwitchA将入向的VLAN10~50报文转换为VLAN100,经运营商网络传输至SwitchB后,再将VLAN100转换为VLAN60~90并转发。转换仅在两端配置,运营商网络无需修改,简化部署。

VLAN Mapping虽然大大简化配置,但VLAN Mapping需要通过查MAC表转发,转发效率上较VLAN Switch低些,并且易引入广播风暴以及收到MAC攻击

广播风暴抑制:网络稳定的 “安全阀”

广播风暴抑制:网络稳定的 “安全阀”

广播风暴的定义

一个数据帧或包被传输到本地网段 (由广播域定义)上的每个节点就是广播

由于网络拓扑的设计和连接问题,或其他原因导致广播在网段内大量复制,传播数据帧,导致网络性能下降,甚至网络瘫痪,这就是广播风暴

简单的讲,当广播数据充斥网络无法处理,并占用大量网络带宽,导致正常业务不能运行,甚至彻底瘫痪,这就发生了“广播风暴”

广播风暴的根本原因

交换机环路:未启用生成树协议(STP)时,交换机级联形成物理环路,广播包在环路中无限转发(例:2 台交换机用 2 根网线连接,无 STP 防护);

PC1 要和 PC2 通信,但 ARP 表中没有 PC2 的 MAC 地址,于是从端口PC1/1发送广播 ARP 请求帧(目标 MAC 为ff:ff:ff:ff:ff:ff),通过S1/2端口进入 Switch1。

Switch1 收到该广播帧后,会:

  • 学习 MAC 地址表:记录S1/2端口对应 PC1 的 MAC(a1);
  • 泛洪转发:将广播帧从除S1/2外的所有端口(S1/3S1/1)转发出去。

Switch1 的S1/3S1/1分别将广播帧发给 Switch2 的S2/3S2/1端口。Switch2 收到后:

  • 学习 MAC 地址表:先记录S2/3对应a1,但后续S2/1也收到同 MAC(a1)的帧,会更新 MAC 地址表,把a1的端口从S2/3改成S2/1
  • 泛洪转发:将广播帧从除接收端口外的所有端口(S2/2S2/1S2/3)转发。其中,S2/2将广播帧发给 PC2,而S2/1S2/3又把广播帧发回 Switch1 的S1/1S1/3端口。

Switch1 收到这些 “回传” 的广播帧后,又会重复学习 MAC 地址表(把a1的端口从S1/3改成S1/1,或反之)和泛洪转发的过程
pc2回复的帧也会在这个环里面进入死循环

恶意广播攻击:病毒 / 恶意软件(如 “冲击波病毒”)向网络发送大量伪造广播包,占用全部带宽;

广播域过大:未划分 VLAN,全网络处于同一广播域,ARP/DHCP 广播累积引发风暴(例:500 台主机未分 VLAN,单次 ARP 广播覆盖所有设备)。

广播风暴抑制技术(生成树协议(STP/RSTP)——破环路 )

生成树协议(Spanning Tree Protocol,STP)是一种经典的二层网络协议,主要用于防止广播风暴。通过选举根桥(基于优先级和MAC地址)构建无环树状网络。各交换机端口根据状态(阻塞、监听、学习、转发)决定是否转发数据,通过阻塞部分端口来消除环路。

假设交换机 1 被选为根桥,它是整个树形网络的 “中心”,所有数据转发都以它为核心展开。对于交换机 3 与交换机 1 之间的链路,STP 会将其中一个端口(如图中标记 “阻塞” 的端口)设置为阻塞状态,使其不转发数据

还有一些其他的广播风暴抑制方法

【端口广播抑制阈值 —— 设上限】
通过设定带宽占比或数据包速率阈值,当端口接收 / 发送的广播包超过阈值时,交换机自动丢弃超额的广播包,避免广播流量占用过多带宽。
【缩小广播域】:划分VLAN ,限制广播包在VLAN之内转发
【关闭冗余服务】:禁用未使用的广播类服务(如多余的 DHCP 服务器、LLMNR 协议),减少无效广播源

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐