The host sometimes uses its own IP address as the target address to send ARP requests. This type of ARP request is called gratuitous ARP and has two main purposes:
(1) Check the duplicate address (if an ARP response is received, the duplicate address exists ).
In Windows NT, when the network adapter is started, the TCP/IP protocol stack will send a maximum of three gratuitous ARP requests during initialization (one gratuitous ARP request initialization, one gratuitous ARP request each time for 0.5 s and one second ), when the request receives a response, window nt closes the protocol stack and warns the user of IP conflict.
There should be no stranger to the pop-up box or small yellow bars. If only one static IP address is set, the protocol stack is disabled and the Internet access is unavailable. You cannot view the affected IP addresses in ipconfig. That is to say, who gets the IP address first.
(2) advertise a new data link identifier. When a device receives an ARP request and finds that there is an IP address of the sender in the ARP buffer, It updates the MAC address entry of this IP address.
When Windows NT is started, gratuitous ARP is broadcast. In addition to confirming IP conflicts, it is used to update the ARP cache of peripheral devices. This is especially important for Fast Switching in high availability solutions. When the MAC address corresponding to the IP address changes, if the cache of the peripheral device is not updated, it takes a long time to resend the ARP request after the ICMP response fails to be sent.
Note that this policy has been changed in window Server 2008. Server 2008 does not update its route table when it receives gratuitous arp, in Windows, gratuitous ARP requests may be sent from conflicting devices. Updating the cache may cause many problems. There will be more and more problems. The best solution is the VIP address implemented by vrrp. When using a virtual MAC address, you do not have to consider the ARP cache issue when IP address drifting.
Here, I may wonder why I only talk about windows, because Linux does not recognize gratuitous ARP: Neither sending nor processing. This means that the IP address conflict in Linux is a big problem. Every time you ask ipxx who is it? There are two people answering you... Of course, the specific data is sent to anyone, depending on luck, and the response to the server must come first. For network devices, different vendors may be confused.
Maybe you will think, it's pretty good, a disguised load balancing... (Similar to the LVS Dr mode) However, I have heard that Linux IP address conflicts may cause a burden on network devices. The ARP cache processing of network devices depends on CPU computing, when two machines are involved, the CPU usage of the device is increased to 90% +.
References:
Http://wiki.wireshark.org/Gratuitous_ARP
Http://support.microsoft.com/kb/199773
Http://serverfault.com/questions/268253/windows-2008-ignores-gratuitous-arp-requests