看到有的资料说,dhcp服务器在分配ip地址时,要检测是否待分配的ip地址是否存在冲突,会向广播域发出,对应ip发出icmp的ping消息来验证是否冲突。特地用自己的公司的交换机验证一下,在交换机上镜像抓包观察一下。
wireshark的流程如下:
发现我司交换机没用ip冲突检测机制,如上图,dhcp服务器没有检测的icmp发出。
源mac是 Client MAC address: 44:37:e6:8d:95:27 (44:37:e6:8d:95:27)
发现没icmp检测消息,而检测是由终端完成了,发出arp探查消息完成的。
发现过程是终端用获得的ip进行探查arp消息发出,有应答后发出dhcp decline消息上报dhcp服务器出现ip冲突,同时,把自身ip 置为169.254.57.45发出arp探查消息,然后再次发出arp请求消息,终端再次发出dhcp的discover消息,服务器重新找个地址分配,终端重复arp消息进行探查。发现没有冲突后使用该地址。
整个流程如上。
第一次arp探查的消息
arp应答冲突了
上报这个ip192.168.205.57不可用
使用链路地址并发出arp探查
arp宣告消息,暂时使用这个ip地址
再次发起dhcp的申请流程
dhcp服务器分配一个新的ip地址
新的ip是192.168.205.55
request和ack流程后,再次用新ip发出arp探查,三次没用冲突,就使用该ip
确定没有冲突,就发出arp宣告消息
去请求网关的mac地址
结论:我司交换机设备dhcp模块无ip冲突探查功能,由终端完成arp冲突检测。终端用arp消息进行探查。