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