In a computer network, a link-local address is a network address that is intended and valid only for communications within a network segment (a single network link, or often: one broadcast domain) that a host is connected to.
Usually, link-local addresses are not guaranteed to be unique beyond a single network segment. In comparison, other classes of addresses like organization-wide or world-wide (or global) addresses, are unique within an organization, or even world-wide. Routers therefore do not forward packets with link-local addresses.
The term link-local address would normally be used in cases where a protocol also supports non-link-local (e.g. global) addresses (like IPv4, IPv6). For protocols that support only link-local addresses (like Ethernet,[note 1] USB), the plain term 'address' suffices.
Like any (network) address, link-local addresses may - in general - be assigned manually by an administrator. As both the validity and the use of link-local addresses are limited to a single link, configuration using an automatic procedure is a feasible alternative to manual assignment. An advantage of automatic configuration is that it does not require human involvement. A disadvantage is that it is (usually) non-deterministic: it is impossible to predict with certainty what a host's automatically configured address will be. Some network protocols support automatic configuration only.
In Internet Protocol (IP) networks, most often link-local addresses are obtained using stateless address autoconfiguration. In IPv4, they are normally only used to assign IP addresses to network interfaces when no external, stateful mechanism of address configuration exists, such as the Dynamic Host Configuration Protocol (DHCP) or when another primary configuration method has failed. In IPv6, link-local addresses are mandatory and required for the internal functioning of various protocol components.
In RFC 3927, the Internet Engineering Task Force has reserved the address block 169.254.1.0 through 169.254.254.255[note 2] for link-local addressing in Internet Protocol Version 4. Link-local addresses are assigned to interfaces by host-internal, i.e. stateless, address autoconfiguration when other means of address assignment are not available.
RFC 3927 warns against the simultaneous use of addresses of different scope, such as configuring link-local addresses as well as globally routable addresses on the same interface. Therefore, hosts search for a DHCP server on the network before assigning link-local addresses.
In the automatic address configuration process, network hosts select a random candidate address within the reserved range and use Address Resolution Protocol (ARP) probes to ascertain that the address is not in use on the network. If a reply is received to the ARP, it indicates the candidate IP address is already in use; a new random candidate IP address is then created and the process repeated. The process ends when there is no reply to the ARP, indicating the candidate IP address is available.
When a globally routable or a private address becomes available after a link-local address has been assigned, the use of the new address should generally be preferred to the link-local address for new connections but communication via the link-local address is still possible.
In the Internet Protocol Version 6 (IPv6), the address block fe80::/10 has been reserved for link-local unicast addressing. The actual link local addresses are assigned with the prefix fe80::/64.[note 3] They may be assigned by automatic (stateless) or stateful (e.g. manual) mechanisms.
Unlike IPv4, IPv6 requires a link-local address to be assigned to every network interface on which the IPv6 protocol is enabled, even when one or more routable addresses are also assigned. Consequently, IPv6 hosts usually have more than one IPv6 address assigned to each of their IPv6-enabled network interfaces. The link-local address is required for IPv6 sublayer operations of the Neighbor Discovery Protocol, as well as for some other IPv6-based protocols, like DHCPv6.
In IPv6, stateless address autoconfiguration is performed as a component of the Neighbor Discovery Protocol (NDP), as specified in RFC 4862. The address is formed from its routing prefix and the MAC address of the interface.
IPv6 introduced additional means of assigning addresses to host interfaces. Through NDP routing prefix advertisements, a router or a dedicated server host may announce configuration information to all link-attached interfaces which causes additional IP address assignment on the receiving interfaces for local or global routing purposes. This process is sometimes also considered stateless, as the prefix server does not receive or log any individual assignments to hosts. Uniqueness is guaranteed automatically by the address selection methodology (MAC-address based according to RFC 4862, and/or randomized according to RFC 4941) in combination with the duplicate address detection algorithm.
- Physical, or hardware addresses that the manufacturer burns in network chips are (should be) unique. The actual addresses used are not necessarily the hardware addresses - virtual machines for instance often do not even have physical hardware - and are therefore not unique.
- The first and last 256 addresses in the 169.254/16 block are reserved for future use by RFC 3927.
- Even though the range fe80::/10 is reserved for link-local addresses, 54 bits must be set to zero. The prefix is therefore fe80::/64 (RFC 4291, section 2.5.6.).
- RFC 3927, Dynamic Configuration of IPv4 Link-Local Addresses, S. Cheshire, B. Aboba, E. Guttman, The Internet Society (May 2005)
- RFC 4291,IP Version 6 Addressing Architecture, R. Hinden, S. Deering, The Internet Society (February 2006)
- RFC 3927 section 1.9
- RFC 3927 section 2.6.1
- "APIPA". Microsoft. Retrieved 2010-08-02.
- RFC 4291, section 2.5.6. Link-Local IPv6 Unicast Addresses
- RFC 4291, section 2.8. A Node's Required Addresses
- RFC 4862, IPv6 Stateless Address Autoconfiguration, S. Thompson, T. Narten, T. Jinmei (September 2007)