Extensible Messaging and Presence Protocol

From Computing and Software Wiki

Jump to: navigation, search

Extensible Messaging and Presence Protocol (XMPP) is an open standard technology aimed at real-time communication. As part of the Internet Protocol suite, the technology has a number of uses including: instant messaging; presence information (shows the ability and willingness of a user to communicate); multi-client chat; voice and video calls; collaboration; and general routing of XML data.

The technology was originally developed in the Jabber open-source community to provide an open, secure, and decentralized alternative to the closed instant messaging services at the time[1]. As of 2004, the core XMPP technology has been approved by the Internet Engineering Task Force (IETF) and Internet Engineering Steering Group (IEGS) as formal implementations of instant messaging and presence technology. These core technologies are published under several specifications including RFC 3920 and RFC 3921. The technology is continuously being expanded by the standards process of the XMPP Standards Foundation.

Today XMPP is deployed on thousands of servers around the internet and is being used by many popular instant messaging clients like iChat and Google Talk.



The Extensible Messaging and Presence Protocol (XMPP) emerged from the Jabber open-source community in 1999 after a year of development by the technology's original author, Jeremie Miller. The development of the Jabber technologies was initiated by Jeremie's frustration over having to use multiple instant messaging clients to communicate with his contacts.

Jeremie released the first version of the Jabber technology in January of 1999. The open-source community then responded by developing an open-source server, called jabberd, as well as several open-source clients and code libraries.

To achieve cohesive communication between the clients, server, and other entities being created, it was decided that a common protocol for real-time XML streaming be used. This protocol then evolved into what is now the Extensible Messaging and Presence Protocol.

In February 2000, the IETF published a model for instant messaging and presence systems and requirements for such systems. The publishing was a result of the work done by the Instant Messaging and Presence Protocol Working Group.

In August 2001, the Jabber Software Foundation was formed. The goal of the foundation was to organize and coordinate between the various projects building or using Jabber Technologies.

In late 2001 and early 2002, members of the Jabber community decided to submit the base Jabber protocols to IETF. The XMPP Working Group was formed and approved by the Internet Engineering Steering Group (IESG) to formalize the base Jabber protocols [2]. By 2003, the XMPP Working Group completed their work on formalizing the protocols. They were submitted and subsequently approved as Proposed Standards in early 2004 and by October 2004 these documents were published as RFC 3920, RFC 3921, RFC 3922, and RFC 3923[3].

The Jabber Software Foundation was renamed to the XMPP Standards Foundation in January 2007 [4].

How it works

XMPP, like other instant messaging and presence protocols, allows for communication between client and server. Unlike most, however, it also allows for communication between one server and another server. XMPP Clients are registered to a particular server and communicate with that server although client to client communication is also possible as described below.

Basic operation of XMPP core technologies including message formatting.

When a client registers with a server, they are named similar to an email address (john@example.com), where @example.com is the name of the XMPP server[5].

The XMPP messages used for communication are extensible meaning that they can be used to transmit different types of data such as instant messaging, presence information, etc.

When a client sends a message to another client, the message is first sent to the XMPP server to which the client is registered with. If the recipient is also registered on the same server, the message is passed directly to the recipient. If however the recipient is on another server, the message is first sent to that server and then passed on to the client.

The above scenario assumes that the recipient is currently online. XMPP provides presence information that announces whether a registered client is online and whether they are available to receive messages. In the event that a client is offline, the XMPP server to which the client is registered with can be setup to provide temporary storage for messages that will be delivered when the client comes online.

XMPP also supports client to client communication which is being used more and more for more data intensive communication like voice and video calling[6].

Features and Advantages

XMPP has several features which offer advantages over other instant messaging and presence technology implementations[7]. The core features as describe by the XMPP Standards Foundation are:

  • Open - the XMPP protocols are free, and open to the public. No royalties are required to implement support for these technologies nor is their development tied to a single entity.
  • Standard - the core XMPP protocols have been formalized and approved by the IETF as an instant messaging and presence technology. They are published under RFC 3920 and RFC 3921.
  • Proven - ten years of development have provided XMPP technologies with proven stability. The technologies are also being used by millions of people through popular services like Google Talk.
  • Decentralized - the XMPP architecture is purposefully like email meaning that anyone can run their own server. This gives control to individuals and organizations for customizing their interaction with XMPP.
  • Secure - any XMPP server can be isolated from a public network, for example a company intranet. TLS and SASL support is also built into the core protocols.
  • Extensible - XMPP uses the open XML format which allows anyone to build custom functionality on top of the existing core protocols.
  • Flexible - there are countless XMPP applications that provide features beyond instant messaging and presence, they include network management, file sharing, gaming, cloud computing, etc.

In addition, XMPP allows clients to connect with other protocols such as other instant messaging protocols, SMS, and Email. This allows users using Google Talk for example, to communicate with users using MSN Live Messenger. XMPP also provides a feature for HTTP binding which allows XMPP servers to listen on the standard HTTP port (port 80). This is useful for connecting users which are behind certain firewalls that don't allow the standard XMPP port (port 5222)[8].


  • The presence part of the XMPP technology has a very high overhead. It is estimated that 70% of inter-server traffic is presence data[9] and at least 60% of that is redundant information[10]. Current research is being performed to fix this problem.
  • Since XMPP uses a XML format for transmitting data, binary data transfers are not possible. As a result, external protocols like HTTP are used to get by this limitation.

List of XMPP clients

A list of client using XMPP. For a complete list visit XMPP Software: Clients


Apple MacOS


Cross Platform

List of XMPP servers

A list of XMPP servers. For a complete list visit XMPP Software: Servers

See Also


  1. About XMPP, XMPP Standards Foundation.
  2. Jabber Software Foundation Renamed to XMPP Standards Foundation, XSF Press Release 2007-01-16.
  3. IETF Announces XMPP Working Group, XSF Press Release 2002-11-06.
  4. IETF Publishes XMPP RFCs, XSF Press Release 2004-10-04.
  5. XMPP 101 PDF Version of XMPP 101 Slideshow from FOSDEM 2009.
  6. XMPP Whitepaper, ISODE.
  7. XMPP Tech Overview, XMPP Standards Foundation.
  8. XEP-0124: Bidirectional-streams Over Synchronous HTTP (BOSH), XMPP Standards Foundation.
  9. Distribution of stanza types, Jabber Mailing List.
  10. Smart Presence Distribution, Jabber Mailing List.
  11. Standard Jabber Port, Jabber Mailing List

External Links

--Jedrocb 22:05, 11 April 2009 (EDT)

Personal tools