ARP详细介绍
地址解析协议,根据IP地址获取MAC地址,还能检测地址是否有重复
动态ARP
广播ARP报文寻找目标IP的MAC地址
-
主机1通过发送ARP Request报文获取主机2的MAC地址
由于不知道目的MAC地址,因此ARP Request报文內目的MAC地址为0
-
ARP Request是广播数据帧,因此交换机收到后,会对该帧执行泛洪操作
-
所有主机接收到ARP Request报文后,都会检查他的目的IP与自身的IP地址是否匹配
-
主机2发现IP地址匹配,则会将ARP报文中的发送端MAC地址和发送端IP记录到自己的ARP缓存表中
-
主机2通过发送ARP Reply报文来响应主机1的请求,此时主机2已知主机1的MAC地址,因此ARP Replay是单播数据帧
-
交换机收到单播数据帧后进行转发
路由器在正常情况下不会执行ARP泛洪,因为ARP是工作在数据链路层(第二层)的协议,而路由器主要工作在网络层(第三层)
但是某些路由器支持ARP代理功能,或者某些网络故障或配置错误的情况下,路由器可能会意外地参与ARP泛洪,如果路由器的某个接口被错误地配置为同一子网内的两个不同IP地址的网关,或者网络中存在环路导致ARP请求被无限循环地广播
命令 | 用途 |
---|---|
show ip arp | 思科查看arp缓存表 |
show int e0/0 | 查看接口MAC地址 |
display arp brief | 华为查看arp缓存表 |
arp -a | PC查看ARP缓存表 |
arp -a -N ip | PC查看某一个IP对应的MAC地址 |
为什么第一个包会ping不通?
因为第一个包是ARP协议在探测
动态ARP表项由ARP协议通过ARP报文自动生成和维护,可以被老化,可以被新的ARP报文更新,可以被静态ARP表项覆盖
缺省情况下,动态ARP表项的老化超时时间为1200秒(20分钟)
*被老化指动态ARP表项在一段特定的时间(即老化时间)内如果没有被再次使用或更新,将会被自动从ARP缓存表中删除的过程
静态ARP
静态ARP表项是由网络管理员手工建立的IP地址和MAC地址之间固定的映射关系
静态ARP表项不会被老化,不会被动态ARP表项覆盖
- 短静态ARP表项:手工建立映射关系时,未同时指定VLAN和出接口
- 长静态ARP表项:手工建立映射关系时,同时指定该ARP表项所在VLAN和出接口,可以直接用于报文转发
华为命令 | 用途 |
---|---|
arp static ip mac | 设置静态ARP |
display arp all | 查看arp表项 |
arp expire-time expire-time | 设置动态ARP表项的老化超时时间 |
免费ARP
设备主动使用自己的IP地址作为目的IP地址发送ARP请求
-
IP地址冲突检测:当设备接口的协议状态变为Up时,设备主动对外发送免费ARP报文
正常情况下不会收到ARP应答,如果收到,则表明本网络中存在与自身IP地址重复的地址
如果检测到IP地址冲突,设备会周期性的广播发送免费ARP应答报文,直到冲突解除
-
通告一个新的MAC地址:发送方更换了网卡,MAC地址变化了,为了能够在动态ARP表项老化前通告网络中其他设备,发送方可以发送一个免费ARP
-
在VRRP备份组中用来通告主备发生变换:发生主备变换后,MASTER设备会广播发送一个免费ARP报文来通告发生了主备变换
设备收到免费ARP报文后,进行如下判断:
- 收到免费ARP报文,发现源IP地址和自己的IP地址相同:
- 周期性的广播发送免费ARP应答报文,告知此IP地址在网络中存在冲突,直到冲突解除
- 收到免费ARP报文,源IP地址和自己的IP地址不同:
- 免费ARP报文是在VLANIF接口收到的,并且设备上已经有免费ARP报文中源IP地址对应的动态ARP表项,则进行ARP学习,即根据收到的免费ARP报文更新该ARP表项
- 其余情况收到免费ARP报文后均不进行ARP学习
路由式ARP代理
在上述例子的组网中,主机A需要与主机B通信时,目的IP地址与本机的IP地址位于不同网络,但是由于主机A未配置网关,所以它将会以广播形式发送ARP Request报文,请求主机B的MAC地址
但是,广播报文无法被路由器转发,所以主机B无法收到主机A的ARP请求报文,当然也就无法应答
在路由器上启用代理ARP功能,就可以解决这个问题
启用代理ARP后,路由器收到这样的请求,会查找路由表,如果存在主机B的路由表项,路由器将会使用自己的G0/0/0接口的MAC地址来回应该ARP Request
主机A收到ARP Reply后,将以路由器的G0/0/0接口MAC地址作为目的MAC地址进行数据转发
接口下开启arp :arp-proxy enable (默认关闭)
总结:
ARP代理:
-
当PC没有设置网关,路由器收到一个ARP请求,但是该请求包的目的地址与收到该ARP包的接口IP不一致,并且路由器的路由表中有去往该目的的网关则会把自己接口的MAC地址回复给请求者,PC本地会对每个去往目的条目都产生一条“目的IP+网关MAC”的缓存
-
当目的比较多时则产生的缓存条目也非常多,占用内存,所以建议PC一定要设网关
-
ARP代理默认关闭
ARP 代理的条件
- 路由器拥有去往目标IP的路由
- 接收到arp查询的接口的IP地址和arp请求的目标IP本在一个网段