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.
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
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 Terms: 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)
