Extensible Messaging and Presence Protocol
From Free net encyclopedia
Extensible Messaging and Presence Protocol, or XMPP, is an open, XML-based protocol for near-real-time, extensible instant messaging and presence information. It is the core protocol of the Jabber Instant Messaging and Presence technology which is currently deployed on thousands of Jabber servers across the Internet and is used by millions of people worldwide.
Founded in 2002, The Internet Engineering Task Force (IETF) XMPP Working Group aimed to adapt the XMPP for use as an IETF Instant Messaging and presence technology. Four of their specifications were approved by the IESG as Proposed Standards in 2004. Shortly thereafter, the XMPP Working Group was concluded. Since then, XMPP-extension architecture is under control of the Jabber Software Foundation.
Contents |
Specifications
The IETF XMPP working group has produced a number of RFC protocol documents:
- RFC 3920, Extensible Messaging and Presence Protocol (XMPP): Core which describes client-server messaging using two open ended XML streams. XML streams consist of <presence/>, <message/> and <iq/> (info/query) as illustrated in the example client-server conversation. A connection is authenticated with Simple Authentication and Security Layer (SASL) and encrypted with Transport Layer Security (TLS).
- RFC 3921, Extensible Messaging and Presence Protocol (XMPP): Instant Messaging and Presence describes instant messaging (IM), the most common application of XMPP.
- RFC 3922, Mapping the Extensible Messaging and Presence Protocol (XMPP) to Common Presence and Instant Messaging (CPIM) relates XMPP and the Common Presence and Instant Messaging (CPIM) specifications.
- RFC 3923, End-to-End Signing and Object Encryption for the Extensible Messaging and Presence Protocol (XMPP) describes end to end encryption of XMPP messages using S/MIME. Conflicting this proposal, many clients currently use GPG for encrypting messages.
Implementations
- XMPP is implemented by the numerous Jabber clients and servers
- Twisted Matrix Labs' Twisted (a Python-based framework for writing networked applications) supports XMPP.
- Google Talk, Google's instant messenger, uses an implementation of the protocol.
- The Gizmo Project, primarily a Voice over IP system using Session Initiation Protocol (SIP), uses XMPP as its instant messaging protocol and can interoperate with Google Talk for both text and voice.
- The open source peer-to-peer WiredReach Universal Content Sharing System, an example of social networking software, depends upon XMPP.
- gloox, a portable C++ Jabber/XMPP library
- Smack, an Open Source XMPP (Jabber) pure Java client library for instant messaging and presence
Example client-server conversation using the XMPP protocol
A client (alice) connects to Jabber server (example.org on TCP port 5222), sends a message (Subject: "Hello!" and Body: "Can't wait to see you tomorrow.") to another client (bob) and logs out.
alice (client):
<?xml version="1.0"?> <stream:stream xmlns:stream="http://etherx.jabber.org/streams" xmlns="jabber:client" to="example.org">
example.org (server):
<stream:stream xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' from='example.org' id='1461777714'>
alice:
<iq type="set" id="auth_2" to="example.org" > <query xmlns="jabber:iq:auth"> <username>alice</username> <password>password</password> <resource>Work</resource> </query> </iq>
example.org:
<iq from="example.org" id='auth_2' type='result'/>
alice:
<message to="bob@example.com" > <subject>Hello!</subject> <body>Can't wait to see you tomorrow.</body> </message> <presence type="unavailable" > <status>Logged out</status> </presence> </stream:stream>
example.org:
</stream:stream>
External links
- Official press release from the JSF regarding the publication of the official RFC numbers.
- XMPP working group
- Jabber Software Foundationcs:XMPP
de:Extensible Messaging and Presence Protocol fr:Extensible messaging and presence protocol it:Jabber#XMPP nl:Extensible Messaging and Presence Protocol pl:XMPP fi:XMPP th:Extensible Messaging and Presence Protocol zh:XMPP