\subsection{Extensions to the DNS protocol}
\subsubsection{Multicast DNS}
-\term{Multicast DNS}~\cite{rfc6762} (mDNS) describes an extension of the Domain Name
-System that allows DNS resource records to be distributed on multiple hosts in a
-network, therefore avoiding the need of a central server.
+
+\term{Multicast DNS}~\cite{rfc6762} (mDNS) describes an extension of the Domain
+Name System that allows DNS resource records to be distributed on multiple hosts
+in a network, therefore avoiding the need of a central server.
Software that supports resolution of mDNS records listens on the reserved
link-local multicast address \code{224.0.0.251} (for IPv4 queries) or
not generate a response.
Finally, hosts may also send unsolicited responses. This can be used to notify
-the network of new services available on the host.
+the network of new services available on a host.
\pages{1}
-\subsubsection{DNS-Based Service Discovery}
-\todo
-\term{DNS-based Service Discovery} \cite{rfc6763}
-\begin{itemize}
- \item allows flexible mapping of available services to ports
- \item utilization of SRV \cite{rfc2782}, TXT and PTR records
- \item case study for IoT in \cite{Klauck:2012:BCC:2352852.2352881}
-\end{itemize}
+\subsubsection{DNS-Based Service Discovery}\label{sec:dnssd}
+
+As a recent extension for the Domain Name System, \term{DNS-Based Service
+Discovery (DNS-SD)}~\cite{rfc6763} uses DNS records of type
+\code{SRV}~\cite{rfc2782} and \code{PTR} in a way that allows hosts to browse
+for services in a domain. As an example, Figure~\ref{fig:dnssd} shows the
+process of browsing for all XMPP clients in the domain \code{example.org}.
+This is a two-step process, consisting of \term{Service Instance Enumeration}
+and \term{Service Instance Resolution}.
+
+\begin{figure}[htop]
+ \centering
+ \includegraphics[width=0.9\textwidth]{dnssd-mock.jpg}
+ \caption{DNS-SD: Service Instance Enumeration and Resolution}
+ \label{fig:dnssd}
+\end{figure}
+
+\paragraph{Service Instance Enumeration} At first, to enumerate the available
+services in a domain for a given protocol, a DNS-SD-enabled client queries
+resources of type \code{PTR} of the form \code{\_service.\_proto.domain}. The
+result of this query is then a list of \term{instance names} of the form
+\code{name.\_service.\_proto.domain} which provide the specified service. For
+example, in Figure~\ref{fig:dnssd}, all XMPP clients in the domain
+\code{example.org} are enumerated, and as a result, the instance names of three
+hosts are returned.
+
+\paragraph{Service Instance Resolution} As a second step, the returned instance
+names are resolved as \code{SRV} records to retrieve the actual host names and
+port numbers of a service. In the example, resolution of one instance name shows
+that an XMPP client is running at host \code{juliet.example.org} on port 5222.
+
+Through the usage of \code{SRV} records, it is easily possible for a service to
+inform clients about non-standard port numbers, and especially in connection
+with Multicast DNS makes it easy to deploy decentralized systems for the
+Internet of Things~\cite{Klauck:2012:BCC:2352852.2352881}.
\pages{1}
% vim: set ft=tex et ts=2 sw=2 :