\def\nodelist{
	juliet/{(-1,-1)}/XMPP client \code{juliet@example.net}/below/computer,
	examplenet/{(-1,1)}/XMPP server \code{example.net}/above/server,
	imexampleorg/{(1,1)}/XMPP server \code{im.example.org}/above/server,
	romeo/{(1,-1)}/XMPP client \code{romeo@im.example.org}/below/computer%
}
\foreach \name/\pos/\text/\tpos/\icon in \nodelist {
	\node (\name) at \pos { \includegraphics[width=2em]{icon-\icon.pdf} };
	\node[\tpos=of \name,iconlabel] (\name text) { \text };
}
\draw[<->,dashed] (juliet) -- node[anchor=east,label]{s2c} (examplenet);
\draw[<->] (examplenet) -- node[anchor=south,label]{s2s} (imexampleorg);
\draw[<->,dashed] (imexampleorg) -- node[anchor=west,label]{s2c} (romeo);

