| 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) |