• Home
  • InfoBase
  • Dictionaries
  • Member
  • News
  • 中文网站
     Advanced Search
    Read the latest Blogs from IT professionals in the field. Read and write community created documents. Need IT help? Ask our staff. Connect with your peers. Check our Tech Shop for posters, books and software tools. Home

    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.

    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)