一:ARP的原理: 我们知道以太网设备比如网卡都有自己全球唯一的MAC地址,它们是以MAC地址阿里传输以太网数据包的,但是它们却识别不了IP包中的IP地址,所以我们在以太网中进行IP通信的时候就需要一个协议来建立IP地址与MAC地址的对应关系,以使数据包能发到一个确定的地方去,这就是ARP(地址解析协议)
1:ARP数据报格式 在网络通讯时,源主机的应用程序知道目的主机的IP地址和端口号,却不知道目的主机的硬件地址,而数据报包首先是被网卡接受到再去处理上层协议,如果接受到的数据包的硬件地址与本机不符,直接丢弃,因此在通讯前必须获得目的主机的硬件地址,ARP协议就是起到这个作用.
源主机发出ARP请求,询问”IP地址是192.168.0.1的主机的硬件地址是多少”,并将这个请求广播到本地网段(以太网首部的硬件地址填FF:FF:FF:FF;FF:FF表示广播),目的主机接受到广播的ARP请求,发现其中的IP地址与本机相符,则发送一个ARP应答数据包给源主机,将自己的硬件地址填写在应答包中.
2:ARP数据报的格式表示如下:
源MAC地址,目的MAC地址在以太网首部和ARP请求中个出现一次,,硬件类型指链路层网络类型,1为以太网,协议来行值要装换的地址类型,,op字段为1表示ARP请求,op字段为2表示ARP应答.
3:栗子: 请求的过程:
以太⽹首部:⽬目的主机采⽤用⼴广播地址,源主机的MAC地址是00:05:5d:61:58:a8,上层协议类 型0x0806表⽰示ARP。
由于以太⽹网规定最⼩小数据长度为46字节,ARP帧长度只有28字节,因此有18字节填充位,填充位 的内容没有定义,与具体实现相关。 应答过程: 始终记住:发送端是源,接受端是目的,然后对照图就会容易些. 二:几条常见的指令: 1:输入指令ifconfig -a 或者是in link show可以查看mac地址 2:linux下抓取网页命令的指令 (1):默认系统没有tcpdump的 (2):这里我们可以yum直接安装 yum install -y tcpdump
三:arp命令: arp命令用于操作主机的arp缓冲区,它可以显示arp缓冲区的所有条目,删除指定的条目或者添加静态ip地址与MAC地址对应的关系 1:$arp-v详细模式 2:arp-n显示数字地址 3:arp-a查看主机的IP和MAC对应关系,默认显示全部 4:arp-d删除指定主机的IP和MAC对应关系 可以自己验证啊 5:arp-i只显示指定网卡的IP和MAC对应关系 四:验证arp抓取对应主机的ip/mac地址 我们写一段shell脚本
#!/bin/bash head=192.168.0 i=0 count=0 while [ $i -le 254 ] do if [ $count -gt 20 ];then count=0 sleep 1 fi ping -c1 "${head}"".$i" & let i++ let count++ done wait echo "=========================================" arp -a | grep -v incomplete echo "========================================="在后台抓取的有效的ip,网络号为192.168.0