arp协议叫做地址解析协议,通常与ip地址共同使用,将ip地址转换成硬件地址(MAC地址)。arp既可以放在网络层,也可以放在数据链路层,因为它做了两层的工作。
当一个主机向另一个主机发送数据报时,通过arp协议,向局域网中发送arp请求,所有在局域网中的主机都可以收到,但会在网络层丢弃,只有一台符合目的ip的主机会发送给源主机arp响应包含自己mac地址,因此源主机就可以向目的主机发送报文。
linux下可以通过arp -a查看arp表,获取对应ip的mac地址。
以下脚本通过ping一个网络中所有的主机,获取相应的mac地址,保存在arp表中
#!/bin/bash
index=1
num=0
while [ $index -le 254 ]
do
if [ $num -gt 20 ];then
num=0
sleep 5
fi
ping -c1 "192.168.131.$index" &
let index++;
let num++;
done