资讯首页 新闻资讯 云计算测评 云服务商动态 技术频道
上云无忧 > 云计算资讯  > 技术频道 > Windows上ARP缓存更新延迟导致修改IP地址后不能连通(仅Windows7)

Windows上ARP缓存更新延迟导致修改IP地址后不能连通(仅Windows7)

发布时间: 2012-12-13 07:44 |浏览量:1255| 评论: 0

在开发过程中,一些工具具备修改其他设备IP地址的功能。


修改IP地址的实现方式有:1)通过IP地址A连接过去修改IP地址B;2)通过IP地址A连接过去修改IP地址A。


这两种方式,都涉及到ARP缓存的更新。


ARP(Address Resolution Protocol)协议是连接IP层与物理层的一种协议,ARP协议负责将网络层的IP地址转换为链路层的MAC地址,因为链路层最终是通过MAC地址发送数据包的。


关于OSI的7层以及他们之间的各种协议,请参考OSI Model



在操作系同实现层面,都会缓存ARP表,纪录该机器访问过的IP地址与MAC地址的关联,当网络层的应用向某个IP地址发送包的时候,系统API会使用ARP协议将IP地址转换为MAC地址然后发送出去。


ARP之所以要缓存是为了效率考虑,如果每次数据包发送都去查找一遍IP地址与MAC地址的映射关系,对性能的消耗是很大的。


所以在操作系统层面都会对ARP做缓存,然后通过自己的机制刷新它。


我们遇到的问题是,Windows机器连接到了一台设备,我们的工具在Windows上运行,去修改该设备的IP地址,将IP地址从A修改为B。


修改完成之后我们去ping这个B IP地址,发现不能立刻ping通,需要ping接近1分钟。


这里就是Widnwos7上面的ARP缓存在捣鬼,因为windows机器上的arp缓存纪录的是修改之前的IP地址A与设备的网卡MAC地址的映射关系,而现在去ping IP地址B,按照理解是能够ping通的,因为windows机器上的ARP缓存中该IP地址不存在,应当去刷新ARP缓存。


不过好像Windows7上面,没有这种机制。貌似一定要等到系统触发的ARP缓存刷新。


后来我们手动执行 arp -d IP_ADDR,将老的arp纪录删除,然后再ping,就可以正常了。


这个问题不直到是否算windows7的bug?因为在XP上是没有这种问题的。


更多【技术频道】相关文章

有话要说

全部评论

暂无评论
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部