Extensible Messaging and Presence Protocol


Extensible Messaging and Presence Protocol

Extensible Messaging and Presence Protocol, más conocido como XMPP (Protocolo extensible de mensajería y comunicación de presencia) (anteriormente llamado Jabber[1] ), es un protocolo abierto y extensible basado en XML, originalmente ideado para mensajería instantánea.

Con el protocolo XMPP queda establecida una plataforma para el intercambio de datos XML que puede ser usada en aplicaciones de mensajería instantánea. Las características en cuanto a adaptabilidad y sencillez del XML son heredadas de este modo por el protocolo XMPP.

A diferencia de los protocolos propietarios de intercambio de mensajes como ICQ, Y! y Windows Live Messenger, se encuentra documentado y se insta a utilizarlo en cualquier proyecto. Existen servidores y clientes libres que pueden ser usados sin coste alguno.

Este es el protocolo que seleccionó Google para su servicio de mensajería Google Talk, Facebook y Tuenti entre otras para su chat.

Contenido

Historia

Jeremie Miller comenzó el proyecto Jabber en 1998. Su primera liberación de software importante sucedió en Mayo de 2000. El principal producto del proyecto era jabberd, un servidor XMPP.

Este protocolo XMPP inicial creó las bases para el XMPP, publicado como RFC 3920. A menudo, ha sido considerado competidor de SIMPLE, basado en el protocolo SIP, como protocolo estándar de mensajería instantánea y notificación de presencia.
Jabber Software Foundation fue renombrado como XMPP Standards Foundation el 15 de Enero de 2007.[2]

A partir de 2005, existían cerca de una media docena de implementaciones de servidores XMPP, escritos en diferentes lenguajes de programación.

En Agosto de 2005, Google introdujo Google Talk, una combinación de VoIP y sistemas de gestión de identidades que usa XMPP para sus funciones de mensajería instantánea y como base para su protocolo de señalización de transferencias y su sistema de voz. El lanzamiento inicial no incluía comunicaciones de servidor a servidor, pero el 17 de Enero de 2006, fueron añadidas.[3]

Ventajas

Descentralización 
La arquitectura de las redes XMPP es similar a la del correo electrónico; cualquiera puede poner en marcha su propio servidor XMPP, sin que haya ningún servidor central.
Estándares abiertos 
La Internet Engineering Task Force ha formalizado el protocolo XMPP como una tecnología de mensajería instantánea estándar, y sus especificaciones han sido publicadas como los RFC 3920 y RFC 3921. El desarrollo de esta tecnología no está ligado a ninguna empresa en concreto y no requiere el pago de regalías.
Historia 
Las tecnologías XMPP llevan usándose desde 1998. Existen múltiples implementaciones de los estándares XMPP para clientes, servidores, componentes y bibliotecas, con el apoyo de importantes compañías como Sun Microsystems y Google.
Seguridad 
Los servidores XMPP pueden estar aislados de la red pública XMPP, y poseen robustos sistemas de seguridad (como SASL y TLS). Para apoyar la utilización de los sistemas de cifrado, la XMPP Standards Foundation pone a disposición de los administradores de servidores XMPP Autoridad de certificación en xmpp.net ofreciendo certificados digitales gratis.
Flexibilidad 
Se pueden hacer funcionalidades a medida sobre XMPP; para mantener la interoperabilidad, las extensiones más comunes son gestionadas por la XMPP Software Foundation.

Desventajas

Sobrecarga de datos de presencia 
Típicamente cerca de un 70% del tráfico entre servidores son datos de presencia,[4] y cerca de un 60% de estos son transmisiones redundantes.[5] Actualmente se están estudiando nuevos protocolos para aliviar este problema.
Escalabilidad 
XMPP también sufre el mismo problema de redundancia en los servicios de chatroom y de suscripción. Actualmente se está trabajando en su solución.
Sin datos binarios 
XMPP es codificado como un único y largo documento XML, lo que hace imposible entregar datos binarios sin modificar. De todas formas, las transferencias de archivos se han solucionado usando otros protocolos como HTTP. Si es inevitable, XMPP también puede realizar transferencias codificando todos los datos mediante base64.

Descentralización y direccionamiento

La red XMPP está basada en servidores, pero descentralizada; por diseño, no hay ningún servidor central, como sucede con servicios como AOL Instant Messenger o MSN Messenger. Sobre este punto, surge cierta confusión, puesto que existe un servidor XMPP público en "Jabber.org", al que están suscritos un gran número de usuarios, pero no hay que olvidar que cualquiera puede poner en marcha su propio servidor. El puerto estandar utilizado para XMPP es el 5222.[6]

Cada usuario en la red XMPP tiene un único identificador (Jabber ID, normalmente abreviado como JID). Para evitar la necesidad de un servidor central con una lista exhaustiva de identificadores, el Jabber ID está estructurado como una dirección de correo electrónico, con un nombre de usuario y una dirección DNS para el servidor en el que reside el usuario, separado por un signo @. Un identificador Jabber sería algo como nombredeusuario@dominio.com.

Como un usuario puede querer identificarse desde distintos lugares, el servidor permite al cliente especificar una cadena de referencia conocida como recurso, que identifica el cliente que está utilizando el usuario (por ejemplo: casa, trabajo, portátil, etc.). Esto será incluido en el JID añadiendo un carácter / seguido del nombre del recurso. Cada recurso debe tener especificada un valor numérico de prioridad. Por ejemplo el JID completo de la cuenta del trabajo del usuario sería: nombredeusuario@dominio.com/trabajo. Los mensajes de la forma nombredeusuario@dominio.com serán dirigidos al cliente con mayor prioridad, y los de la forma nombredeusuario@dominio.com/trabajo serán dirigidos al cliente del trabajo.

Los JID sin la parte del nombre de usuario también son válidos y se utilizan para enviar mensajes de sistema y control.

Proceso de entrega de mensajes

Supongamos que julieta@capulet.com desea chatear con romeo@montague.net. Julieta y Romeo tienen sus respectivas cuentas en los servidores capulet.com y montague.net. Cuando Julieta escribe y envía su mensaje, entra en acción la siguiente secuencia de eventos:

  1. El cliente de Julieta envía su mensaje al servidor capulet.com.
    • Si el servidor montague.net no tiene acceso al servidor capulet.com, el mensaje es desechado.
  2. El servidor capulet.com abre una conexión con el servidor montague.net.
  3. El servidor montague.net entrega el mensaje a Romeo.
    • Si el servidor capulet.com no tiene acceso al servidor montague.net, el mensaje es desechado.
    • Si Romeo no está conectado, el mensaje es guardado para su posterior entrega.

Conectando a otros protocolos

Alice envía un mensaje a través de la red XMPP a la pasarela de ICQ, posteriormente, el mensaje es dirigido a Bob mediante la red ICQ.

Otra característica muy útil del protocolo XMPP son las pasarelas, que permiten a los usuarios el acceso a redes con otros protocolos de mensajería instantánea como MSN Messenger, ICQ u otros tipos de mensajería como SMS o E-mail. Este servicio no es proporcionado desde el cliente, sino desde el servidor mediante servicios de pasarela que proporcionan conectividad con alguna otra red. Cualquier usuario se puede registrar con alguna de estas pasarelas proporcionando sus datos de acceso a la nueva red como nombre de usuario y contraseña, y comunicarse con los usuarios de la nueva red. Esto significa que cualquier cliente XMPP puede ser usado para acceder cualquier red para la que haya una pasarela, sin necesidad de adaptar el cliente o de que tenga acceso directo a Internet.

XMPP y HTTP

Gran parte de los cortafuegos están configurados para permitir el paso del tráfico TCP dirigido al puerto usado por el protocolo HTTP, mientras que por lo general se bloquea el puerto utilizado por XMPP. Para solucionar este problema, XMPP utiliza HTTP para permitir el acceso a los usuarios que se encuentran tras cortafuegos. En las especificaciones originales, XMPP podía utilizar HTTP de dos formas:

  • Polling:[7] Ya no está en uso, básicamente se trataba de utilizar las funciones 'GET' y 'POST' de HTTP para enviar los mensajes al servidor a intervalos de tiempo regulares.
  • Binding:[8] Con este método, el cliente utiliza conexiones HTTP de vida más larga para recibir los mensajes tan pronto como son enviados. Este modelo es más eficiente que el de polling.

Existen algunos servidores públicos como www.jabber80.com que escuchan en los puertos estándar HTTP y HTTPS, permitiendo la conexión mediante XMPP desde detrás de la mayoría de los cortafuegos.

Clientes

Algunos clientes que implementan el protocolo XMPP son:

Desarrollo

El grupo de trabajo IETF XMPP ha producido los siguientes documentos RFC:

RFC 3920, RFC 3921, RFC 3922, RFC 3923, RFC 4622, RFC 4854, RFC 4979

  • RFC 3920, Extensible Messaging and Presence Protocol (XMPP), core: Describe la mensajería Cliente-servidor mediante el uso de dos flujos XML. Los flujos XML consisten en <presence />, <message /> y <iq /> (info/query). Una conexión es autentificada mediante SASL y cifrado mediante TLS.
  • RFC 3921, Extensible Messaging and Presence Protocol (XMPP), Instant Messaging and Presence: Describe la Mensajería instantanea, la aplicación más común del protocolo XMPP.
  • RFC 3922, Mapping the Extensible Messaging and Presence Protocol (XMPP) to Common Presence and Instant Messaging (CPIM): Describe las especificaciones del protocolo XMPP.
  • RFC 3923, End-to-End Signing and Object Encryption for the Extensible Messaging and Presence Protocol (XMPP): Describe el cifrado extremo a extremo de los mensajes XMPP usando S/MIME.

Las siguientes extensiones son de uso particularmente extendido:

Actualmente el protocolo XMPP está siendo ampliado para el manejo VoIP. El protocolo de señalización que se utilizará es Jingle, que está diseñado para ser compatible con el servicio de Google Talk.

Referencias

Enlaces externos


Wikimedia foundation. 2010.

Mira otros diccionarios:

  • Extensible Messaging and Presence Protocol — (XMPP) is an open, XML inspired protocol originally aimed at near real time, extensible instant messaging (IM) and presence information (a.k.a. buddy lists), but now expanded into the broader realm of message oriented middleware. [Citation |… …   Wikipedia

  • Extensible Messaging and Presence Protocol — Familie: Internetprotokollfamilie Einsatzgebiet: Instant Messaging Ports: 5222/TCP (Client zu Server) 5269/TCP (Server zu Server) Legacy SSL: 5223/TCP (SSL) XMPP im TCP/IP‑Protokollstapel: Anwendung …   Deutsch Wikipedia

  • Extensible Messaging And Presence Protocol — Pile de protocoles 7 • Application 6 • Présentation 5 • Session 4 • …   Wikipédia en Français

  • Extensible Messaging and Presence Protocol — Fonction Messagerie instantanée Sigle XMPP Port 5222 RFC …   Wikipédia en Français

  • Extensible messaging and presence protocol — Pile de protocoles 7 • Application 6 • Présentation 5 • Session 4 • …   Wikipédia en Français

  • Extensible Messaging and Presence Protocol — …   Википедия

  • Instant Messaging and Presence Protocol — (IMPP) was a protocol for instant messaging proposed by the IETF via RFC 2778 and RFC 2779. There has been no progress since it has been obsoleted by XMPP.ee also* Extensible Messaging and Presence Protocol * Presence and Instant Messaging …   Wikipedia

  • Presence information — In computer and telecommunications networks, presence information is a status indicator that conveys ability and willingness of a potential communication partner for example a user to communicate. A user s client provides presence information… …   Wikipedia

  • Protocol for Synchronous Conferencing — PSYC im TCP/IP‑Protokollstapel: Anwendung PSYC Transport UDP TCP Internet IP (IPv4, IPv6) Netzzugang …   Deutsch Wikipedia

  • Protocol for SYnchronous Conferencing — PSYC im TCP/IP‑Protokollstapel: Anwendung PSYC Transport UDP TCP Internet IP (IPv4, IPv6) Netzzugang Ethernet …   Deutsch Wikipedia