文章目录
- 场景
- 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)。
- 条目的使用情况:在许多操作系统中,一个ARP缓存条目如果被频繁使用,那么它可能会保持在ARP缓存中更长的时间。也就是说,即使原设备已经下线,只要其他设备还在尝试与其通信,那么这个ARP缓存条目可能会被保留下来。
- 时间限制(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 项删除失败: 请求的操作需要提升
否则提示:
更新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