I have several devices on my home network. A desktop (wired), A second desktop (also wired), and a Surface Tablet. The tablet has a docking station ( wired), but I also use it wirelessly at times. Router is a Business Hub 6. All three devices run Windows 10 and have IPv4 addresses assigned by DHCP, but always the same one. They also have IPv6 enabled, and their IPv6 DNS manualy set (in the adapters) to point to Google's IPv6 servers.
I can address the devices by name (Host files exist on all three, and the Hub has names associated with IP addresses in the Advanced/Broadband/DNS Hosts tab. It all works (mostly) as I expect.
What I don't understand is how the devices select IPv4 or IPv6 for local connections. If I ping (by name) any of the wired devices from another device on a wired connection (including the Surface Tablet) I get an IPv4 ping. If however I ping either of the wired devices from the Surface tablet when on a wireless connection, I get an IPv6 (link local - fe80...) ping.
If I force an IPv6 ping on either of the wird machines, I get a "Cannot find host" response. I presume this is because the Google IPv6 DNS servers being used have no knowledge of my local host name (good!). If I don't force the IPv6 ping, then the request falls back to IPv4 and the Hub6 provides the relevant address.
The question is where does the wireless connection on the Surface Tablet pick up the link local IPv6 address from. What is doing the name to link local IPV6 translation, and why can't the wired connections do the same thing? As far as I can see the configuration for both adapters (wired and wireless) on the Surface are the same.
Can anyone with more knowledge of the way IPv6 works on a LAN enlighten me?