图7 B主机与C主机互相发送ping包模拟网络通讯
(2)将Linux A(192.168.198.129)的IP地址修改为192.168.198.130,以此模拟Linux A主动制造了与Linux B的IP地址冲突。
图8 A主机主动制造与B主机的IP地址冲突
(3)在局域网中抓包,使用wireshark分析IP地址冲突下各主机的的交互情况。
2.实验分析
(1) Linux A进行地址修改后,A主机立马以A主机MAC为源MAC,FF:FF:FF:FF:FF:FF为目的MAC发送免费ARP广播,进行全网通告A主机的IP地址为192.168.198.130。
(2)B主机收到A主机的免费ARP后,以B主机MAC为源MAC,FF:FF:FF:FF:FF:FF为目的MAC响应,进行通告,告知全网B主机的IP才是192.168.198.130。
(3)A主机连续发送4个免费ARP通告,但B主机只会在第一次进行响应。
(4)由于A主机多次发送免费ARP,此时C主机ARP高速缓存表中记录的192.168.198.130为A主机,C主机与192.168.198.130通讯未中断。
图9 主机IP地址冲突后ARP交互情况
(5)B主机(此时IP地址被冲突)与C主机(192.168.198.131)通讯有中断现象,通过数据包可以发现B主机(IP:192.168.198.130;MAC:00:0c:29:ff:12:87)访问C主机(IP:192.168.198.131;MAC:00:0c:29:38:83:18)时,C主机回包给A主机(IP:192.168.198.130;MAC:00:0c:29:34:eb:e2)。
图10 B主机与C主机网络通讯中断
(6)B主机与C主机通讯超时后会重新请求一次ARP,请求192.168.198.131的MAC地址。当C主机收到此ARP后会更新ARP高速缓存表中192.168.198.130对应的MAC地址为B主机MAC地址,随后B主机恢复与C主机的通讯。