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).