ARP/RARP原理介绍+报文分析+配置示例

个人认为,理解报文就理解了协议。通过报文中的字段可以理解协议在交互过程中相关传递的信息,更加便于理解协议。

本文将在RFC文档的基础上进行介绍,以详细介绍。
ARP/RARP原理介绍+报文分析+配置示例_第1张图片

关于ARP基本原理的相关内容,可参考1982年发布的RFC826
关于RARP基本原理的相关内容,可参考1982年发布的RFC903
关于ARP Cache基本原理的相关内容,可参考1989年发布的RFC1122
关于ARP协议的其他介绍,可参考博客《「明知故问」的单播 ARP 请求报文》
关于ARP协议详细字段,可参考lnternet Assigned Numbers Authority的介绍

ARP(Address Resolution Protocol)协议适用于多种环境,此处仅介绍常见以太网中的网络场景。关于Dual MAC FDDI环境下ARP应用可查阅RFC1329等相关文档,关于HIPPI-6400环境下ARP应用可查阅RFC2834等相关文档,关于HIPPI-6400环境下ARP应用可查阅RFC2834等相关文档,关于Fibre Channel环境下ARP应用可查阅RFC4338等相关文档.

目录

ARP/RARP

  • 目录

  • 1.基础内容
  • 2.协议原理
    • 2.1.ARP解析基本过程和RARP
    • 2.2.RFC5227--地址冲突检测
    • 2.3.ARP的缓存机制
    • 2.4.ARP相关命令
    • 2.5.ARP的防攻击
  • 更新

1.基础内容

ARP原理
ARP(Address Resolution Protocol)主要用于地址解析。将IPv4地址与48bits MAC地址进行映射。
RARP原理
RARP(Reverse Address Resolution Protocol)主要用于逆向地址解析。设备知道自身MAC地址,请求对应的IP地址。

RFC826主要介绍了ARP出现的背景及基本内容,其主要用于10M/100M以太网的上层协议地址与链路层的48bits地址的对应关系。此处不再做介绍,直接开始相关内容说明

2.协议原理

2.1.ARP解析基本过程和RARP

假定有如下场景:PC1需要和PC2进行通信的最初始状态。交换机也已进行相关配置保证可进行相应通信。ARP/RARP原理介绍+报文分析+配置示例_第2张图片1@PC1首先启动内部程序进行判定PC2和PC1是否属于同网段,如果是同网段而PC1本地arp缓存中不存在PC2相应的MAC地址就需要进行ARP请求。
在这里插入图片描述//主机上ARP缓存表无相应表项。

2@PC1发送一个广播型arp请求包,封装自己请求的DIP,请求的DMAC为全F
ARP/RARP原理介绍+报文分析+配置示例_第3张图片
3@交换机将该广播包在局域网进行相应泛洪,并将报文的SMAC记录到交换机的MAC缓存表中。
4@PC2收到该广播型arp请求包后,解析arp报文中的Target IP address字段发现请求的是自己的MAC地址。因此进行单播arp回应,并将其记录到本地的arp缓存表中。
ARP/RARP原理介绍+报文分析+配置示例_第4张图片5@PC1收到来自PC2的单播arp回应后也将其MAC记录到arp缓存中。之后PC1和PC2的通信可利用各自缓存表中的信息直接进行交互而无需在进行arp交互直到各自arp缓存表老化。
ARP/RARP原理介绍+报文分析+配置示例_第5张图片
需要注意的是
1@通常情况下ARP的应答为单播包,但是也允许出现广播应答的情形。一种场景是使用DHCP获取地址时。
2@ARP协议直接部署在数据链路层之上,不涉及TCP/IP层。而且设备通常不一定严格要求有arp请求才进行arp应答。对于主机来说只要收到了arp包就解析相应字段记录入arp缓存表。因此很容易收到攻击。IPv6网络下对这种情况有所改善。

RARP相关原理
RARP与ARP工作方式相反。RARP用于设备知道自身物理地址并请求自身物理地址对应IP地址的场景,应答包括能够提供所需信息的RARP服务器发出的IP地址。

在此种情况下,通常有RARP服务器在收到终端请求后指定其IP地址。

2.2.RFC5227–地址冲突检测

在2008年发布的RFC5227–IPv4 Address Conflict Detection中主要介绍了一种IPv4网络环境下的地址冲突检测。检测的主要原理是通过arp协议来实现的。

IPv6网络环境也有相应的机制进行地址冲突检测,不同的是利用ICMPv6的ND协议来实现。ARP协议也无法使用在IPv6环境下。

无论地址是通过人工配置,还是通过从DHCP分配,或者通过任何其他配置信息来源,检测冲突都是有效的。
ARP探测
arp报文Opcode为1–表示请求报文;
Sender MAC Address字段必须包含发送包的接口地址;
Sender IP Address字段必须设置为全零,以避免污染其他主机的ARP缓存表;
Target MAC Address字段被忽略,应该设置为全零;
Target IP Address字段必须设置为被探测的地址。

1@ARP探测时,设备首先等待在0到PROBE_WAIT秒(1s)内的一个随机时间间隔,然后发送PROBE_NUM(3次)探测数据包,每个探测数据包的间隔随机且均匀,间隔PROBE_MIN(1s)到PROBE_MAX秒(2s)。
2@在探测开始至发送最后一个探测包后的ANNOUNCE_WAIT秒(2s)内,如果收到对应的ARP包则认为该地址被占用。注意,此时的ARP包既可以是请求包也可是应答包,只要是探测地址即可。反之该地址未被使用。
3@此外还需要对这一过程进行控制以阻止数据包的过多发送。如果设备在给定接口上遇到MAX_CONFLICTS(10次)或更多地址冲突,那么主机必须限制它在该接口上探测新地址的速率,在RATE_LIMIT_INTERVAL(60s)内不在探测的新地址。

ARP通告/免费ARP
arp报文Opcode为1–表示请求报文;
Sender MAC Address字段必须包含发送者的接口地址;
Sender IP Address字段必须设置为发送者的接口地址;
Target MAC Address字段被忽略,应该设置为全零;
Target IP Address字段必须设置为被探测的地址。

ARP/RARP原理介绍+报文分析+配置示例_第6张图片//免费ARP示例。
ARP探测和ARP通告/免费ARP的区别在于,免费ARP用于说明地址已经被使用了。通常在配置了接口地址时发送。并且主机可以在发送第一个免费ARP后立即开始合法使用IP地址。
如果探测到地址冲突,则可以选择主动发送ARP应答进行刷新直到收到不冲突的ARP报文。
ARP/RARP原理介绍+报文分析+配置示例_第7张图片

需要注意的是IPv4的地址冲突检测ACD严格来说是通过ARP探测来实现的,尽管某种程度上免费ARP也能实现这一功能。但是协议设计者还是进行了相关定义,实际使用时可能不做区分。

2.3.ARP的缓存机制

在2008年发布的RFC1989–Requirements for Internet Hosts – Communication Layers中主要介绍了4种ARP的实现原则。
超时机制:设备应当周期性的超时缓存条目,即使其在使用中。
单播轮询:设备可以周期性的发送点到点的ARP请求,也即单播型的ARP请求。(基于ARP表中已存在相应表项的情况)。如果连续N次轮询没有收到ARP应答,则删除该条目。
链路层通知:根据链路层收到的ARP请求刷新相应的表项。
上层协议:提供一个从顶层协议到链路层的调用,以指示传输问题。通常是清除相应缓存。

2.4.ARP相关命令

常用命令在这里插入图片描述//基于接口设置ARP表项的老化时间。默认20min。与设备厂商有关请注意区分。

在这里插入图片描述//在ARP动态表项老化时,设置ARP探测次数。默认3次

在这里插入图片描述//在ARP动态表项老化时,设置ARP探测间隔。取值1-5s,默认5s。某些设备可能不支持更改。

在这里插入图片描述//在ARP动态表项老化时,设置其探测模式。默认为非单播探测。单播探测情况下,接口在ARP老化前以单播方式发送探测报文。

在这里插入图片描述华为交换机在ARP表老化后的探测请求报文。这里为广播探测,实际上也有可能是单播探测。

在这里插入图片描述//主动发送ARP广播请求报文以探测指定IP是否被使用。
在这里插入图片描述//主动发送ICMP请求报文以探测指定MAC是否被使用。如果未指定IP地址则需要指定ICMP报文的出接口,此时默认以接口所在网段的网络位发送ICMP报文。

其他命令
ARP代理
在这里插入图片描述//路由型ARP代理。使IP地址属于同一网段却不属于同一物理网络的主机间能够相互通信,并且主机上不需要配置缺省网关。

这种情况通常用于网络规划不是很长的情况,例如PC1和PC2分别具有相同子网192.168.1.0/16但是其所连接路由器接口是不同网段192.168.1.0/24和192.168.2.0/24。

在这里插入图片描述//vlan内ARP代理。主要使用在同一个vlan下的二层隔离场景。此时同一个局域网的终端显示其他局域网的终端MAC为指定接口MAC。通常是网关MAC。

在这里插入图片描述//vlan间ARP代理。主要使用在Super-Vlan场景(多个主机具有相同子网但是位于不同vlan/sub-vlan下),用于不同sub-vlan的通信。Super-Vlan为单独个一个vlan。

子接口dot1q的ARP@dot1q termination
在这里插入图片描述//配置子接口对一层Tag报文的终结功能。接收报文时,剥掉报文中携带的Tag后进行三层转发。转发出去的报文是否带Tag由出接口决定。发送报文时,将相应的VLAN信息添加到报文中再发送。

对于NE设备外,可能还需指定封装类型encapsulation dot1q-termination。命令的具体使用还需参考相关内容。

在这里插入图片描述//路由子接口封装dot1q后接口不会主动发送ARP请求报文,导致设备无法通信。需要使能ARP广播=arp broadcast enable。

另一种子接口的配置方式@vlan-type dot1q
在这里插入图片描述指定以太网子接口关联的VLAN,并指定VLAN封装方式。
自动换行
两者的区别在于:

  • 一个子接口vlan-type dot1q只能执行一次绑定一个VLAN,dot1q termination可以执行多次或者通过指定ID段的方式关联多个VLAN;
  • 子接口下可直接执行vlan-type dot1q绑定VLAN,对于dot1q termination,需先在主接口使能mode user-termination和子接口下配置control-vid后才能执行命令dot1q termination绑定VLAN;
  • 默认情况下dot1q termination的子接口不会发送arp广播包,需在子接口下使能arp broadcast enable,而vlan-type dot1q不需要上述操作;
  • vlan-type dot1q子接口支持对报文做8021p/DSCP/eth-type匹配策略。

2.5.ARP的防攻击

ARP/RARP原理介绍+报文分析+配置示例_第8张图片//arp anti-attack rate-limit可以基于接口设置arp的处理值。防止收到大量arp报文。

ARP/RARP原理介绍+报文分析+配置示例_第9张图片//arp anti-attack check user-bind用于设置动态ARP检测(DAI)功能,即对ARP报文与事前确定的绑定表进行匹配检查功能。
设备会将ARP报文对应的源IP、源MAC、接口、VLAN信息和绑定表中的信息进行比较,如果信息匹配,说明发送该ARP报文的用户是合法用户,允许此用户的ARP报文通过,否则就认为是攻击,丢弃该ARP报文。

ARP/RARP原理介绍+报文分析+配置示例_第10张图片//user-bind static用来配置ARP检测(DAI)功能的静态绑定表。

点击此处回到目录

更新

你可能感兴趣的:(网络,运维,linux,网络协议,面试)