Why use IM?
Attributes IM
- fast communication (realtime)
- direct & personal
- synchron if possible, asynchron if necessary
- fusion of written and oral communication
- smooth context-change
Scope of application
- human-to-human-communication
- human-to-machine-communication
- machine-to-machine-communication
- 1:1, 1:n, n:n
Jabber: an introduction
What is jabber? taken from http://jabber.org/
- Jabber
1. Rapid and indistinct speech
2. To talk in a noisy, excited, or declamatory manner
3. A streaming XML technology mainly used for instant messaging - Jabber is a set of streaming XML protocols and technologies that enable any two entities on the Internet to exchange messages, presence, and other structured information in close to real time. The first Jabber application is an instant messaging (IM) network that offers functionality similar to legacy IM services such as AIM, ICQ, MSN, and Yahoo. However, Jabber is more than just IM, and Jabber technologies offer several key advantages:
- Open – the Jabber protocols are free, open, public, and easily understandable; in addition, multiple implementations exist for clients, servers, components, and code libraries.
- Standard – the Internet Engineering Task Force (IETF) has formalized the core XML streaming protocols as an approved instant messaging and presence technology under the name of XMPP, and the XMPP specifications are moving forward rapidly within the IETF’s standards process.
- Proven – the first Jabber technologies were developed by Jeremie Miller in 1998 and are now quite stable; hundreds of developers are working on Jabber technologies, there are tens of thousands of Jabber servers running on the Internet today, and millions of people use Jabber for IM.
- Decentralized – the architecture of the Jabber network is similar to email; as a result, anyone can run their own Jabber server, enabling individuals and organizations to take control of their IM experience.
- Secure – any Jabber server may be isolated from the public Jabber network (e.g., on a company intranet), and robust security using SASL and TLS has been built into the core XMPP specifications.
- Extensible – using the power of XML namespaces, anyone can build custom functionality on top of the core protocols; to maintain interoperability, common extensions are managed by the Jabber Software Foundation.
- Flexible – Jabber applications beyond IM include network management, content syndication, collaboration tools, file sharing, gaming, and remote systems monitoring.
- Diverse – a wide range of companies and open-source projects use the Jabber protocols to build and deploy real-time applications and services; you will never get “locked in” when you use Jabber technologies.
- Jabber is an idea whose time has come taken from “Programming Jabber”, O’Reilly
- Jabber is “the Linux of IM”
The history of Jabber
- 1998: Jeremie Miller has the idea of Jabber
- 1999: Miller starts the Jabber project with some software developers
- Jabber is based on an open, XML-based protocol for the realtime exchange of messages and presence information in Echtzeit
Jabber Software Foundation
The JSF advises today the protocol, the OSS-server and coordinates the whole project. There are also commercial implementations e.g. from Jabber Inc. The Jabber protocol (XMPP) is standardised by the IETF (draft-ietf-xmpp-core-24, draft-ietf-xmpp-im-22, draft-ietf-xmpp-cpim-05). There are approximately 20.000 Jabber-server in use with a total amount of more than 10 million Jabber users worldwide.
Architectures: an evolution
The legacy IM architecture (e.g. ICQ)
- The image below shows the IM architecture of legacy IM systems like ICQ, AIM or MSN. It’s centralized with the possibility of direct connections between clients.

- Disadvantages: Dependency on the provider of the IM system, Central physical or logical point for an attack, not usable within a company, no possibility to run own servers
The email architecture
- To get closer to the Jabber architecture you see on the image below the well-known email architecture with its decentral idea.

The Jabber architecture
- The Jabber architecture is very similar to the email architecture.
- The Jabber server is the central part. Following the concept “complex server – simple client” the server has several jobs to do: Delivering messages, storing rosters, managing gateway services etc. A basic installation is very thin caused to the modular layout and may be expanded by several plugins called services.
- Jabber clients with their Jabber ID belong like in the email architecture to a specific server. If the server goes down, it’s impossible to use any of it’s Jabber ID’s anymore – the same as if e.g. gmx would should down all its servers.
- Services are modules that are installed on a server. They may bring some more functionality like file transfer, gateway services for ICQ, email, SMS, MUC (multi user chat) etc.
- Gateway services are special services to connect to legacy IM networks like ICQ, AIM, MSN. See chapter “5) gateways” for more details.
- The great point is that even the different Jabber components “chat” with each other using the XMPP protocol. So there is no proprietary protocol for the components.

Jabber user ID (JUID)
JUID – the unique identifier
- The unique identifier in the Jabber world is the Jabber user ID (JUID) or Jabber ID (JID). It’s the equivalent e.g. to the UIN (unique identifier number) in the ICQ world.
- Jabber ID’s are not only used for users but also for servers, components, chatrooms and gateways – just everything that communicates within the Jabber architecture and needs to be identified definitely.
- Jabber user ID’s are build up similar to an E-Mail address: “username”@”hostname”/”resource”. For example: peter@jabber.netzgehirn.de/laptop or peter@jabber.netzgehirn.de/work The slash with the resource is optional, it just identifies a special device or interface. Using Jabber you have the possibility to be online with your account on different machines or with different clients at the same time (e.g. this is an impossible thing in the ICQ world). So you are able to assign an identifying name for each client to your Jabber ID (e.g. /laptop, /athome, /work, /university etc.). Now everyone has the possibiliy to send messages directly to a specified resource, e.g. to your /laptop resource. You see that you have two possibilities to send messages: Either send it just to the JID (peter@jabber.netzgehirn.de) or to the JID with a resource (peter@jabber.netzgehirn.de/laptop). To control the correct delivery of your messages not addressed to a specific resource you have the possibility to assign a priority to each resource. As you may guess, only the resource with the highest number that is online wins and gets all the messages. An example:
- You are logged in with your JID peter@jabber.netzgehirn.de on four machines: Your laptop, your PC, your mobile phone and another PC with a Jabber web interface.
- You enter a resource name into the config of each client: “laptop”, “desktop”, “mobile” and “web”
- You enter priorites into the config of each client:
“2” for “laptop”, “1” for “desktop”, “3” for “mobile” and “10” for “web” (of course usually you may not change the priority of a web client because the admin has hard-configured on the server to the highest number) - Now everyone may send you a message directly to your mobile phone by addressing the message to “peter@jabber.netzgehirn.de/mobile”. If you are not connected to the Jabber network with your mobile phone at that time, the message will be stored on the server until you come online again with your mobile phone.
- If the sender just uses your JID without a resource name (the usual case), the connected client with the highest priority will receive the message. In our example this is the web interface. If you log off from the web interface all messages will be routed dynamically to your mobile phone as long as you’re connected with it. So no message will get lost.

Roster – the Jabber contact list
- Roster are server-based and store all the contacts of one Jabber ID. So it doesn’t matter where and how you connect to your Jabber server you will always have your full roster with you. The name roster was chosen as an alternative because AOL has a registered trademark on the synonym “buddy list”.
Gateways
Gateway services – connecting to the legacy world
- As described before, gateway services connect legacy IM systems to the Jabber world. The gateway service connects to the legacy IM server, e.g. ICQ, with the UIN and password of the user as if it was a normal ICQ-client. That’s why you have the multiple logon feature even with ICQ contacts in your roster because it’s not your client that connects several times to the ICQ-server but only one gateway service on the Jabber server. The Jabber client just has to “speak” the XMPP/Jabber protocol while the gateway service handles the proprietary (ICQ/AIM/MSN etc.) protocol. The Jabber client can address a legacy user directly with the JID of the gateway, e.g. “12345678@icq.jabber.netzgehirn.de”, the gateway service just forwards this message to the legacy network. The gateway service also takes care for the forwarding of the presence information and the roster.
- Every Jabber user may use every gateway service of another Jabber server. If Jabber server A doesn’t have an ICQ gateway but Jabber server B does have, all users of Jabber server A may use it. This gives you the chance to build a scalable, distributed network where services may be distributed where it is necessary.
- Advantages: You may still use legacy IM networks without disadvantages in comfort but have all the advantages of Jabber, no single user of a Jabber server has to care about the “protocol wars” between the huge IM providers AOL, MSN and Yahoo because if there are changes at the legacy protocols there is only one patch for the gateway service necessary and e.g. every of the 300 Jabber users of that server is able to communicate again without changing anything on the client, noone needs big clients that are able to handle with several proprietary protocols – a simple Jabber client is enough.
Jabber Software (Client/Server)
Complex Server – simple client
- The concept of Jabber is to put as much complexity as possible into the server.
- There is a huge variety of OSS and commercial server-software, even 12 you may find on jabber.org. The server most often used is “Jabberd” from the JSF (Jabber software foundation)

Jabber protocol
XML based communication
- The communication between clients and servers is based on an XML-stream, even server components use that stream.
- XML doesn’t mean the exchange of several fragments of XML but the use of two interdigitated XML documents (see picture below). These documents are closed at the end of a connection.

- Advantages: Only low bandwidth-use caused to the exchange of simple and small lines of XML
Security
authorisation
Dialback against MIM attacks
SSL encrypted communication
- SSL encrypted communication is supported by every component of the Jabber architecture
GPG encrypted end-to-end communication
- The XMPP/Jabber protocol is prepared for GPG encryption, it just belongs to the client you use if you may use it