文章目录

  • 场景
  • ARP缓存更新时机及在Windows中的实现
  • ARP缓存基础
  • ARP缓存更新时机
  • 1. ARP缓存超时
  • 2. 接收到新的ARP响应
  • windows电脑对于某台已断开ip设备迟迟不删除其arp缓存条目的原因
  • 在Windows中处理ARP缓存
  • ARP缓存条目的生存时间
  • 清除ARP缓存(`arp -d`或者`arp -d *`)
  • ==注意:需要以管理员方式打开控制台执行==,否则提示==ARP 项删除失败: 请求的操作需要提升==
  • 更新ARP缓存
  • 小结


场景

我有以下场景:

局域网,我有一台设备是某个ip,然后我给这个设备断了电,换了另一台设备,设成之前同样ip,其他电脑中的arp缓存,关于这个ip的mac地址,何时会更新?如果迟迟不更新,则迟迟无法访问到新的设备。

我们根据以上场景来探讨arp缓存的更新时机。

ARP缓存更新时机及在Windows中的实现

ARP(Address Resolution Protocol,地址解析协议)是一种用于在网络中将IP地址解析为MAC地址的协议。在我们深入讨论其在Windows环境下的工作原理和特性之前,让我们首先了解ARP缓存和它的重要性。

ARP缓存基础

ARP缓存是一个临时存储表,由网络设备(如计算机、路由器等)维护,用于存储已知的IP地址与对应的MAC地址映射。这个缓存被频繁地用于网络通信,以减少不必要的ARP请求和响应。换句话说,当设备需要找到某个IP地址的MAC地址时,它首先会查看ARP缓存。如果缓存中有这个映射,则无需发送ARP请求;如果没有,设备则会发送ARP请求以获取新的映射。

ARP缓存更新时机

那么,在什么情况下ARP缓存会被更新呢?以下是主要的两种情况:

1. ARP缓存超时

ARP缓存中的每个条目都有一个TTL(Time to Live,生存时间)。当TTL到期后,该条目将被移除。这样做的原因是,网络设备的IP地址或MAC地址可能会发生变化。通过设置TTL,设备可以定期刷新其ARP缓存,以获取最新的网络映射。

2. 接收到新的ARP响应

当设备收到一个ARP响应时,如果这个响应中的IP和MAC地址映射与ARP缓存中的映射不一致,那么设备会更新ARP缓存。此外,设备也可以发送ARP请求以主动获取新的映射。

windows电脑对于某台已断开ip设备迟迟不删除其arp缓存条目的原因

ARP缓存的更新和删除是由网络操作系统根据其内部规则来管理的。在Windows中,这通常基于两个主要因素:条目的使用情况和时间限制(TTL)。

  1. 条目的使用情况:在许多操作系统中,一个ARP缓存条目如果被频繁使用,那么它可能会保持在ARP缓存中更长的时间。也就是说,即使原设备已经下线,只要其他设备还在尝试与其通信,那么这个ARP缓存条目可能会被保留下来。
  2. 时间限制(TTL):每个ARP缓存条目都有一个TTL值,超过这个时间限制,该条目就应该从ARP缓存中删除。然而,这个时间限制可能会被延长,特别是在有数据包通过该条目传输时。

关于“为何有时一台ip的设备关机很久,某台电脑的arp缓存迟迟不删除这条ARP条目”,这可能是因为:

  • 这个ARP条目正在被频繁使用,即使对应的设备已经离线。
  • 这个ARP条目的TTL被设置得较长,或者被动态调整了。
  • 网络操作系统可能有缓存管理策略或错误导致条目未能按时删除。

在Windows中处理ARP缓存

在Windows系统中,ARP缓存的处理方式有一些特别之处。

ARP缓存条目的生存时间

Windows系统对ARP缓存条目的TTL进行了动态调整。根据Microsoft的官方文档,对于已经使用过的ARP条目(即已经用于发送数据包的条目),其TTL默认为10分钟;对于未使用过的条目(例如由于ARP预热而创建的条目),其TTL默认为2分钟。这意味着,如果你断开一台设备并立即用另一台设备替换,并设置为相同的IP地址,那么其他设备可能需要最多10分钟才能在其ARP缓存中看到新设备的MAC地址。

清除ARP缓存(arp -d或者arp -d *

Windows提供了命令行工具来手动清除ARP缓存。要清除ARP缓存,你可以打开命令提示符,并输入以下命令:

arp -d *

或者:

arp -d

这两个命令将删除所有ARP条目。在你的场景中,如果你希望其他设备立即看到新设备的MAC地址,那么可以在这些设备上运行上述命令来清除ARP缓存。

注意:需要以管理员方式打开控制台执行,否则提示ARP 项删除失败: 请求的操作需要提升

否则提示:

mac清除 samba缓存 mac 删除缓存_Windows

更新ARP缓存

虽然Windows系统会定期更新ARP缓存,但你也可以手动发送ARP请求以强制更新ARP缓存。你可以使用ping命令来做到这一点。例如,如果你想获取IP地址为192.168.1.1的设备的MAC地址,你可以输入以下命令:

ping 192.168.1.1

这个命令将发送一个ICMP Echo请求到指定的IP地址。在发送请求之前,你的设备需要知道该IP地址对应的MAC地址。如果ARP缓存中没有这个映射,那么你的设备会发送ARP请求以获取新的映射。

小结

当你更换局域网内的设备并保持相同的IP地址时,其他设备的ARP缓存会在一段时间后自动更新。在Windows系统中,这可能需要最多10分钟。然而,你也可以通过手动方式强制更新ARP缓存,无论是通过清除ARP缓存,还是通过发送ARP或ICMP Echo请求。

引用:

  • Microsoft. (2005). TCP/IP and NBT configuration parameters for Windows XP. https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-xp/bb457123