XMPP: Extensible Messaging and Presence Protocol

Extensible Messaging and Presence Protocol (XMPP) is designed to stream XML elements for near-real-time messaging, presence, and request-response services. XMPP is based on the Jabber protocol, an open and popular protocol for instant messaging.

Although XMPP is not wedded to any specific network architecture, it usually has been implemented via a client-server architecture wherein a client utilizing XMPP accesses a server over a TCP connection, and servers also communicate with each other over TCP connections. A server acts as an intelligent abstraction layer for XMPP communications. Most clients connect directly to a server over a TCP connection and use XMPP to take full advantage of the functionality provided by a server and any associated services. Multiple resources may connect simultaneously to a server on behalf of each authorized client. The recommonded port for connections between a client and a server is 5222. 

A gateway is a special-purpose server-side service whose primary function is to translate XMPP into the protocol used by a foreign (non-XMPP) messaging system, as well as to translate the return data back into XMPP. Examples are gateways to email, Internet Relay Chat (IRC), SIMPLE, Short Message Service (SMS), and legacy instant messaging services such as AIM, ICQ, MSN Messenger, and Yahoo! Instant Messenger.  

To get this Network Protocol Poster, click here. 

For an easy-to-use network sniffing tool, click here.


Two fundamental concepts make possible the rapid, asynchronous exchange of relatively small payloads of structured information between presence-aware entities: XML streams and XML stanzas. An XML stream is a container for the exchange of XML elements between any two entities over a network. An XML stanza is a discrete semantic unit of structured information that is sent from one entity to another over an XML stream.  

XMPP includes a method for securing the stream from tampering and eavesdropping.  This channel encryption method makes use of the Transport Layer Security (TLS) protocol [TLS], along with a "STARTTLS" extension that is modelled after similar extensions for the IMAP [IMAP], POP3 [POP3], and ACAP [ACAP] protocols. XMPP includes a method for authenticating a stream by means of an XMPP-specific profile of the Simple Authentication and Security Layer (SASL) protocol [SASL].

Protocol Structure - XMPP: Extensible Messaging and Presence Protocol

An XML stream acts as an envelope for all the XML stanzas sent during a session.  We can represent this in a simplistic fashion as follows:

                       |--------------------|
   | <stream>  |
   |--------------------|
   | <presence>   |
   |   <show/> |
   | </presence>  |
   |--------------------|
   | <message to='foo'> |
   |   <body/> |
   | </message>   |
   |--------------------|
   | <iq to='bar'>   |
   |   <query/>   |
   | </iq>  |
   |--------------------|
   | ... |
   |--------------------|
   | </stream> |
   |--------------------|

                    Stream attributes:
   |  initiating to receiving  |  receiving to initiating
   ---------+---------------------------+-----------------------   
to |  hostname of receiver  |  silently ignored   from  |  silently ignored   |  hostname of receiver   id |  silently ignored   |  session key   xml:lang |  default language   |  default language   version  |  signals XMPP 1.0 support |  signals XMPP 1.0 support

Related protocols
SIMPLE, XML, SMS, IRCP

Sponsor Source
XMPP   is defined by IETF (www.ietf.org ) in RFC 3920, REC 3921, RFC 3922 and RFC 3923.

Reference

http://www.javvin.com/protocol/rfc3920.pdf : Extensible Messaging and Presence Protocol (XMPP): Core

http://www.javvin.com/protocol/rfc3921.pdf : Extensible Messaging and Presence Protocol (XMPP): Instant Messaging and Presence

http://www.javvin.com/protocol/rfc3922.pdf : Mapping the Extensible Messaging and Presence Protocol (XMPP) to Common Presence and Instant Messaging (CPIM)

http://www.javvin.com/protocol/rfc3923.pdf : End-to-End Signing and Object Encryption for the Extensible Messaging and Presence Protocol (XMPP)