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

我们一般理解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地址。

03-14 13:20