ARP地址解析协议的作用就是通过IP地址去查询主机的MAC地址,在ping对方主机的时候,我们输入的是对方主机的IP地址,但是在数据封装的时候,我们又需要对方主机的MAC地址,这时就要用到ARP地址解析协议。
工作原理过程
在进行数据操作或ping操作的时候,源主机会向目的主机发送数据,而数据在封装的时候需要目的主机的MAC地址,这个时候源主机就需要查看ARP表看能否找到目的IP对应的目的MAC地址。这个操作叫做ARP查询。因为ARP表是放在内存里面的,所以主机重启之后,ARP表里的数据就会丢失。我们可以在PC上输入命令,查看刚启动的主机的ARP表
命令 arp -a
可以看到表中确实没有数据。
看表头IP地址、物理地址、Type字段,这个Type字段就是包含static(静态)和dynamic(动态),静态就是不会变动的,出产的时候就有的,动态就是会变化的。
默认状态下,ARP表内容是空的。
当查询不到目的主机的MAC地址的时候,源主机会发出ARP查询请求,ARP请求封装在以太网二上面,数据内容包含四个参数,包括源IP、源MAC、目的IP、目的MAC。在网络层数据封装的时候将源IP和目的IP封装,到数据链路层的时候,将源MAC封装,目的MAC可以是全0表示,可以是全1表示,意思是不知道目的MAC是多少。在以太网二封装的时候,将源地址封装,目的地址为关播地址,注意ARP请求数据里面目的MAC是0或1,表示不知道目的MAC。
源主机将ARP查询请求顺着网卡广播出去,到处问,IP地址是假设是192.168.1.2的主机的MAC是什么。然后IP为192.168.1.2的主机收到这个请求之后,首先将源主机的IP和MAC记录在ARP表下,然后将自己的IP和MAC发送给源主机,你好,我是192.168.1.2我的MAC是什么什么。
由目的主机发给源主机的ARP叫做ARP回复,也是属于ARP消息,同样封装在以太网二上。在源主机收到目的主机的回复,就会将目的主机的IP和MAC记录在ARP表里面。然后源主机再次发起ARP查询,找到目的主机的MAC。然后就可以通过网卡将数据发送出去。
用数据抓包进行数据分析
首先是两个ARP的数据包
第一个是ARP查询请求request
是源主机广播发送,查询192.168.1.2的MAC,可以看到封装在以太网二(Ethernet Ⅱ)上,目的地址是广播地址,源地址是主机地址
第二个是ARP请求回复
是主机24:2b发给16:51的reply数据
源主机上查看ARP表,看记录结果
Type是dynamic(动态)说明这个地址是查询请求到的
其他作用
RARP逆向ARP,根据MAC去寻找IP
免费ARP/无辜ARP,主要作用就是,在接口配置的时候,在获取到IP地址之后,会自动生成ARP请求向外广播,目的是查询自己配的地址是不是已经存在被占用,如果配的地址被占用,则配置的地址失败。
重新配置AR1的IP地址并且IP地址不冲突,不被占用的情况,让AR1自动生成一个免费ARP
对免费ARP进行数据分析
可以看到,这是由45:01发送的广播地址ff:ff,封装的目的MAC地址为全0,表示目的MAC不知道存不存在,源IP和目标IP都是同一个,我的地址是10.1.1.3,广播问还有没有人用10.1.1.3这个IP地址,如果有人回复,说明有人用这个IP。
配置IP被占用的情况
先广播发送免费ARP说我是45:0e我的IP是10.1.1.2,还有没有人也是10.1.1.2,然后下面就有人回复,我是45:55,我的IP是10.1.1.2.
查看接口详细信息,可以看到接口的IP和MAC
Internet Address 是IP地址 10.1.1.2 Hardware address是物理地址 00e0-fc11-450e,是48位,由12个十六进制数表示。
命令 display interface GigabitEthernet 0/0/0