XMPP (Extensible Messaging and Presence Protocol)

XMPP (Extensible Messaging and Presence Protocol) — это открытый протокол обмена сообщениями и информацией о присутствии (presence) в режиме реального времени, основанный на XML.

Ключевые характеристики XMPP

  • Децентрализованная архитектура – серверы могут взаимодействовать между собой (как в email).
  • Гибкость и расширяемость – поддерживает плагины (XEP — XMPP Extension Protocols).
  • Поддержка шифрования (TLS для защиты соединения, SASL для аутентификации).
  • Работает поверх TCP – стандартный порт 5222 (клиент-сервер) и 5269 (сервер-сервер).
  • Использует Jabber ID (JID) – уникальный идентификатор в формате user@domain/resource (например, [email protected]/home).

Основные компоненты

  • Сервер (XMPP Server) – обрабатывает подключения клиентов и маршрутизирует сообщения (например, ejabberd, Prosody).
  • Клиент (XMPP Client) – приложение для обмена сообщениями (например, Pidgin, Conversations, Gajim).
  • Шлюзы (Transports) – мосты для интеграции с другими протоколами (SMS, ICQ, Telegram и т. д.).

Примеры использования

  • Мессенджеры (Jabber, WhatsApp изначально использовал XMPP).
  • IoT и умные устройства (управление через чат-команды).
  • Корпоративная коммуникация (чат, VoIP, файлообмен).

Отличие от MQTT

  • XMPP ориентирован на человекочитаемые сообщения и чат, а MQTT — на машино-машинное взаимодействие (M2M) с минимальными накладными расходами.
  • XMPP сложнее из-за XML, но поддерживает многопользовательские чаты (MUC), голосовые вызовы (Jingle) и другие социальные функции.

Протокол стандартизирован IETF (RFC 6120-6122).