本地ARP缓存

ARP(地址解析协议)提供 IP地址与硬件地址之间动态映射。几乎总是用于32位的 IPv4地址和以太网的 48MAC 地址之间的映射。ARP 高速运行的关键是维护每个主机和路由器上的ARP缓存(或者是表)。

该缓存是为每个接口维护从网络层地址到硬件地址的最新映射,当 IPv4 地址映射到硬件地址时,它对应于高速缓存中的一个条目,其正常到期时间是条目创建开始后的 20 分钟,而不完整的条目的超时时间为 3 分钟。

所谓不完整条目指的是解析失败的条目,比如对一个不存在的主机进行 ARP 请求。

查看本地ARP缓存

我们在 LinuxWindows 中可以使用 arp 命令查看缓存。具体的经常使用的 ARP 命令有几个,在下面会提到。这里我们只要知道 arp 命令以及加上 -a 参数的 arp 命令: arp -a

linux# arp
Address                  HWtype  HWaddress           Flags Mask            Iface
_gateway                 ether   00:50:56:fd:7f:ea   C                     ens33
192.168.80.254           ether   00:50:56:fe:3a:6e   C                     ens33
linux# arp -a
_gateway (192.168.80.2) at 00:50:56:fd:7f:ea [ether] on ens33
? (192.168.80.254) at 00:50:56:fe:3a:6e [ether] on ens33
c:\> arp -a
C:\Users\CXF>arp -a
接口: 192.168.80.1 --- 0x15
  Internet 地址         物理地址              类型
  192.168.80.254        00-50-56-fe-3a-6e     动态
  192.168.80.255        ff-ff-ff-ff-ff-ff     静态
  224.0.0.22            01-00-5e-00-00-16     静态
  224.0.0.251           01-00-5e-00-00-fb     静态
  224.0.0.252           01-00-5e-00-00-fc     静态
  239.11.20.1           01-00-5e-0b-14-01     静态
  239.255.255.250       01-00-5e-7f-ff-fa     静态
  255.255.255.255       ff-ff-ff-ff-ff-ff     静态

接口: 192.168.8.1 --- 0x16
  Internet 地址         物理地址              类型
  192.168.8.255         ff-ff-ff-ff-ff-ff     静态
  224.0.0.22            01-00-5e-00-00-16     静态
  224.0.0.251           01-00-5e-00-00-fb     静态
  224.0.0.252           01-00-5e-00-00-fc     静态
  239.11.20.1           01-00-5e-0b-14-01     静态
  239.255.255.250       01-00-5e-7f-ff-fa     静态
  ...

第一个和第二个是在 Linux 环境下,第三个是在 Windows 环境下。
在第一个例子下,每个映射包含有五个元素的条目:主机名(对应的是一个IP地址)、硬件地址类型、硬件地址、标志和本地网络接口。除了标志 Flags 元素以外,其他的元素都很好理解。Flags 包含一个符号 CMP,其中 C类指的是该条目由 ARP 协议动态学习, M 条目是指通过手工输入的条目(使用的命令是 arp -s),而 P 类是手工发布的含义,意外就是说对于任何的 P 类条目,主机对输入的 ARP 请求返回一个 ARP 应答。
第二个例子使用的是 BSD 风格的类似信息。这里给出了主机名和对应的地址,对应的地址类型([ether]表示一个以太网类型的地址),以及映射活动在哪个接口上。

在大多数的实现中,完整条目超时时间为20分钟,而不完整的条目超时时间为3分钟。

ARP例子

这里给出一个使用 ARP 自动学习的例子。
我们试图访问一个不存在的主机(随便想的一个 Ip 地址),但是 ARP 还是会试图解析,最终解析的结果并找不到该 IP 对应的硬件地址,但还是会将这次的查询的结果作为一个不完成的条目放在缓存表中:

linux# arp -a  验证当前ARP缓存条目中不包含将要访问的主机地址的映射
? (192.168.80.250) at <incomplete> on ens33
_gateway (192.168.80.2) at 00:50:56:fd:7f:ea [ether] on ens33

然后我们试图登录一个不存在的主机名:

linux# telnet 192.168.1.250
Trying 192.168.80.250...
telnet: Unable to connect to remote host: No route to host #告诉我们不可达

这个时候我们再来查看本机的 ARP 缓存:

# arp -a
? (192.168.80.254) at 00:50:56:f0:25:1a [ether] on ens33
? (192.168.80.250) at <incomplete> on ens33
_gateway (192.168.80.2) at 00:50:56:fd:7f:ea [ether] on ens33

可以看到刚才访问试图访问的 IP 以及已经被记录在 ARP 缓存中,虽然是一个不完整的条目(没有硬件地址)。

ARP命令

有几个常见的命令可以用于操作 ARP 缓存表。

  1. arp / arp -a
    这两个命令都是用来查看本机的 ARP 缓存表;

  2. arp -d
    加上 -d 选项的命令来删除 ARP 缓存的条目(需要管理员权限或者在Linux 中需要是 root 用户);

  3. arp -s
    使用 -s 选项的命令增加条目,后面需要的是一个 IPv4 地址(或者是主机名)和一个以太网地址。这个 IPv4 地址和以太网地址作为一个条目被添加在缓存中。这个添加的条目是半永久性的(即它在缓存中不会超时,但在系统重启时消失)。

    每天进步一点点!
    2020/7/12   成都
  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值