xmpp: addressing and architecture
[skm-ma-ws1314.git] / xmpp.tex
1 \subsection{XMPP}
2 \todo
3 \pages{3-4}
5 The \term{Extensible Messaging and Presence Protocol (XMPP)} is a distributed,
6 XML-based protocol for real-time communication. Its core functionalities are
7 specified in RFCs~6120~\cite{rfc6120} and RFC~6122~\cite{rfc6121}, while protocol
8 extensions are usually defined by the XMPP community in \term{XMPP Extension
9 Proposals (XEPs)}.
11 \subsubsection{Addressing}
13 Every user account in XMPP is addressed by a globally unique identifier, called
14 the \term{Jabber ID (JID)}~\cite{rfc6122}. It has the form
15 \code{localpart@domainpart/resource}, where \code{domainpart} is the DNS name of
16 an XMPP server, and \code{localpart} is the name of a user account on that
17 server. Since a user can be logged in from multiple clients, the \code{resource}
18 part is a string chosen by the user to distinguish those clients. Only the part
19 \code{localpart@domainpart} (the \term{bare JID}) is needed to identify a user,
20 the resource is only needed for routing between client and server.
22 \subsubsection{Architecture}
23 \begin{wrapfigure}{r}{0.4\textwidth}
24 %\begin{figure}[htop]
25 \centering
26 \includegraphics[width=0.4\textwidth]{xmpp-architecture-mock.jpg}
27 \caption{XMPP architecture}
28 %\end{figure}
29 \end{wrapfigure}
31 The original architecture underlying XMPP strongly leans on the established
32 design of Internet Mail. The distributed network is formed by \term{XMPP
33 servers} on one hand, which make up the always available backbone of the network
34 and manage user accounts and statuses, and \term{XMPP clients} on the other
35 hand, which represent a single logged-in user and make up the interface for
36 communication with other users.
38 Every client communicates only with the server that manages the respective user
39 account which is configured in the client, as given in the user's JID. The
40 server then routes the messages to their recipients, using the JID to determine
41 the correct server for a message to be sent to. Finally, the receiving server
42 sends the message to a client where the receiving JID is logged in. If the user
43 is not logged in at the time the message is sent, the server can store it for
44 the user and deliver it on the next login.
46 \todo{use of DNS-SD?}
48 \subsubsection{Communication primitives}
50 \subsubsection{Multi-User Chats}
52 \cite{xep-0045}
54 \subsubsection{Publish/Subscribe and the Roster}
56 is this really needed?
58 \cite{xep-0060}
60 \subsubsection{Presence}
63 \cite{rfc6120}
64 \begin{itemize}
65 \item architecture: client-server, use of DNS-SD
66 \item addressing: JIDs, resources
67 \item XML-based communication primitives, stanzas and streams
68 \item presence
69 \item publish/subscribe \cite{xep-0060}, roster
70 \item multi-user chats \cite{xep-0045}
71 \end{itemize}
75 \subsubsection{XMPP Serverless Messaging}
76 \todo
77 \cite{xep-0174} \pages{1}
79 % vim: set ft=tex et ts=2 sw=2 :
This page took 0.098279 seconds and 5 git commands to generate.