使用Ping命令获取同一网段计算机的MAC地址

ping 命令 返回的TTL 生存值可以判断系统或路由 ,TTL=128 是windows系统,TTL=64 是Linux 系统 TTL=255 是路由器

上图就说明 119.75.213.52主机 是Linux 系统,至于 不是64 ,原因是经过了6台路由器,每经过一个路由器,TTL 值在原基础上减1


我们一般理解Ping就是用来测试网络连通性的,它使用ICMP协议来获取返回数据包。其实Ping命令还可以用来获取内网计算的MAC地址。

首先,我们用 arp -a来查看一下本地计算机的ARP缓存记录表,一般里面都有一条网关的记录。偶尔会有个别其它机器的记录,但是过一段时间(一般为5分钟)就会过期失效而被删除。

如下:
C:\Documents and Settings\Administrator>arp -a
Interface: 27.54.xxx.112 --- 0x2
Internet Address      Physical Address      Type
27.54.xxx.97          e0-24-7f-19-33-80     dynamic


然后,我们找一台内网确实存在的机器,ping它的ip地址。然后再查看arp -a,你会发现,arp缓存表里面,已经多出来一条记录,这条记录就是这个新的IP和它对应的MAC地址。

执行ping
C:\Documents and Settings\Administrator> ping 27.54.xxx.113
Pinging 27.54.xxx.113 with 32 bytes of data:
Request timed out.
Control-C
^C
结果如下:
C:\Documents and Settings\Administrator> arp -a
Interface: 27.54.xxx.112 --- 0x2
Internet Address      Physical Address      Type
27.54.xxx.97          e0-24-7f-19-33-80     dynamic
27.54.xxx.113         00-15-5d-c3-34-1b     dynamic

最后,说说原理。在ping命令执行之后,如果目标IP与源IP是同一网段,则它会首先检查一下自己的arp缓存表,如果表中有目标地址的MAC,则不用发送ARP广播。如果arp缓存表中不存在,则系统会发起一个arp广播包,寻找目标IP地址的MAC。找到MAC之后再向目标地址发送ICMP数据包。

注意:只要目标主机在线,不管它是否禁ping,用这种办法都可以获取到对方的MAC地址。

猜你喜欢

转载自panyongzheng.iteye.com/blog/2064361