I'm playing around with scapy and wireshark and I have sent a packet to a destination that does not exist (10.0.2.14). Wireshark shows an ARP attempt to resolve the address but as its not there the ICMP packet sends to 10.0.2.14 anyway (what happens here? is it forwarded to the gateway and left for the gateway to discard after the TTL runs out?) The final packet has a description of Gratuitous ARP for 10.0.2.2 (source IP). I do not understand what gratuitous ARP is trying to do.
A gratuitous ARP is basically an ARP response that never had a request for it and is how most ARP spoofing programs work.
Normally you send an ARP request and wait for the ARP response. A gratuitous ARP is when you just send your details even though there was no request. These can happen legitimately when say your IP or MAC address change so you can update the ARP tables of other hosts.
When you send an ARP request to 10.0.2.14 and receive no response you're basically saying "oh well I didn't get a response so here are my details for you to get in touch with me" and sending the gratuitous ARP.