XMPP

Share on LinkedInShare on FacebookShare on Google+Tweet about this on TwitterShare on RedditEmail this to someonePrint this page
image_pdf

Introducción

XMPP(Extensible Messaging and Presence Protocol) es un protocolo estándar y abierto que se basa en el intercambio de mensajes XML. Inicialment va ser concebut per implementar xarxes de missatgeria instantànea. Inicialmente fue concebido para implementar redes de mensajería instantánea. Quizás las herramientas más conocidas que usan el protocolo XMPP son Jabber, GTalk y las funciones de videoconferencia y audioconferencia de Google.

Funcionalidades

  • Redundancia.
  • Escalabilidad.
  • No hacen falta VPNs para compartir recursos dentro de una NAT.
  • Soporte SSL y Certificados
  • Backends donde se guardan los usuarios: MySQL, LDAP…
  • Extensible (usa lo que se llaman XEP – XMPP Extension Protocols)
  • BOSH permite usar XMPP sobre HTTP, lo que por diseño del protocolo XMPP sería un problema.

Protocolo

Vamos a desglosar, identificar y explicar las principales opciones que nos ofrece XMPP como protocolo.

  • JID: los nodos de una red identifican a través de este identificador, que es de la forma: user @ domain / resource (ejemplo: ruben@adictosalainformatica.com/linux ). Tratamiento de los JID:
    • user@example.com – conocido como JID
    • user@example.com/desktop – conocido como JID u full JID
  • Stanza: los mensajes XML que se intercambian entre un servidor XMPP y un cliente se llaman Stanzas. Hay tres tipos de Stanzas:
    • Messages: transportan información entre nodos, los mensajes se pueden organizar en threads. Los hay de diferentes tipos:
      • normal
      • chat
      • groupchat
      • headline
      • error
    • Presence: sirven para informar de la dipsonibilitat de un recurso (online / offline):
      • away
      • do not disturb
      • extended away
      • free for chat
    • IQ Stanza (info query): similar a un HTTP GET / POST / PUT, sirve para pedir informaciones concretas a un nodo. Ideales para extender el protocolo. Por ejemplo, las IQ usan para saber qué recursos (usuarios) están conectados a un canal de chat. Los hay de tres tipos:
      • get: piden información (HTTP GET)
      • set: proveen información (HTTP POST / PUT)
      • result: devuelven información requerida o confirman que se ha aceptado un pedido ‘set’.
  • Extensibility: para que sea simple extender el protocolo, las Stanzas soportan namespaces y cualquier elemento XML de una stanza se puede usar como un payload, para transportar: XHTML tags, Atom feeds, XML-RPCs, etc.
  • Roster: lista de personas que participan en un evento.
  • Presence Subscription: los recursos de una red (a menudo los usuarios) pueden subscribirse a otros recursos (otros usuarios) para saber si están o no disponibles en cada momento.
  • Asincronismo: la gracia del XMPP respecto a otros protocolos como HTTP es que se trata de un protocolo asíncrono, o sea, que las conexiones se establecen durante mucho tiempo y en cualquier momento el servidor y / o el cliente pueden enviar y recibir Stanzas a través de este canal. Los protocolos HTTP establecen conexiones relativamente cortas donde a menudo sólo hay una petición y una respuesta después se cierra la conexión.

Jingle(add-on)

Jingle es una extensión al protocolo XMPP que permite la transferencia de información p2p. Este protocolo permite transmitir datos multimedia, habilitando servicios de VideoConferencia y de VoIP. Este protocolo fue diseñado inicialmente por Google junto con la XMPP Standards Foundation y liberado (bajo licencia similar a la de BSD).

Observaciones

Bien puede entenderse que este protocolo solo és útil para redes de mensajería instantànea, pero pensemos en sistemas de distribución de comandos. Resolvemos muchas incertidumbres facilmente, tenemos identificados los clientes, podemos enviar comandos a ciertos clientes y saber si estos clientes estan disponibles o no, por lo cual no habra un intento de envio esperando una respuesta de error simplemente no se envia, o si han recibido el comando correctamente, luego mediante respuesta del cliente podemos saber como ha ido la ejecución de cada comando por cada cliente.

Fuentes

Ruben

Share on LinkedInShare on FacebookShare on Google+Tweet about this on TwitterShare on RedditEmail this to someonePrint this page

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*