地址解析协议(ARP,Address Resolution Protocol)是一种用于在IP网络中将IP地址映射到物理MAC地址的协议。在IP网络中,IP是用于寻址,真正将数据包从一个设备发送到另外一个设备,用于通信的是物理MAC地址。
当设备A知道目标设备B的IP地址但不知道其MAC地址时,设备A会发送一个ARP请求广播到局域网中的所有设备,询问“谁拥有这个IP地址对应的MAC地址?”。
这个ARP请求包含了设备A自己的IP地址和MAC地址,以及要查询的目标IP地址。
当目标设备B收到ARP请求时,会检查其中的目标IP地址是否与自己的IP地址匹配。
如果匹配,设备B会向设备A发送一个ARP响应,包含自己的IP地址和MAC地址。
设备A收到来自设备B的ARP响应后,会将这个IP地址和MAC地址的映射关系存储在自己的ARP缓存中,以便将来的通信不再需要发送ARP请求。
这个映射会在一段时间内保持有效,在缓存过期之前,设备A可以直接使用这个映射进行通信。
在局域网中,设备之间的通信经常需要ARP来确定目标设备的物理地址,以便找到正确的路径来传输数据包。
ARP允许设备在连接到网络时动态地获取其他设备的MAC地址,无需手动配置。这种自动化的过程简化了网络管理,并使设备更容易加入网络。
在动态网络环境中,设备可能会更改其IP地址或移动到不同的子网。ARP允许设备动态地更新地址映射,适应网络中不断变化的情况。
ARP连接了网络层(使用IP地址)和数据链路层(使用MAC地址),促进了不同协议层之间的通信。它帮助不同层级的协议正确交换数据。
Proxy ARP(代理ARP)是一种ARP扩展,用于在一个子网上的设备代理响应其他设备的ARP请求。通常情况下,ARP用于获取在同一子网上的设备的MAC地址。但在某些情况下,设备可能需要与不在同一子网上的设备进行通信,这时候就可以使用代理ARP。
由设备发送的ARP请求或应答消息,即使它没有被请求。这种类型的ARP用于更新网络中其他设备的ARP缓存,并检测网络中重复的IP地址。
反向ARP是与标准ARP相反的过程。允许设备在只知道自己的物理(MAC)地址的情况下确定自己的IP地址的协议。它通常用于无磁盘工作站,这些工作站需要在开始在网络上通信之前找到它们的IP地址。在RARP中,设备根据自己的MAC地址发送一个RARP请求广播,请求分配一个IP地址。RARP服务器会响应该请求,提供一个IP地址给这个设备使用。
标准ARP用于将IPv4地址映射到MAC地址。当一个设备知道要与另一个设备通信的IP地址但不知道该IP地址对应的MAC地址时,它会发送ARP请求广播,询问“谁拥有这个IP地址对应的MAC地址?”其他设备中有该IP地址的设备会响应包含其MAC地址的ARP响应,从而建立起地址映射关系。
恶意用户可以发送虚假的ARP响应,欺骗其他设备将通信路由到错误的目标。这可能导致中间人攻击等安全问题。
如何预防ARP欺骗,可以参考:Cisco交换机关于DHCP SNOOPING的配置指令
ARP缓存有限,恶意攻击者可以通过发送大量虚假ARP请求使得缓存溢出,导致网络服务中断或拒绝服务攻击。
Cisco 交换机清除arp-cache指令:
switch#clear arp-cache ?
interface Clear the entire ARP cache on the interface
<cr>
switch#clear arp-cache interface ?
Async Async interface
Auto-Template Auto-Template interface
BVI Bridge-Group Virtual Interface
CTunnel CTunnel interface
Dialer Dialer interface
FastEthernet FastEthernet IEEE 802.3
Filter Filter interface
Filtergroup Filter Group interface
GigabitEthernet GigabitEthernet IEEE 802.3z
Group-Async Async Group interface
GroupVI Group Virtual interface
Lex Lex interface
Loopback Loopback interface
Null Null interface
Port-channel Ethernet Channel of interfaces
Portgroup Portgroup interface
Pos-channel POS Channel of interfaces
Tunnel Tunnel interface
Vif PGM Multicast Host interface
Virtual-Template Virtual Template interface
Virtual-TokenRing Virtual TokenRing
Vlan Catalyst Vlans
fcpa Fiber Channel
show arp
这个命令可以显示交换机当前的ARP缓存,列出了IP地址和相应的MAC地址。
clear arp-cache
这个命令会清除交换机上的ARP缓存,往往会在网络拓扑发生较大的变化、网络故障排除过程中会用到。但是这个指令也要谨慎使用,清除ARP缓存后,可能会短暂中断网络。
范例参考如下:
arp <IP地址> <MAC地址> arpa
switch(config)#arp 172.30.99.31 f84f.574f.2cc2 ?
arpa ARP type ARPA
sap ARP type SAP (HP's ARP type)
smds ARP type SMDS
snap ARP type SNAP (FDDI and TokenRing)
srp-a ARP type SRP (side A)
srp-b ARP type SRP (side B)
在接口模式下,禁用该接口处理ARPA流量。
switch(config-if)#no arp arpa ?
<cr>