X-Git-Url: http://git.rohieb.name/skm-ma-ws1314.git/blobdiff_plain/e17c7afa722dc5b03118b4333cfbb5f692a527af..747e9d2a6f3468676b5e60d20e488e9a7891b06d:/xmpp.tex

diff --git a/xmpp.tex b/xmpp.tex
index c37175a..7bef910 100644
--- a/xmpp.tex
+++ b/xmpp.tex
@@ -74,17 +74,48 @@ terminated.
 
 \cite{xep-0045}
 
-\subsubsection{Publish/Subscribe and the Roster}
+\subsubsection{Publish/Subscribe, Presence and the Roster}
 
 \cite{xep-0060}
 
-\subsubsection{Presence}
 
-
-\cite{rfc6120}
+\cite{rfc6121}
 
 \subsubsection{XMPP Serverless Messaging}
 \todo
-\cite{xep-0174} \pages{1}
+
+To overcome the need for a central server and authentication, XMPP Serverless
+Messaging~\cite{xep-0174} allows XMPP clients on a network to build a
+peer-to-peer mesh network and chat directly with each other. This feature was
+first introduced by Apple as part of their \term{Bonjour} project, and nowadays
+it is also available in many other XMPP clients.
+
+With XMPP Serverless Messaging, XMPP clients simply open a port on the host, and
+then rely on mDNS and DNS-SD (see Section~\ref{sec:dns})
+to publish instance names in the domain \code{\_presence.\_tcp.local}. For
+example, if Juliet uses her machine (named \code{capulet}) with serverless
+messaging, her client would publish the following four mDNS records:
+
+\begin{itemize}
+  \item an A record \code{capulet.local}, specifying her IP address,
+  \item an SRV record \code{juliet@capulet.\_presence.\_tcp.local}, specifying
+    the port on which her XMPP client listens, and refering to
+    \code{capulet.local} as the host name
+  \item a PTR record \code{\_presence.\_tcp.local} for service discovery,
+    pointing to \code{juliet@capulet.\_presence.\_tcp.local}
+  \item and a TXT record \code{juliet@capulet.\_presence.\_tcp.local} specifying
+    more information about her (e.~g. her online status, contact data, etc.)
+\end{itemize}
+
+When other clients in the same network enumerate the available services by
+querying \code{\_presence.\_tcp.local}, they notice Juliet's presence and add
+her to the roster automatically. In that way, XMPP users can see who is
+currently available for communication. To start a chat session, clients initiate
+a TCP connection over the advertised ports, open their XML streams, and send
+message or IQ stanzas like they would to an XMPP server. Presence is managed
+over the corresponding TXT record in the mDNS. To go offline, a client
+announces the deletion of its mDNS records.
+
+\pages{1}
 
 % vim: set ft=tex et ts=2 sw=2 :
