Protocolo XMPP Qué es y Dónde se Necesita
Protocolo XMPP Qué es, Para qué se usa y Dónde se Necesita

Protocolo XMPP: ¿Qué es, Para qué se usa y Dónde se Necesita?

A principios de la década de 2000, cuando la idea de los mensajeros aún se estaba formando, el Protocolo Extensible de Mensajería y Comunicación de Presencia (XMPP, Extensible Messaging and Presence Protocol) permitía a los desarrolladores crear aplicaciones de chat interactivas. Desde su aparición, este protocolo ha recorrido un largo camino y ahora está incluido en el stack técnico (o framework) recomendado para el desarrollo de aplicaciones web de alta calidad, como WhatsApp (perteneciente a Meta).

Después de más de dos décadas, este protocolo todavía no ha perdido su actualidad y relevancia entre una gran cantidad de otros protocolos. ¿Por qué? ¿Qué hace que XMPP sea relevante? ¿Cuáles son sus características clave? Vamos a conocerlo mejor.

Ilustración de uso del Protocolo XMPP
Ilustración de uso del Protocolo XMPP

¿Qué es XMPP?

Extensible Messaging and Presence Protocol (Protocolo extensible de mensajería y comunicación de presencia) es un protocolo basado en XML que se utiliza normalmente en estándares abiertos de comunicación. En pocas palabras, es un protocolo de chat que permite una transferencia fácil y sin obstáculos de componentes XML, como los datos. Además de permitir el intercambio de mensajes instantáneos y conversaciones en tiempo real, XMPP también se utiliza para gestionar la lista de contactos e información sobre el estado de presencia.

¿Dónde se Utiliza el Protocolo?

XMPP se utiliza con mayor frecuencia para el intercambio directo de mensajes entre dos puntos, la comprobación del estado del usuario y la transmisión de esta información al servidor. El protocolo también se encarga de almacenar el estado del servidor, gestionar las suscripciones, actualizar la lista de contactos y bloquear ciertos usuarios.

Características de XMPP

  • El protocolo es descentralizado.
  • Admite el intercambio de datos/información asíncrona.
  • Transfiere pequeños fragmentos de datos en lugar de enviar grandes bloques.
  • Funciona sobre TCP.
  • Su configuración de red y componentes (hardware/software) no afectan a la transmisión de datos basada en XMPP.
  • Diseñado para el modelo “cliente-servidor”.
  • Utiliza tres estados: “offline”, “ocupado” o “online” para indicar el estado del usuario o la red.
  • Transmite datos entre dos puntos finales.

Arquitectura de XMPP

A nivel estructural, XMPP tiene mucho en común con los protocolos que funcionan a nivel de aplicación. Por ejemplo, también se refiere a clientes con nombres únicos que se comunican a través de un servidor asociado. Implementando el protocolo para ambos clientes, XMPP rastrea y gestiona el enrutamiento de datos para ellos.

Ejemplo de arquitectura XMPP
Ejemplo de arquitectura XMPP

Sin embargo, en una implementación compleja pueden existir varios puentes XMPP. En este caso, el protocolo también debe proporcionar enrutamiento entre dominios. Los puentes actúan como traductores entre los diferentes protocolos y dominios que participan en el intercambio de información.

Además, el puente XMPP gestiona tareas como el inicio y el cierre de las sesiones “cliente-servidor” para el protocolo correspondiente, incluyendo los elementos necesarios de traducción de protocolos.

Incluso utilizando una cantidad significativa de puentes y dominios, se puede lograr una comunicación constante entre todos los puntos de la red con XMPP.

Para comprender mejor la arquitectura de XMPP, es importante entender algunos términos.

Por ejemplo, necesitas saber sobre las estanzas XMPP (XML Stanzas). Se trata de pequeños fragmentos XML que se utilizan para iniciar una sesión de comunicación. Hay tres tipos de estanzas:

  • Stanza de presencia (presence stanza) define el estado actual de la red o del usuario para los demás. Por ejemplo, el usuario/red está online u offline.
  • Stanza de mensaje (message stanza) es una herramienta necesaria para el intercambio de mensajes en el chat.
  • Stanza de solicitud de información (IQ stanza) es un elemento que XMPP utiliza para solicitar o modificar datos. De forma similar a cómo HTTP utiliza los métodos GET y POST, XMPP utiliza la Stanza IQ.

¿Cómo Funciona el Protocolo XMPP?

Todo el procesamiento de XMPP se basa en la arquitectura “cliente-servidor“, donde los mensajes se envían primero al servidor y luego a los clientes.

Para determinar a qué cliente enviar un mensaje, el servidor XMPP utiliza un ID único del destinatario. El ID único o Jabber ID es muy similar a una dirección de correo electrónico con ligeras modificaciones.

Formato del Jabber ID: user@domain.com/resource.

Donde user es el nombre de usuario, domain.com es el dominio del remitente y resource es el tipo de dispositivo del destinatario del mensaje. Por ejemplo:

John@technology.testing/terminal.

En este ejemplo, John es el nombre de usuario, technology.testing es el dominio y terminal es el tipo de dispositivo o recurso que utiliza John. La parte “resource” es opcional, mientras que las dos partes anteriores son obligatorias.

El servidor XMPP utiliza este Jabber ID para enrutar correctamente el mensaje a través de la conexión TCP. Una vez que se inicia la sesión de comunicación, el flujo XML se envía al servidor, y la identificación del cliente se realiza mediante el Jabber ID.

Después de la identificación, el servidor recibirá la solicitud e iniciará la transmisión de otro flujo XML. Este flujo se enviará de vuelta desde el servidor al cliente. De esta manera, cada flujo XML se convierte en bidireccional.

XMPP permite crear una red de intercambio de mensajes a gran escala, llamada federación. Con la federación, los clientes pueden interactuar con varios servidores XMPP simultáneamente.

Características de XMPP en Detalle

Las principales características que distinguen a XMPP de otros protocolos son:

Transmisión de mensajes asíncrona

Con XMPP, es posible recibir mensajes de forma continua y asíncrona. Esto significa que los mensajes se envían de forma secuencial, sin esperar una respuesta del destinatario o el remitente y sin necesidad de estar online para recibir el mensaje. Los mensajes se transmiten en forma de estanzas XML, unidades de información únicas que contienen segmentos como metadatos, texto del mensaje e ID único del remitente y el destinatario.

La diferencia de XMPP con respecto a otras sistemas cliente-servidor radica en que XMPP no admite la consulta (polling). La consulta es un proceso en el que el cliente solicita constantemente al servidor si hay nueva información. Como la consulta se produce a intervalos determinados, el usuario final no tiene una experiencia de comunicación instantánea. Además, esto lleva a un consumo excesivo de ancho de banda.

En cambio, XMPP transmite automáticamente un nuevo mensaje al servidor, incluso si la solicitud anterior aún no se ha procesado o recibido por el servidor. Esto ocurre en ambos sentidos, del servidor al cliente. Esto crea una experiencia de comunicación instantánea para los usuarios.

Arquitectura Cliente-Servidor

Esta es la arquitectura principal que utiliza XMPP. En esta arquitectura, XMPP sólo transmite una pequeña parte de los elementos XML. Este elemento XML portátil llega primero al servidor y luego al usuario.

A los clientes XMPP se les asignan nombres únicos, como los de correo electrónico. Este ID único se utiliza para identificar al cliente y enrutar el mensaje en la dirección correcta. De esta manera, XMPP garantiza que cada cliente XMPP utiliza una ruta fija y estándar para conectarse al servidor.

Conexiones TCP permanentes

Inicialmente, XMPP sólo puede transmitir datos o establecer una conexión a través de TCP. La conexión establecida de esta manera es permanente y no requiere reestablecimiento al transmitir un nuevo mensaje.

Por lo tanto, XMPP crea un flujo XML que admite el intercambio libre de datos XML. Sin embargo, algunas extensiones modernas de XMPP ahora también utilizan TLS y WebSockets.

Alojamiento descentralizado

El alojamiento descentralizado significa que no existe un servidor central de control. Cualquiera puede gestionar, ejecutar y mantener servidores XMPP. Además, se permite la libertad de instalar servidores tanto en la nube como en servidores propios. Esto es similar al correo electrónico, donde cada propietario de correo electrónico puede configurar buzones a su gusto, estableciendo el nombre de usuario, la contraseña y otros parámetros.

Puentes

Otra característica distintiva de XMPP es la presencia de puentes para una gran cantidad de protocolos de chat y mensajería. XMPP es compatible con una variedad de protocolos y puede conectarse a redes durante largos períodos de tiempo.

Por ejemplo, la misma red XMPP puede acceder al dominio SMS cuando se envía un mensaje a un teléfono móvil y, al mismo tiempo, al dominio SMTP para entregar el mismo mensaje al correo electrónico del destinatario. XMPP también puede utilizar otros protocolos de mensajes, como IRC, para transmitir el mensaje en otra forma.

Ejemplos de Protocolo XMPP

XMPP se ha convertido en la base de muchas aplicaciones de comunicación populares. He aquí algunas de ellas:

  • WhatsApp utiliza su propia versión de XMPP.
  • Las funciones de chat de Zoom están proporcionadas por XMPP.
  • Apple utiliza XMPP para las notificaciones push instantáneas tanto en iPhone como en Mac.
  • Grindr utiliza XMPP para su funcionalidad de chat.
  • Para el desarrollo de chats de alta funcionalidad, XMPP es una de las muchas opciones, pero sigue siendo el preferido gracias a sus características y ventajas únicas.

Ventajas de XMPP

Respaldado por IETF y adoptado por miles de desarrolladores, XMPP se ha convertido en el principal estándar abierto para el desarrollo de chats.

Con sus excelentes características, XMPP ha llenado los vacíos dejados por los protocolos estrictos y se ha establecido como una necesidad para la comunicación entre pares y no sólo para ella.

Estas son las principales ventajas de utilizar el protocolo XMPP:

Fiabilidad

Este protocolo sirve a la comunidad de desarrolladores desde hace más de 20 años. Durante este tiempo, el protocolo ha consolidado su infraestructura y ha recibido un gran apoyo de la comunidad. Actualmente existen muchos servidores XMPP y es la base de muchas aplicaciones. Esto demuestra que el protocolo ha sido probado por el tiempo y tiene un excelente soporte técnico. Si esto no te impresiona, la gratuidad y la simplicidad de XMPP seguramente te gustarán.

Infraestructura de comunicación mejorada

Como protocolo altamente extensible, XMPP permite a los usuarios intercambiar diferentes tipos de medios y mensajes. Admite la creación de una infraestructura de comunicación eficaz independientemente del tipo de datos que se transmitan.

Garantía de entrega

Con XMPP, puedes estar seguro de que los mensajes se entregarán, ya que utiliza una conexión permanente a través de TCP. El protocolo apenas pierde ningún fragmento XML, independientemente de su tamaño.

Soporte para la mayoría de los lenguajes de programación

La gran aceptación y la demanda global han llevado a la compatibilidad con diversos lenguajes. Las bibliotecas XMPP están disponibles en muchos lenguajes populares, como Perl, C++, C#, Java, Python y muchos otros. Digas el lenguaje que digas, lo más probable es que haya una biblioteca XMPP compatible con él. Esto ha permitido a los desarrolladores trabajar en un ecosistema cómodo y compatible.

Descentralización

XMPP es descentralizado y admite múltiples implementaciones. No existen limitaciones para la configuración de servidores y bibliotecas. Cualquiera puede utilizar XMPP, lo que proporciona más libertad y flexibilidad.

Mayor seguridad

La seguridad mejorada es una ventaja adicional de XMPP. Al configurar diferentes servidores XMPP, los desarrolladores pueden elegir el cifrado, los protocolos de seguridad y las preferencias de acceso a su gusto. La seguridad está bajo control total, lo que reduce la cantidad de ciberataques y aumenta el nivel de confianza.

Transmisión continua de datos

El rendimiento se puede mantener fácilmente, ya que si un servidor XMPP se ve afectado o deja de funcionar, independientemente de la causa, sólo los usuarios correspondientes se verán afectados. Los demás seguirán disfrutando de una conexión y una transmisión de datos ininterrumpidas. Esto ha permitido lograr una continuidad operativa del 100%.

Transmisión de datos de servidor a servidor

La unión de servidores es una opción opcional. Gracias a ella, los desarrolladores pueden cerrar la transmisión de datos entre servidores por motivos de seguridad, asignando a los servidores tareas específicas.

Compatibilidad

Una de las principales ventajas de XMPP en el lado del cliente es la abundancia de clientes. No hay escasez de clientes XMPP. Independientemente del tipo de dispositivo, encontrarás un cliente XMPP. Para sistemas Windows y Unix, ofrece una línea de comandos. Además, un usuario puede estar registrado en diferentes dispositivos, lo que aumenta la accesibilidad.

En Resumen

XMPP (Extensible Messaging & Presence Protocol – Protocolo extensible de mensajería y comunicación de presencia) es de gran importancia para crear aplicaciones capaces de comunicarse en tiempo real. Lee el artículo y descubre otros detalles sobre este protocolo original. Hemos intentado cubrirlo con todo detalle.