XMPP

XMPP es el Protocolo de mensajería y Presencia Extensible, un conjunto de tecnologías abiertas para mensajería instantánea, presencia, chat de múltiples partes, llamadas de voz y video, colaboración, middleware ligero, sindicación de contenido y enrutamiento generalizado de datos XML.

XMPP fue desarrollado originalmente en la comunidad de código abierto Jabber para proporcionar una alternativa abierta y descentralizada a los servicios cerrados de mensajería instantánea en ese momento. XMPP ofrece varias ventajas clave sobre estos servicios:

  • Abierto: los protocolos XMPP son gratuitos, abiertos, públicos y fácilmente comprensibles; además, existen múltiples implementaciones en el formulario clientes, servidores, componentes de servidor y bibliotecas de código.

  • Estándar: el Grupo de Trabajo de Ingeniería de Internet (IETF) ha formalizado los protocolos de transmisión XML básicos como una tecnología de presencia y mensajería instantánea aprobada. Las especificaciones XMPP se publicaron como RFC 3920 y RFC 3921 en 2004, y la Fundación de Estándares XMPP continúa publicando muchos Protocolos de extensión XMPP. En 2011 se revisaron los RFC principales, lo que resultó en las especificaciones más actualizadas (RFC 6120, RFC 6121 y RFC 7622).

  • Probado: las primeras tecnologías Jabber/XMPP fueron desarrolladas por Jeremie Miller en 1998 y ahora son bastante estables; cientos de desarrolladores están trabajando en estas tecnologías, hay decenas de miles de servidores XMPP que se ejecutan en Internet hoy en día, y millones de personas usan XMPP para mensajería instantánea a través de servicios públicos como Google Talk y implementaciones de XMPP en organizaciones de todo el mundo.

  • Descentralizada: la arquitectura de la red XMPP es similar al correo electrónico; como resultado, cualquiera puede ejecutar su propio servidor XMPP, lo que permite a las personas y organizaciones tomar el control de su experiencia de comunicación.

  • Seguro: cualquier servidor XMPP puede estar aislado de la red pública (por ejemplo, en una intranet de la empresa) y la seguridad robusta que utiliza SASL y TLS se ha incorporado en las especificaciones principales de XMPP. Además, la comunidad de desarrolladores de XMPP está trabajando activamente en el cifrado de extremo a extremo para elevar aún más el nivel de seguridad.

  • Extensible: con el poder de XML, cualquiera puede crear una funcionalidad personalizada sobre los protocolos principales; para mantener la interoperabilidad, las extensiones comunes se publican en la serie XEP, pero dicha publicación no es necesaria y las organizaciones pueden mantener sus propias extensiones privadas si así lo desean.

  • Flexible: las aplicaciones XMPP más allá de la mensajería instantánea incluyen administración de redes, sindicación de contenido, herramientas de colaboración, uso compartido de archivos, juegos, supervisión de sistemas remotos, servicios web, middleware ligero, computación en la nube y mucho más.

  • Diversa: una amplia gama de empresas y proyectos de código abierto utilizan XMPP para crear e implementar aplicaciones y servicios en tiempo real; nunca se «bloqueará» cuando use tecnologías XMPP.

Esta página proporciona una introducción a varias tecnologías XMPP, incluidos enlaces a especificaciones, implementaciones, tutoriales y espacios de discusión para fines especiales.

Tecnologías clave XMPP:

  • Core: información sobre las tecnologías core XMPP para streaming XML
  • Jingle: señalización multimedia compatible con SIP para voz, vídeo, transferencia de archivos y otras aplicaciones
  • Chat multiusuario: comunicación flexible entre varias partes
  • PubSub: alertas y notificaciones para sindicación de datos, presencia enriquecida y más
  • BOSH — un enlace HTTP para tráfico XMPP (y otros)

Core

En su núcleo, XMPP es una tecnología para transmitir XML a través de una red. El protocolo, que surgió de la comunidad de código abierto Jabber en 1999, fue diseñado originalmente para proporcionar una alternativa abierta, segura y descentralizada a los servicios de mensajería instantánea (IM) orientados al consumidor como ICQ, AIM y MSN. Las tecnologías principales se formalizaron bajo el nombre de Protocolo de Presencia y Mensajería Extensible (XMPP) en el IETF en 2004. Estas tecnologías principales incluyen:

  • La capa de streaming XML base
  • Cifrado de canales mediante Seguridad de la capa de transporte (TLS)
  • Autenticación fuerte mediante la Capa de Seguridad y Autenticación Simple (SASL)
  • Uso de UTF-8 para compatibilidad completa con Unicode, incluidas direcciones completamente internacionalizadas
  • Información incorporada sobre la disponibilidad de la red («presencia»)
  • Suscripciones de presencia para autorización bidireccional
  • Listas de contactos habilitadas para presencia («listas»)

Especificaciones

Las tecnologías principales de XMPP se definen en dos RFCs publicado por el IETF:

  • RFC 6120: Núcleo XMPP
  • RFC 6121: XMPP IM
  • RFC 7622: Formato de dirección XMPP

Los primeros RFCs XMPP (RFC 3920 y RFC 3921) fueron producidos por el Grupo de Trabajo XMPP de la IETF en octubre de 2004. En 2011 se revisaron, dando como resultado las especificaciones actuales.

Implementaciones

Hay muchas implementaciones de las especificaciones principales de XMPP. Consulte las siguientes páginas para obtener más información:

  • Clientes
  • Servidores
  • Bibliotecas de código

Jingle

En esencia, Jingle proporciona a los clientes de Jabber una forma de configurar, administrar y eliminar sesiones multimedia. Estas sesiones pueden admitir una amplia gama de tipos de aplicaciones (como chat de voz, chat de vídeo y transferencia de archivos) y utilizar una amplia gama de métodos de transporte de medios (como TCP, UDP, RTP o incluso el propio XMPP en banda). La señalización para establecer una sesión de Jingle se envía a través de XMPP, y normalmente el medio se envía directamente de igual a igual o a través de un relé de medios. Jingle proporciona un marco conectable para ambos tipos de aplicaciones y transportes de medios; en el caso del chat de voz y video, una negociación de Jingle generalmente resulta en el uso del Protocolo de Transporte en tiempo real (RTP) como transporte de medios y, por lo tanto, es compatible con las tecnologías multimedia existentes, como el Protocolo de Inicio de Sesión (SIP). Además, la semántica de la señalización Jingle fue diseñada para ser consistente con SIP y el Protocolo de Descripción de Sesión (SDP), por lo que es sencillo proporcionar pasarelas de señalización entre redes XMPP y redes SIP.

Especificaciones

El Jingle se define en una serie de especificaciones:

  • XEP-0166: Jingle
  • XEP-0167: Sesiones de RTP de Jingle
  • XEP-0176: Método de transporte de Jingle ICE-UDP
  • XEP-0177: Método de transporte de Jingle Raw UDP
  • XEP-0181: Jingle DTMF
  • XEP-0234: Transferencia de archivos de Jingle

Implementaciones

Nota: Muchas de las siguientes implementaciones son compatibles con el protocolo anterior de Google Talk y se están actualizando para admitir Jingle tal y como se define en las especificaciones; póngase en contacto con los desarrolladores del proyecto para obtener más detalles.

Clientes

  • Mariquita
  • Gajim
  • Jitsi (anteriormente denominado SIP Communicator)
  • Movim
  • Pandion
  • Pidgin (anteriormente llamado Gaim)
  • Isp
  • Telepatía
  • Yate

Bibliotecas

  • libjingle (C/C++)
  • Golpe (Java)
  • Telepatía Gabble (C)
  • yjingle (C++)

Llame a los Gerentes / VoIP, Servidores

  • Asterisk
  • FreeSWITCH
  • Yate

Multi-Usuario-Chat (MUC)

MUC es una extensión XMPP para el intercambio de información entre varias partes, similar al Internet Relay Chat (IRC), en el que varios usuarios de XMPP pueden intercambiar mensajes en el contexto de una sala o canal. Además de las funciones estándar de la sala de chat, como los temas de la sala y las invitaciones, el protocolo define un modelo de control de sala sólido, que incluye la capacidad de expulsar y prohibir usuarios, nombrar moderadores y administradores de la sala, requerir membresía o contraseñas para unirse a la sala, etc. Debido a que las salas MUC se basan en XMPP, se pueden usar para intercambiar no solo cuerpos de mensajes de texto plano, sino también una amplia variedad de cargas útiles XML.

Especificaciones

MUC se define en una especificación primaria (XEP-0045) y varias especificaciones auxiliares:

  • XEP-0045: Chat Multiusuario
  • XEP-0249: Invitaciones MUC directas
  • XEP-0272: Jingle Multipartes

Implementaciones

Servidores: los siguientes servidores XMPP incluyen soporte integrado para MUC:

  • ejabberd
  • Jabber XCP
  • M-Link
  • MongooseIM
  • Openfire
  • Prosodia
  • Tigase

Componentes Externos – los siguientes productos de componentes puede ser utilizado con una amplia variedad de servidores XMPP:

  • mu-conferencia
  • palaver

Clientes

  • Adium
  • Gajim
  • JWChat
  • mcabber
  • Movim
  • Pidgin
  • Isp

Bibliotecas

  • AnyEvent:XMPP (Perl)
  • gloox (C++)
  • jabber-net (. Net)
  • libpurple (C)
  • Smack (Java)
  • XMPP4R (Ruby)

PubSub

PubSub es una extensión de protocolo para la funcionalidad genérica de publicación y suscripción, especificada en XEP-0060. El protocolo permite a las entidades XMPP crear nodos (temas) en un servicio pubsub y publicar información en esos nodos; a continuación, se transmite una notificación de evento (con o sin carga útil) a todas las entidades que se han suscrito al nodo. Por lo tanto, Pubsub se adhiere al patrón de diseño de observador clásico y puede servir como base para una amplia variedad de aplicaciones, incluidos canales de noticias, sindicación de contenido, presencia enriquecida, geolocalización, sistemas de flujo de trabajo, sistemas de administración de redes y cualquier otra aplicación que requiera notificaciones de eventos. El protocolo de eventos personales (PEP), especificado en XEP-0163, proporciona un perfil de PubSub con reconocimiento de presencia que permite que el JabberID de cada usuario funcione como un servicio pubsub virtual para una presencia enriquecida, microblogging, redes sociales e interacciones en tiempo real.

Especificaciones

PubSub se define en varias especificaciones:

  • XEP-0060: Publish-Subscribe
  • XEP-0163: Protocolo de eventos personales
  • XEP-0248: Nodos de colección PubSub

Cargas útiles

PubSub y PEP son «independientes de la carga útil»: puede usarlos como transportes neutrales para una amplia variedad de formatos de datos. Algunas de las cargas útiles más populares se enumeran a continuación, especialmente para una presencia rica relacionada con los usuarios de mensajería instantánea:

  • Actividades
  • Notificaciones Atom / RSS
  • Avatares
  • Visitas a salas de chat
  • Actividades de juego
  • Geolocalización
  • Estados de ánimo
  • Actividades de TV/video
  • Visitas al sitio web

Implementaciones

Servidores: los siguientes servidores XMPP incluyen soporte integrado para PubSub o PEP:

  • ejabberd
  • Jabber XCP
  • M-Link
  • Openfire
  • Tigase

Componentes de servidor

  • Idavoll

Clientes

  • Gajim
  • Movim
  • Psi

3.4 Bibliotecas

  • estrofa (C o JavaScript)
  • XMPP4R (Ruby)

BOSH

BOSH es «flujos bidireccionales sobre HTTP Síncrono», una tecnología para la comunicación bidireccional a través del Protocolo de Transferencia de Hipertexto (HTTP). BOSH emula muchas de las primitivas de transporte que son familiares del Protocolo de Control de Transmisión (TCP). Para aplicaciones que requieren comunicaciones «push» y «pull», BOSH es significativamente más eficiente en ancho de banda y responde que la mayoría de los otros protocolos de transporte bidireccionales basados en HTTP y las técnicas conocidas como AJAX. BOSH logra esta eficiencia y baja latencia evitando el sondeo HTTP, sin embargo, lo hace sin recurrir a respuestas HTTP fragmentadas, como se hace en la técnica conocida como Comet. Hasta la fecha, BOSH se ha utilizado principalmente como transporte para el tráfico intercambiado entre clientes y servidores Jabber/XMPP (por ejemplo, para facilitar las conexiones desde clientes web y desde clientes móviles en redes intermitentes). Sin embargo, BOSH no está vinculado únicamente a XMPP y también se puede usar para otros tipos de tráfico.

Especificaciones BOSH se define en dos especificaciones:

  • XEP-0124: Transmisiones bidireccionales sobre HTTP síncrono
  • XEP-0206: XMPP Sobre BOSH

Implementaciones

Servidores Los siguientes servidores XMPP incluyen soporte integrado para BOSH:

  • ejabberd
  • Jabber XCP
  • M-Link
  • MongooseIM
  • Openfire
  • Prosody
  • Tigase

Administradores de conexiones

Los siguientes administradores de conexiones XMPP independientes se pueden utilizar con una amplia variedad de servidores XMPP:

  • JabberHTTPBind
  • Punjab
  • nodo-xmpp-bosh
  • rhb

Clientes

  • Adium
  • Gajim
  • JWChat
  • Pidgin
  • Soashable
  • SparkWeb
  • Swift
  • Tigase Messenger
  • Tigase Minichat

Bibliotecas

  • emite (gwt)
  • gloox (C++)
  • JSJaC (JavaScript)
  • estrofa (C o JavaScript)
  • Swiften (C++)
  • XIFF (Flash)
  • XMPP4GWT (gwt)
  • xmpp4js (JavaScript)
  • XMPP4R (Ruby)

Deja una respuesta

Tu dirección de correo electrónico no será publicada.