X-Git-Url: http://git.rohieb.name/skm-ma-ws1314.git/blobdiff_plain/a937e7aa8fcc17fb98a80bd0a9362d11b188087f..f1c1b4a2b8a9f899a42f91b362222b10f357a2c7:/xmpp.tex

diff --git a/xmpp.tex b/xmpp.tex
index 56ed185..b4dc98a 100644
--- a/xmpp.tex
+++ b/xmpp.tex
@@ -1,5 +1,65 @@
 \subsection{XMPP}
 \todo
+\pages{3-4}
+
+The \term{Extensible Messaging and Presence Protocol (XMPP)} is a distributed,
+XML-based protocol for real-time communication. Its core functionalities are
+specified in RFCs~6120~\cite{rfc6120} and RFC~6122~\cite{rfc6121}, while protocol
+extensions are usually defined by the XMPP community in \term{XMPP Extension
+Proposals (XEPs)}.
+
+\subsubsection{Addressing}
+
+Every user account in XMPP is addressed by a globally unique identifier, called
+the \term{Jabber ID (JID)}~\cite{rfc6122}. It has the form
+\code{localpart@domainpart/resource}, where \code{domainpart} is the DNS name of
+an XMPP server, and \code{localpart} is the name of a user account on that
+server. Since a user can be logged in from multiple clients, the \code{resource}
+part is a string chosen by the user to distinguish those clients. Only the part
+\code{localpart@domainpart} (the \term{bare JID}) is needed to identify a user,
+the resource is only needed for routing between client and server.
+
+\subsubsection{Architecture}
+\begin{wrapfigure}{r}{0.4\textwidth}
+%\begin{figure}[htop]
+  \centering
+  \includegraphics[width=0.4\textwidth]{xmpp-architecture-mock.jpg}
+  \caption{XMPP architecture}
+%\end{figure}
+\end{wrapfigure}
+
+The original architecture underlying XMPP strongly leans on the established
+design of Internet Mail. The distributed network is formed by \term{XMPP
+servers} on one hand, which make up the always available backbone of the network
+and manage user accounts and statuses, and \term{XMPP clients} on the other
+hand, which represent a single logged-in user and make up the interface for
+communication with other users.
+
+Every client communicates only with the server that manages the respective user
+account which is configured in the client, as given in the user's JID. The
+server then routes the messages to their recipients, using the JID to determine
+the correct server for a message to be sent to. Finally, the receiving server
+sends the message to a client where the receiving JID is logged in. If the user
+is not logged in at the time the message is sent, the server can store it for
+the user and deliver it on the next login.
+
+\todo{use of DNS-SD?}
+
+\subsubsection{Communication primitives}
+
+\subsubsection{Multi-User Chats}
+
+\cite{xep-0045}
+
+\subsubsection{Publish/Subscribe and the Roster}
+
+is this really needed?
+
+\cite{xep-0060}
+
+\subsubsection{Presence}
+
+
 \cite{rfc6120}
 \begin{itemize}
 	\item architecture: client-server, use of DNS-SD
@@ -10,7 +70,6 @@
 	\item multi-user chats \cite{xep-0045}
 \end{itemize}
 
-\pages{3-4}
 
 
 \subsubsection{XMPP Serverless Messaging}
