Summary of XMPP
The Extensible Messaging and Presence Protocol (XMPP) is the IETF's formalization of the base XML streaming protocols for instant messaging and presence developed within the Jabber open-source community in 1999. (See the technology pages for details.)
As specified in RFC 3920, the core "transport" layer for XMPP is an XML streaming protocol that makes it possible to exchange fragments of XML between any two network endpoints. Authentication and channel encryption happen at the XML streaming layer using the IETF-standard protocols for Simple Authentication and Security Layer (RFC 2222) and Transport Layer Security (RFC 2246). The normal architecture of XMPP is a pure client-server model, wherein clients connect to servers and (optionally) servers connect to each other for interdomain communications. XMPP addresses are fully internationalized, and are of the form <node@domain> for clients (similar to email).
A wide variety of applications can be built on top of the core XML streaming layer. The first such application is instant messaging (IM) and presence. The basic IM and presence extensions specified in RFC 3921 address the requirements of RFC 2779, as well as the contact list functionality expected IM and presence systems. RFC 3921 also makes it possible to separate the messaging and presence functionality if desired (although most deployments offer both).
The history of XMPP is that the protocols were initially developed within the Jabber open-source community. After several years of implementation and deployment experience, the base protocols were submitted to the Internet standards process by the Jabber Software Foundation (now XMPP Standards Foundation) in 2002. After appropriate formalization in the areas of security and internationalization, the base protocols were approved as IETF-appproved instant messaging and presence technologies in October 2004.
In addition to the base protocols specified in RFC 3920 and RFC 3921, there exist many XMPP extensions for functionality that was not required by RFC 2779. These extensions are generally specified in the XEP series published by the XMPP Standards Foundation.
The following list describes the main XMPP protocol specifications and XMPP extensions that are in wide use today:
RFC 3920 -- Extensible Messaging and Presence Protocol (XMPP): Core -- the core protocols for XML streaming, including strong authentication, channel encryption, and internationalized addressing.
RFC 3921 -- Extensible Messaging and Presence Protocol (XMPP): Instant Messaging and Presence -- base XMPP extensions for instant messaging, contact lists, presence, and privacy blocking.
RFC 3923 -- End-to-End Signing and Object Encryption for the Extensible Messaging and Presence Protocol (XMPP) -- an XMPP extension for end-to-end signing and encryption.
XEP-0030 -- Service Discovery -- a robust protocol for determining the features supported by other entities on an XMPP network.
XEP-0115 -- Entity Capabilities -- a real-time profile of XEP-0030 for advertising capability changes via presence.
XEP-0004 -- Data Forms -- a flexible protocol for forms-handling via XMPP, mainly used in workflow applications and for dynamic configuration.
XEP-0045 -- Multi-User Chat -- a set of protocols for participating in and administering multi-user chat rooms, similar to Internet Relay Chat but with stronger security.
XEP-0096 -- File Transfer -- a protocol for transferring files from one XMPP entity to another.
XEP-0071 -- XHTML-IM -- a W3C-reviewed protocol for exchanging XHTML-formatted messages between XMPP entities.
XEP-0124 -- HTTP Binding -- a binding of XMPP to HTTP rather than TCP, mainly used for devices that cannot maintain persistent TCP connections to a server.
XEP-0060 -- Publish-Subscribe -- a generalized framework for publish-subscribe functionality, mainly used to deploy content syndication, extended presence, and event notification services.
The XEP series also defines XMPP extensions for a wide range of additional features, including XML-RPC and SOAP bindings, in-band registration, extended presence, geolocation, and reliable message delivery.
