Latest Replies

Common terms and definitions from the Journal on efficient software development.

« What is Virtual Machine - VM?
Sunday
Jul252010

XMPP and Jabber

What are XMPP (Extensible Messaging and Presence Protocol) and Jabber?

Extensible Messaging and Presence Protocol (XMPP) (formerly named Jabber) 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.[2] It was developed by the Jabber open-source community in 1999. Built to be extensible, the protocol has been extended with features such as Voice over Internet Protocol and file transfer signaling.

XMPP PROs

  • Decentralization - like in email; anyone can run their own XMPP server and there is no central master server.
  • Open standards - 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.
  • Long History - XMPP technologies are used since 1998. Multiple implementations exist and are supported by companies like Sun Microsystems and Google.
  • Security - XMPP servers may be isolated from the public XMPP network (e.g., on a company intranet), and robust security (via SASL and TLS) has been built into the core XMPP specifications.
  • Flexibility - Custom functionality can be built on top of XMPP.

XMPP CONs

  • Presence data overhead - XMPP currently has a large overhead in delivering presence data to multiple recipients.

  • In-band binary data transfer is inefficient - Because XMPP is encoded as a single long XML document, binary data must be first base64 encoded before it can be transmitted in-band. Therefore any significant amount of binary data (e.g., file transfers) is best transmitted out-of-band, using in-band messages to coordinate.

How to Query XMPP Server

cmd>nslookup
Default Server:  XXX
Address:  8.8.8.8

> set q=SRV
> set noverbose
> _xmpp-client._tcp.gmail.com.

References