即使 Windows 在缓存中有条目(ARP 表),也会发送 ARP 请求

Posted

技术标签:

【中文标题】即使 Windows 在缓存中有条目(ARP 表),也会发送 ARP 请求【英文标题】:ARP request are sent even though Windows has an entry in cache (ARP Table) 【发布时间】:2011-08-18 08:40:14 【问题描述】:

我们有一个运行 Windows XP Embedded SP1 的产品。我们在 ARP 表中为一个假 IP 配置一个假的(不存在的)MAC 地址。当发生通信时,Windows 将数据包发送到假 MAC 和假 IP,然后我们在驱动程序中将其更改为真实的。 这就是软件的设计方式。

问题是有时 Windows 会开始发送伪造 IP 的 ARP 请求,即使它在 ARP 表中有一个条目。我不知道为什么会发生这种情况,并且在盲目尝试重现该问题时,我编写了一个脚本来删除 ARP 条目,然后在几秒钟后再次添加它。经过一些尝试,我发现问题正在发生。

关于我应该检查/更改什么有什么想法吗?

【问题讨论】:

您确定要添加 静态 ARP 缓存条目吗?见此链接:microsoft.com/resources/documentation/windows/xp/all/proddocs/… 是的,我正在添加静态 ARP 条目,但使用的是 Iphlpapi(MIB_IPNETROW 和 SetIpNetEntry)。我也可以使用 arp -a 看到 ARP 条目存在,即使 Windows 正在发送 ARP 请求。 我还看到过来自 windows 框的过度 arping。 【参考方案1】:

您能否在两种情况下检查以太网帧 MAC 地址,在有条目的情况下和在 arp 缓存中没有条目的情况下。 此外,检查您的代码,我想您会在代码中找到一些对 FAKE IP 地址的引用(您可能忘记更改) 有许多应用层协议需要在通信之前使用 ARP,所以我想你可能在代码中使用了这些协议之一,并且你指示代码与假 IP 地址通信,这就是为什么当你调用该协议使用 arp 来查找假 IP 的 MAC 地址。 如果这回答了您的问题,请告诉我。

【讨论】:

以上是关于即使 Windows 在缓存中有条目(ARP 表),也会发送 ARP 请求的主要内容,如果未能解决你的问题,请参考以下文章

windows下arp缓存刷新间隔为多久

简记 ARP 和 ARP攻击

MAC地址表ARP缓存表以及路由表

MAC地址表ARP缓存表以及路由表

rib fib arp fdb

windows基本命令