实验目的:查看局域网内二层ARP通讯过程数据包,从而明白arp缓存表的形成过程。
实验资料:
实验拓扑:
实验步骤:
1、检查C3客户端的ARP缓存表---有0条ARP,这是因为ARP有老化时间,会把之前使用过的ARP都清除。
2、在客户端C3上抓包,查看C3与IP172.16.1.3的交流过程包,
3、查看客户端C3的arp结果,会添加一条172.16.1.3与MAC绑定的ARP条目。
到此ARP请求回应数据包过程完毕。但现在有个问题就是如果我们把C4客户端的IP修改后,那么C3上的ARP不是对就不上了么?
依然全过程抓C3包,看ARP一会如何应对这种突发情况
将C4的IP从172.16.1.23改为25最后改为26,在过程中如果修改完后,不用C3pingC4那么C3的ARP缓存依然不变,如果PING的话,C3缓存中会看到一个MAC地址对应 上3个IP地址,如下
而对应的抓包显示为
可以看到每次改完IP后,C4都会发出一个ARP无偿广播包,ARP无偿包的定义:当 IP 地址改变后,网络主机中缓存的 IP 和 MAC 映射就失效了,为了防止通信错误,无偿 ARP 请求被发送到网络中, 强制所有收到它的设备更新 ARP 映射缓存。 通过这个定义可以解释可以知道ARP无偿包的作用了,但经过多次的实验,我发现网络中收到无偿包的设备并没有更新ARP映射缓存,ARP中依然是旧的映射缓存,并且用C3ping C4新的IP,过程中竟然没有ARP请求包的情况下就能了,再看到C3缓存中出现一个mac对应两个IP的现象,这难道C3收到无偿包后“冥冥”中更新或旧ARP失效了?不显示出来?如果这种情况在路由器上发生,它会怎么转发?将C4从27改为28,之后再将C3从26改为27,对比ARP变化
上部分:修改完后,不Ping情况下arp不变,
中间部分:pingc4的28,arp中出现一个mac地址对应两个IP,
下部分:按照中间arp转发情况,ping27时,应该直接转发给C4了,可是ping确能通且之后再查看arp表,发现27正确的对应了C3的新地址了,而C3的旧地址还存在ARP中。
这一点目前对我来说还是个疑问,希望有大神能解释,谢谢。