就算PING不通你 我也知道你在不在线!
2008年11月10日 17:43
返回分页浏览>>(共计3页)
  小编最近在折磨ARP,也在被ARP折磨,囧,不过还好,小有收获的感觉还不错。

  关于ARP协议的三三两两小编之前在《有了IP和MAC,为什么还需要ARP?》一文中有过介绍,在此就不再多说ARP协议本身是怎么一回事了,只是想说一个ARP使用上的技巧。

  做过网络管理员的同学应该都遇到过这种情况,当判断一台PC是不是处于开机在线状态时可能最先想到的就是PING一下那台PC的IP地址,能PING通表示在线,PING不通……可能在线也可能不在线。为什么这么说?因为PC上可能运行着防火墙软件,WINDOWS自带的防火墙也好,第三方防火墙也好,默认设置都会拦截下PING入本机的“请求”数据包,这导致PING“请求”发出方收不到回应,超过时间后便会显示TIME OUT提示,虽然PING不通,但我们却无法依此确定此PC是不是在线,那有没有简单有效的方法来判断某PC是不是在线?


虽然PING不通 但10.0.0.10确实在线

  此时,WINDOWS 中的ARP命令可以帮到我们,ARP –A命令的作用是查看ARP缓存中的所有项目。ARP缓存表中包括什么对我们有用的信息呢?当然是MAC地址了,为什么这么说?同学们且往下看。



  当我们在PC1上输入ping 10.0.0.10 ,按下回车键后系统所执行的第一个实际操作其实并不是PING功能本身,PC1首先是要使用ARP协议解析目标IP地址,在收到目标主机的回应之后,PC1才会发送ICMP包给目标主机。如果系统装有防火墙,这时防火墙就起作用了,防火墙不会拦截ARP解析IP地址,但却会拦截PING请求,PING请求被拦截,目标主机自然不会给PC1发送相应的PING回应数据包,超过时间之后,PC1上的PING操作便显示超时,其过程大致就是这样。

  防火墙不会拦截ARP协议解析IP地址这点对我们来讲就够用了,IP地址被解析成MAC地址后我们可以通过ARP –A命令查看ARP缓存表,只要在ARP缓存表中出现目标主机的IP-MAC对应条目,那证明其就是在线的,如果目标主机处于关机或离线状态,自然ARP协议无法解析PC1所请求的IP地址,也就不会有目标主机的IP-MAC对应条目  通过这样,我们便可以很简单的了解到目标主机是不是在线了。

  虽然PING不通,但是PC1的ARP缓存表中却出现了10.0.0.10的MAC地址(硬件地址亦作物理地址),证明目标主机是在线的。如下图:


  如果目标主机不在线(在测试时小编将目标主机关机),ARP协议无法解析10.0.0.10的MAC地址,如下图。小编还试着将目标主机的网卡禁用,其结果相同。


  使用Wireshark分析数据包,能更好的帮助我们理解上面所说的情况。有Echo (ping) request 但没有Echo (ping) reply 。


  还是像往常一样,先PING目标主机,如果PING不通,我们再使用ARP –A命令查看ARP缓存表便可确定目示主机是不是在线了。

返回分页浏览>>(共计3页)

文章分享到:

相关文章