IPv4 Link-local address range

The Internet Engineering Task Force (IETF) has set aside the IPv4 address range 169.254.0.0/16 (from 169.254.0.0 to 169.254.255.255) for link-local addressing. The entire span can be used for this, but the starting and ending 256 addresses (169.254.0.0/24 and 169.254.255.0/24) are earmarked for potential future uses. Thus, they shouldn't be chosen by hosts using this dynamic address-setting method. Link-local addresses get assigned by an in-house, stateless autoconfiguration if no other address assignment methods are accessible.

When a device has multiple IPv4 address types, like link-local and globally routable ones, it can cause confusion and complexity. So, before picking link-local addresses, devices first look for a DHCP server on their network.

During autoconfiguration, devices pick a random address from the reserved range and use the Address Resolution Protocol (ARP) to check its availability. If an ARP response comes back, it signifies the address is taken. The device then picks another random address and repeats the process. It stops once the ARP gets no response, showing the address is free to use.

If after using a link-local address, a device obtains a globally routable or private address, it's generally better to use this new address for initiating fresh connections. However, communication via the previously assigned link-local address remains feasible.

This is why, especially on a Microsoft Windows device, we see an assigned IPv4 address in this range whenever a DHCP server is unable to be reached.

Microsoft labels this autoconfiguration technique as Automatic Private IP Addressing (APIPA).

Links:

https://datatracker.ietf.org/doc/html/rfc3927

Links to this page: