+++ /dev/null
-\subsection{Address allocation}
-Considering the TCP/IP protocol suite, in order to be able to communicate on the
-IP layer, a device needs to configure one of its network interfaces with
-an IP address that can be reached from the network that the device wants to connect
-to. There are several ways of achieving this:
-
-\begin{itemize}
- \item The IP address is pre-selected by a human and stored in the device
- configuration. This process is cumbersome when more than one device needs to
- be configured, and humans have to remember which addresses are configured on
- which device, and which addresses are still free to use on additional
- devices.
-
- \item Deploying a central server that assigns network addresses
- to the devices in the network, which in order query the server (for example
- via broadcast or on a lower layer) for a unique address before they use the
- IP layer for the first time. This technique supersedes the dependency of
- human memory for mapping IP addresses to devices, and can easily be combined
- with additional central configuration management, like the automatic
- assignment of a static gateway, or a DNS resolver.\\
- The DHCP protocol is one example of central IP address management.
-
- \item A third alternative is the use of a distributed protocol which enables
- the devices on the network to choose addresses in accordance with other
- devices on the same network, so no IP address is used more than once. In
- respect to the Internet of Things, this approach has the advantage that
- those devices can easily be used in different scenarios without needing
- central deployment at all, and also allowing them to change their addresses
- dynamically, therefore easily reacting to changes in the network. \\
- There are two major protocols which are used for dynamic configuration of IP
- addresses. In the IPv4 world, Link-Local Addressing~\cite{rfc3927} is often
- used, and in IPv6 networks, Stateless Address
- Autoconfiguration~\cite{rfc4862} is a fundamental feature built into every
- device.
-
-\end{itemize}
-
-\paragraph{IPv4 Link-Local Addressing}
-
-\term{Link-Local Addressing}, also known as \term{Automatic Private IP
-Addressing (APIPA)} or \term{Zeroconf}, uses the IPv4 subnet
-\code{169.254.0.0/16} for addressing. Every device first chooses a random
-address from that address space. Then it checks if the chosen address is used
-by any other device on the network by probing the chosen address, which is
-usually done using the ARP protocol. If the probing process results that the
-address is not used on the network (e.~g. no device returned an ARP response
-during a random time interval), the device claims its chosen address and uses it
-for communication on the IPv4 layer. If the chosen address is already used, the
- device continues the process, subsequently choosing a new random address and
- trying to claim it, until a free address has been found.
-
-\paragraph{IPv6 Stateless Address Autoconfiguration}
-
-Similar to IPv4 Link-Local Addressing, devices configured with \term{IPv6
-Stateless Addressing Autoconfiguration} use an IPv6 address from the subnet
-\code{fe80::/64}. First, an \term{interface identifier} is generated using the
-interface's MAC address. Since MAC addresses must be unique in the network, a
-unique IPv6 address is obtained by combining the subnet prefix and the interface
-identifier. To ensure that no other device exists with this generated IPv6
-address, the device performs \term{Duplicate Address Detection} on the network
-through \term{Neighbor Advertisement} messages and listening for \term{Neighbor
-Solicitation} messages. If such messages are received from other hosts, the
-configured address cannot be used by the device and must be discarded.
-Therefore, in order to use IPv6 effectively, it must be guarranteed that MAC
-addresses are unique on the network.
-
-In contrast to IPv4 Link-Local Addressing, IPv6 Stateless Address
-Autoconfiguration can also be used with a central server. In this case, a
-central server broadcasts \term{Router Solicitation} messages on the network
-which contain a global network prefix. The hosts on the network can then use
-that prefix instead to configure a global IPv6 address.
-
-% vim: set ft=tex et ts=2 sw=2 :