XMPP - Extensible Messaging and Presence Protocol
===================================================
.. panels::
:container: container pb-4
:column: col-lg-12 p-2
:card: shadow
.. panels::
:container: container pb-4
:column: col-lg-12 p-2
:card: shadow
**What is XMPP?**
XMPP is an open, XML-based communication protocol designed for real-time messaging, presence information,
and structured data exchange between clients and servers. Originally developed for instant messaging, it
has evolved to support a wide range of applications including IoT, VoIP, and social networking.
.. panels::
:container: container pb-4
:column: col-lg-12 p-2
:card: shadow
**Why is XMPP useful?**
* Real-time communication – Ideal for chat, notifications, and presence updates.
* Federated architecture – Like email, anyone can run their own XMPP server.
* Extensible – Supports custom features via XMPP Extension Protocols (XEPs).
* Secure – Supports TLS encryption and SASL authentication.
* Decentralized – No central authority; promotes open communication.
.. panels::
:container: container pb-4
:column: col-lg-12 p-2
:card: shadow
**How it works?**
* Client connects to XMPP server – Using TCP and negotiates TLS and authentication.
* Authentication – Performed using SASL (Simple Authentication and Security Layer).
* Session established – Client sends to indicate availability.
* Message exchange – Clients send XML stanzas (message, presence, IQ) through the server.
* Session ends – Client sends and disconnects.
.. panels::
:container: container pb-4
:column: col-lg-12 p-2
:card: shadow
**Where is XMPP used?**
* Instant messaging apps – Like Jabber, Conversations, and formerly Google Talk.
* IoT communication – Lightweight and extensible for device-to-device messaging.
* Enterprise chat systems – Used in internal communication tools.
* Social networking – Supports presence and status updates.
* VoIP and video calls – Used as a signaling protocol in some systems.
.. panels::
:container: container pb-4
:column: col-lg-12 p-2
:card: shadow
**Which OSI layer does this protocol belong to?**
* Manages sessions – Maintains long-lived XML streams between client and server.
* Protocol-agnostic messaging – Can carry any structured data in XML format.
* Stateful communication – Tracks presence, subscriptions, and message delivery status.
.. panels::
:container: container pb-4
:column: col-lg-12 p-2
:card: shadow
Topics in this section,
* :ref:`Learnings in this section `
* :ref:`Terminology `
* :ref:`Version Info `
* :ref:`XMPP Version&RFC Details `
* :ref:`XMPP Basic Setup on Ubuntu using IPv4 `
* :ref:`XMPP Basic Setup on Ubuntu using IPv6 `
* :ref:`XMPP Protocol Packet Details `
* :ref:`XMPP Usecases `
* :ref:`XMPP Basic Features `
* :ref:`XMPP Feature : XML Based Protocol `
* :ref:`XMPP Feature : Real Time Messaging `
* :ref:`XMPP Feature : Presence Information `
* :ref:`XMPP Feature : Federated Architecture `
* :ref:`XMPP Feature : Extensiblity via XEPs `
* :ref:`XMPP Feature : Security Support `
* :ref:`XMPP Feature : Multiuser chat `
* :ref:`XMPP Feature : offline messaging `
* :ref:`XMPP Feature : Push Notifications `
* :ref:`XMPP Feature : cross platform compatibility `
* :ref:`Reference links `
.. _XMPP_step1:
.. tab-set::
.. tab-item:: Learnings in this section
* In this section, you are going to learn
.. _XMPP_step2:
.. tab-set::
.. tab-item:: Terminology
* Terminology
.. _XMPP_step3:
.. tab-set::
.. tab-item:: Version Info
* Version Info
.. _XMPP_step5:
.. tab-set::
.. tab-item:: XMPP Version&RFC Details
.. csv-table::
:file: ./XMPP/XMPP_rfcdetails.csv
:widths: 10,10,10,30
:header-rows: 1
.. _XMPP_step19:
.. tab-set::
.. tab-item:: XMPP Basic Setup on Ubuntu using IPv4
* setup
.. _XMPP_step20:
.. tab-set::
.. tab-item:: XMPP Basic Setup on Ubuntu using IPv6
* setup
.. _XMPP_step6:
.. tab-set::
.. tab-item:: XMPP Protocol Packet Details
**Client Stream Header Packet**
.. csv-table::
:file: ./XMPP/XMPP_packetdetails1.csv
:widths: 10,20,30,10
:header-rows: 1
**Server Stream Header Packet**
.. csv-table::
:file: ./XMPP/XMPP_packetdetails2.csv
:widths: 10,20,30,10
:header-rows: 1
**SASL Authentication Packet**
.. csv-table::
:file: ./XMPP/XMPP_packetdetails3.csv
:widths: 10,20,30,10
:header-rows: 1
**Resource Binding Packet**
.. csv-table::
:file: ./XMPP/XMPP_packetdetails4.csv
:widths: 10,20,30,10
:header-rows: 1
**Presence Packet**
.. csv-table::
:file: ./XMPP/XMPP_packetdetails5.csv
:widths: 10,20,30,10
:header-rows: 1
**Message Packet**
.. csv-table::
:file: ./XMPP/XMPP_packetdetails6.csv
:widths: 10,20,30,10
:header-rows: 1
**IQ Packet**
.. csv-table::
:file: ./XMPP/XMPP_packetdetails7.csv
:widths: 10,20,30,10
:header-rows: 1
.. _XMPP_step7:
.. tab-set::
.. tab-item:: XMPP Usecases
.. csv-table::
:file: ./XMPP/XMPP_usecases.csv
:widths: 10,20,30
:header-rows: 1
.. _XMPP_step8:
.. tab-set::
.. tab-item:: XMPP Basic Features
.. csv-table::
:file: ./XMPP/XMPP_basicfeatures.csv
:widths: 10,10,30
:header-rows: 1
.. _XMPP_step9:
.. tab-set::
.. tab-item:: XMPP Feature : XML Based Protocol
**XML Based Protocol - Testcases**
.. csv-table::
:file: ./XMPP/XMPP_feature1_XML_Based_Protocol_testcases.csv
:widths: 10,10,30,20
:header-rows: 1
.. _XMPP_step10:
.. tab-set::
.. tab-item:: XMPP Feature : Real Time Messaging
**Real Time Messaging - Testcases**
.. csv-table::
:file: ./XMPP/XMPP_feature2_Real_Time_Messaging_testcases.csv
:widths: 10,10,30,20
:header-rows: 1
.. _XMPP_step11:
.. tab-set::
.. tab-item:: XMPP Feature : Presence Information
**Presence Information - Testcases**
.. csv-table::
:file: ./XMPP/XMPP_feature3_Presence_Information_testcases.csv
:widths: 10,10,30,20
:header-rows: 1
.. _XMPP_step12:
.. tab-set::
.. tab-item:: XMPP Feature : Federated Architecture
**Federated Architecture - Testcases**
.. csv-table::
:file: ./XMPP/XMPP_feature4_Federated_Architecture_testcases.csv
:widths: 10,10,30,20
:header-rows: 1
.. _XMPP_step13:
.. tab-set::
.. tab-item:: XMPP Feature : Extensiblity via XEPs
**Extensiblity via XEPs - Testcases**
.. csv-table::
:file: ./XMPP/XMPP_feature5_Extensiblity_via_XEPs_testcases.csv
:widths: 10,10,30,20
:header-rows: 1
.. _XMPP_step14:
.. tab-set::
.. tab-item:: XMPP Feature : Security Support
**Security Support - Testcases**
.. csv-table::
:file: ./XMPP/XMPP_feature6_Security_Support_testcases.csv
:widths: 10,10,30,20
:header-rows: 1
.. _XMPP_step15:
.. tab-set::
.. tab-item:: XMPP Feature : Multiuser chat
**Multiuser chat - Testcases**
.. csv-table::
:file: ./XMPP/XMPP_feature7_Multiuser_chat_testcases.csv
:widths: 10,10,30,20
:header-rows: 1
.. _XMPP_step16:
.. tab-set::
.. tab-item:: XMPP Feature : offline messaging
**offline messaging - Testcases**
.. csv-table::
:file: ./XMPP/XMPP_feature8_offline_messaging_testcases.csv
:widths: 10,10,30,20
:header-rows: 1
.. _XMPP_step17:
.. tab-set::
.. tab-item:: XMPP Feature : Push Notifications
**Push Notifications - Testcases**
.. csv-table::
:file: ./XMPP/XMPP_feature9_Push_Notifications_testcases.csv
:widths: 10,10,30,20
:header-rows: 1
.. _XMPP_step21:
.. tab-set::
.. tab-item:: XMPP Feature : cross platform compatibility
**cross platform compatibility - Testcases**
.. csv-table::
:file: ./XMPP/XMPP_feature10_cross_platform_compatibility_testcases.csv
:widths: 10,10,30,20
:header-rows: 1
.. _XMPP_step18:
.. tab-set::
.. tab-item:: Reference links
* Reference links