Extensible messaging and presence protocol: Difference between revisions
m (using an external editor) |
m (using an external editor) |
||
Line 1: | Line 1: | ||
<pageby nominor="false" comments="false"/> | <pageby nominor="false" comments="false"/> | ||
{{Stub}} | |||
== Introduction == | == Introduction == | ||
Line 5: | Line 6: | ||
The '''Extensible Messaging and Presence Protocol''' (XMPP) also known as '''Jabber''' is an instance messaging protocol. | The '''Extensible Messaging and Presence Protocol''' (XMPP) also known as '''Jabber''' is an instance messaging protocol. | ||
{{quotation|XMPP is an open, XML-based protocol originally aimed at near-real-time, extensible instant messaging (IM) and presence information (e.g., buddy lists), but now expanded into the broader realm of message oriented middleware.[1] It remains the core protocol of the Jabber Instant Messaging and Presence technology. Built to be extensible, the protocol has been extended with features such as Voice over Internet Protocol and file transfer signaling. Unlike most instant messaging protocols, XMPP is an open standard. Like e-mail, it is an open system where anyone who has a domain name and a suitable Internet connection can run their own Jabber server and talk to users on other servers. The standard server implementations and many clients are also free and open source software.}} ([http://en.wikipedia.org/wiki/Extensible_Messaging_and_Presence_Protocol Wikipedia], retrieved | {{quotation|XMPP is an open, XML-based protocol originally aimed at near-real-time, extensible instant messaging (IM) and presence information (e.g., buddy lists), but now expanded into the broader realm of message oriented middleware.[1] It remains the core protocol of the Jabber Instant Messaging and Presence technology. Built to be extensible, the protocol has been extended with features such as Voice over Internet Protocol and file transfer signaling. Unlike most instant messaging protocols, XMPP is an open standard. Like e-mail, it is an open system where anyone who has a domain name and a suitable Internet connection can run their own Jabber server and talk to users on other servers. The standard server implementations and many clients are also free and open source software.}} ([http://en.wikipedia.org/wiki/Extensible_Messaging_and_Presence_Protocol Wikipedia], retrieved 15:02, 3 September 2009 (UTC)). | ||
Jabber can be used (with the XEP-0045 extension) as multi-user chat (MUC). | |||
== Architecture == | == Architecture == | ||
Line 22: | Line 25: | ||
XMPP servers also may connect to other protocols like ICQ and also transport messages through HTTP to avoid Firewalls. | XMPP servers also may connect to other protocols like ICQ and also transport messages through HTTP to avoid Firewalls. | ||
[http://en.wikipedia.org/wiki/Extensible_Messaging_and_Presence_Protocol Wikipedia] (retrieved | [http://en.wikipedia.org/wiki/Extensible_Messaging_and_Presence_Protocol Wikipedia] (retrieved 15:02, 3 September 2009 (UTC)) summarizes the most important XMPP RFCs: | ||
# 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). A connection is authenticated with Simple Authentication and Security Layer (SASL) and encrypted with Transport Layer Security (TLS). | # 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). 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 3921, Extensible Messaging and Presence Protocol (XMPP): Instant Messaging and Presence describes instant messaging (IM), the most common application of XMPP. | ||
Line 29: | Line 32: | ||
XMPP extensions. | XMPP extensions. | ||
* [http://xmpp.org/extensions/xep-0045.html XEP-0045: Multi-User Chat] {{quotation|defines an XMPP protocol extension for multi-user text chat, whereby multiple XMPP users can exchange messages in the context of a room or channel, similar to Internet Relay Chat (IRC). In addition to standard chatroom features such as room topics and invitations, the protocol defines a strong room control model, including the ability to kick and ban users, to name room moderators and administrators, to require membership or passwords in order to join the room, etc.}} (retrieved | * [http://xmpp.org/extensions/xep-0045.html XEP-0045: Multi-User Chat] {{quotation|defines an XMPP protocol extension for multi-user text chat, whereby multiple XMPP users can exchange messages in the context of a room or channel, similar to Internet Relay Chat (IRC). In addition to standard chatroom features such as room topics and invitations, the protocol defines a strong room control model, including the ability to kick and ban users, to name room moderators and administrators, to require membership or passwords in order to join the room, etc.}} (retrieved 15:02, 3 September 2009 (UTC)) | ||
On of top of XMPP, various applications can be built. E.g. [http://www.virtual-presence.org/notes/VPTN-4.txt VPTN] is a "virtual presence protocol" that can be embedded in multi-user virtual environments. | |||
== Technology == | == Technology == | ||
Line 35: | Line 40: | ||
=== Servers === | === Servers === | ||
* [http://en. | * [http://www.process-one.net/en/ejabberd/ ejabberd] Free and Open Source distributed fault-tolerant Jabber server. (http://www.process-one.net/en/ejabberd/downloads/ download). | ||
* [http:// | |||
* [http:// | === Clients === | ||
; Stand-alone clients | |||
* [http://www.gajim.org/ Gajim] is a popular Jabber client for Linux (Also runs under Windows). Supports the MUC protocol and has some nice extra features like: tabbed chat, speller, support for multiple accounts, an XML console, etc. | |||
* [http://sourceforge.net/projects/psi/ Psi] aims to be a feature-rich Jabber/XMPP client for novice and experienced Jabber users. There are builds available for Windows, Linux, and MacOS X. | |||
; Web Widgets | |||
; Desktop Gadgets | |||
; Clients for particular servers | |||
* [http://www.google.com/talk/ Google Talk gadget] (standalone client) | |||
* [http://talkgadget.google.com/talkgadget/popout Google Talk Gadget] (web client, aka gmail chat) | |||
* [http://www.google.com/talk/labsedition/index.html Google talk labs edition | |||
=== Clients === | === Clients === |
Revision as of 16:02, 3 September 2009
<pageby nominor="false" comments="false"/>
Introduction
The Extensible Messaging and Presence Protocol (XMPP) also known as Jabber is an instance messaging protocol.
“XMPP is an open, XML-based protocol originally aimed at near-real-time, extensible instant messaging (IM) and presence information (e.g., buddy lists), but now expanded into the broader realm of message oriented middleware.[1] It remains the core protocol of the Jabber Instant Messaging and Presence technology. Built to be extensible, the protocol has been extended with features such as Voice over Internet Protocol and file transfer signaling. Unlike most instant messaging protocols, XMPP is an open standard. Like e-mail, it is an open system where anyone who has a domain name and a suitable Internet connection can run their own Jabber server and talk to users on other servers. The standard server implementations and many clients are also free and open source software.” (Wikipedia, retrieved 15:02, 3 September 2009 (UTC)).
Jabber can be used (with the XEP-0045 extension) as multi-user chat (MUC).
Architecture
The Internet Engineering Task Force has formalized XMPP as an approved instant messaging and presence technology under the name of XMPP, and the XMPP specifications have been published as RFC 3920 and RFC 3921.
XMPP networks are server-based and anyone can run his/her own Jabber server. Each users has his unique Jabber Identification (JID). It has the form:
Username@domain.name
Furthermore, Jabber IDs may include a resource, i.e. identification of a particular client. These can be use to define various identities for various clients with a given priority, e.g.
Username@domain.name/mobile
Messages from one user (identified by Jabber IDs) to another is achieved through a chain of client a - server A - server B - client B chain. I.e. a user@domainA.org sending a message to user@domainB.org would first send the message to XMPP server domainA.org, which in turn forwards the message to domainB server (unless server B blocks serva A), which finally forwards the message to client B.
XMPP servers also may connect to other protocols like ICQ and also transport messages through HTTP to avoid Firewalls.
Wikipedia (retrieved 15:02, 3 September 2009 (UTC)) summarizes the most important XMPP RFCs:
- 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). 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.
XMPP extensions.
- XEP-0045: Multi-User Chat “defines an XMPP protocol extension for multi-user text chat, whereby multiple XMPP users can exchange messages in the context of a room or channel, similar to Internet Relay Chat (IRC). In addition to standard chatroom features such as room topics and invitations, the protocol defines a strong room control model, including the ability to kick and ban users, to name room moderators and administrators, to require membership or passwords in order to join the room, etc.” (retrieved 15:02, 3 September 2009 (UTC))
On of top of XMPP, various applications can be built. E.g. VPTN is a "virtual presence protocol" that can be embedded in multi-user virtual environments.
Technology
Servers
- ejabberd Free and Open Source distributed fault-tolerant Jabber server. (http://www.process-one.net/en/ejabberd/downloads/ download).
Clients
- Stand-alone clients
- Gajim is a popular Jabber client for Linux (Also runs under Windows). Supports the MUC protocol and has some nice extra features like: tabbed chat, speller, support for multiple accounts, an XML console, etc.
- Psi aims to be a feature-rich Jabber/XMPP client for novice and experienced Jabber users. There are builds available for Windows, Linux, and MacOS X.
- Web Widgets
- Desktop Gadgets
- Clients for particular servers
- Google Talk gadget (standalone client)
- Google Talk Gadget (web client, aka gmail chat)
- [http://www.google.com/talk/labsedition/index.html Google talk labs edition
Clients
According to Wikipedia, popular client applications include the freeware clients offered by Google, Nimbuzz and the Gizmo Project, multi-protocol instant messengers such as iChat and Pidgin (formerly Gaim), and free dedicated clients such as Psi and Gajim. Google Talk provides XMPP gateways to its service. Google Wave's federation protocol is an open extension to the XMPP protocol.
Links
Overviews
- Extensible Messaging and Presence Protocol (Wikipedia)
Implementations
- Gizmo Project (Wikipedia)
- Nimbuzz (Wikipedia)
- Google Talk (Wikipedia)
Standards
- RFC 3920, RFC 3921, RFC 3922, RFC 3923, RFC 4622, RFC 4854, RFC 4979