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 :