系统中配置错误或过期的 ARP 缓存条目可能是网络连接问题的原因之一。

本文将介绍如何检查和清除不同操作系统中的 ARP 缓存。

什么是 ARP 缓存?

ARP代表地址解析协议,它负责发现MAC地址并将它们映射到IP地址,以便与本地网络上的其他系统成功通信,该协议工作在数据链路层网络之间。

我们的系统不会每次都询问路由器特定设备的位置以及它的 MAC 地址是什么,而是使用先前解析的 IP 地址进行连接。

当我们的系统使用 ARP 协议找到特定 IP 地址的 MAC 地址时,它们将存储在一个表中以供将来使用,此表称为 ARP 缓存,它包含已知 IP 地址及其 MAC 地址的列表。

ARP 请求是广播,ARP 回复是单播。

什么时候清除ARP缓存?

如果网络链接设备的 IP 地址发生更改,ARP 条目可能会损坏或过期,并且新条目可能不会总是覆盖数据库的过期条目。

因此,它可能会影响网络性能并可能导致加载或连接问题,在这种情况下,您可以简单地清除 ARP 缓存来解决问题,因为清除 ARP 缓存会导致您的所有请求再次经过整个 ARP 过程,在此过程中,新条目将保存在 ARP 表中。

在重建ARP缓存表的过程中可能会出现一些错误,所以不建议一直删除ARP缓存,相反,您也可以重新启动路由器或系统来解决连接问题。

如何清除ARP缓存?

我们可以使用命令行轻松清除任何操作系统中的 ARP 缓存,让我们开始吧。

Windows

第 1 步:打开命令提示符并以管理员身份运行。

第 2 步: 要查看 ARP 缓存表,只需键入以下命令。

arp -a

此命令显示 IP 地址及其关联的 MAC 地址。

第 3 步:接下来,要删除缓存表,您可以使用 netsh 实用程序。

netsh interface IP delete arpcache

或者你可以简单地使用

arp -d

第 4 步:如果要删除缓存中的任何特定条目,而不是整个表。

arp -d <ip-address>

输出:

C:\WINDOWS\system32>arp -a

Interface: 192.168.29.64 --- 0xd
  Internet Address      Physical Address      Type
  192.168.29.1          a8-da-0c-e8-0e-e6     dynamic
  224.0.0.22            01-00-5e-00-00-16     static
  224.0.0.251           01-00-5e-00-00-fb     static
  224.0.0.252           01-00-5e-00-00-fc     static

Interface: 192.168.56.1 --- 0x14
  Internet Address      Physical Address      Type
  224.0.0.22            01-00-5e-00-00-16     static
  224.0.0.251           01-00-5e-00-00-fb     static
  239.255.255.250       01-00-5e-7f-ff-fa     static

C:\WINDOWS\system32>netsh interface IP delete arpcache
Ok.

如果您使用 netsh 实用程序清除缓存表,您将得到“OK”作为响应。

Linux

第 1 步:打开终端并使用以下 IP 实用程序命令清除整个 ARP 表。

ip -s -s neigh flush all

第 2 步:如果要删除特定地址的 ARP 记录,请使用 arp 实用程序。

arp -d <ip-address>

第三步:删除表项后,可以简单的使用下面的命令查看Linux中的ARP表。

arp -n

此命令显示整个 arp 表。

输出:

┌──(root💀kali)-[/home/geekflare]
└─# arp -d 10.0.2.1

┌──(root💀kali)-[/home/geekflare]
└─# arp -n
Address          HWtype         HWaddress           Flags Mask        Interface

10.0.2.1                       (incomplete)

10.0.2.2         ether       01:00:5e:00:00:fc         C                 eth0
10.0.2.3         ether       a8:da:0c:e8:0e:e6         C                 eth0

在这里,您可以观察到特定地址的缓存条目是否被清除。

Mac

第 1 步:在您的 Mac 中打开一个终端并使用以下命令。

第 2 步:查看现有的 ARP 条目。

sudo arp -a

第 3 步: 删除特定接口的缓存

sudo arp -d 192.168.29.1 ifscope en0 

第四步: 清除整个缓存表

sudo arp -a -d

输出:

$ sudo arp -a

? (192.168.29.1) at 01:00:5e:00:00:fc on en0 ifscope [ethernet]
? (192.168.2.13) at a8:da:0c:e8:0e:e6 on en0 ifscope [ethernet]
? (192.168.1.21) at 01:00:5e:00:0e:16 on en0 ifscope permanent [ethernet]

$ sudo arp -a -d

192.168.29.1 (192.168.29.1) deleted
192.168.2.13 (192.168.2.13) deleted
192.168.1.21 (192.168.1.21) deleted

本文结束,如果觉得文章不错,点赞、收藏、评论三连哦,如果还想学习更多技术,也欢迎在评论区留言!

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐