Recent Posts

Those who are free of resentful thoughts surely find peace. - Buddha

Introduction to XMPP

Posted on 13th Jul 2018

<-Back to Blogs

This tutorial is part of our series on the XMPP Protocol :

  1. A friendly Introduction to XMPP
  2. XMPP Made Simple : Roster and Presence Explained
  3. Sending and Receiving Files with XMPP : Http File Upload Explained

Services provided by XMPP

XMPP is usually broken into two parts : the XMPP Core Services and XMPP Extension Protocols (XEPs).The core part comprises of the features(services) deemed essential to most XMPP applications like

One to one Messaging : covered in RFC6121 ,enables you to send messages from one entity to another.This is the service that got me interested in XMPP in the first place.

Data Communication Security Mechanisms:covered in RFC6120 these services allow you to build secure applications using advanced encryption algorithms when you transmit data across the wire and flexible ways to authenticate the data source and integrity through technologies liek STARTTLS ,TLSand SASL

Presence and Contact Lists: covered in RFC6120 ,the presence service is in charge of notifying you of your contacts online status.The Contact List (Roster) Service deals with managing your contact lists.

Don’t worry if these don’t make any sense as of yet.We will explain in more details in the subsequent sections when the needed basic concepts have been explained.

The full list of features in the Core part of XMPP is specified in the RFC( Request For Comment) documents RFC6120 and RFC6121 published by the the IETF.

The extension part of the XMPP protocol contains services like:

Multi-User Chat :The service allows you to build Chat Rooms.

Service Discovery : The service allows for your client application to learn what services are available from the server it it connected to.

A more exhaustive list of services provided by the XMPP protocol can be at the XMPP protocol stack page .

With a portion of the services provided by XMPP slightly introduced one can combine them to build practical real time applications.For instance ,one can combine One to one chat + Multi User Chat + Presence + Contacts Lists to build a fully functional modern instant Messaging application like Whatsapp.

How XMPP Pieces fit together

XMPP applications use the Client Server Architecture.One of the main ideas behind XMPP is to do the possible maximum to move the complex operations to the server side so it becomes easy to write client applications.The XMPP application architecture is as shown in the figure below :

Users addressed on the XMPP network

We can see client nodes in the form of PCs and mobile phones and server nodes identified by , and .Note that no client is directly connected to another client ,all client connections pass through the server.Clients can connect to the server through both wired links ( broadband connection) and wireless links ( Wifi wireless and 3G/4G Wireless).

A good point to note is that XMPP Servers can be federated.This means for example that when and are connected and know about each other and a client on sends a message to a client on , is smart enough to know that the message doesn’t belong to him and forwards the message to which in turn delivers the message to the connected client.This allows for XMPP systems that have been built independently to be able to communicate.

Another feature supported by most popular XMPP server is clustering where for example , and can be configured to serve one xmpp domain like .Clustering is a topic beyond the scope of this tutorial so we won’t say more about it .

XMPP Addressing

Being one of the network protocols ,XMPP entities should have a way of addressing nodes on the network.XMPP clients have addresses of the form “” where “user”is the username and “”is the domain.A node address in XMPP is called a Jaber ID abbreviated JID.The figure below shows four users addressed on the XMPP network


You may have noticed that user1 has apparently three addresses on the network.These are not different addresses ,we simply take into account that a user may connect on the same account from multiple devices.Lets say that user1 is connected to the server simultaneously from her PC ,her tablet and her phone.We distinguish between these devices using another portion added to the JID of the user called the resource as shown in the lower section of the figure above.user1 is then connected with devices whose resource are pc ,phone1 and phone2 respectively.A JID of the form “” is called a bare JID ,and a JID of the form “” is called a full JID.Servers on the XMPP network are addressed by the domain name only.In our XMPP network our server JIDs are , and respectively.

<-Back to Blogs


Good, better, best. Never let it rest. Untill your good is better and your better is best. - St. Jerome

© SOFTHINKERS 2013-18 All Rights Reserved. Privacy policy