XMPP

XMPP est le protocole de messagerie et de présence extensible, un ensemble de technologies ouvertes pour la messagerie instantanée, la présence, le chat multipartite, les appels vocaux et vidéo, la collaboration, le middleware léger, la syndication de contenu et le routage généralisé des données XML.

XMPP a été initialement développé dans la communauté open-source Jabber pour fournir une alternative ouverte et décentralisée aux services de messagerie instantanée fermés à l’époque. XMPP offre plusieurs avantages clés par rapport à de tels services:

  • Ouvert – les protocoles XMPP sont libres, ouverts, publics et facilement compréhensibles ; de plus, plusieurs implémentations existent sous la forme de clients, de serveurs, de composants de serveur et de bibliothèques de code.

  • Standard – l’Internet Engineering Task Force (IETF) a formalisé les protocoles de streaming XML de base en tant que technologie de messagerie instantanée et de présence approuvée. Les spécifications XMPP ont été publiées en tant que RFC 3920 et RFC 3921 en 2004, et la XMPP Standards Foundation continue de publier de nombreux protocoles d’extension XMPP. En 2011, les RFC de base ont été révisés, ce qui a donné lieu aux spécifications les plus récentes (RFC 6120, RFC 6121 et RFC 7622).

  • Éprouvé – les premières technologies Jabber / XMPP ont été développées par Jeremie Miller en 1998 et sont maintenant assez stables; des centaines de développeurs travaillent sur ces technologies, des dizaines de milliers de serveurs XMPP fonctionnent sur Internet aujourd’hui, et des millions de personnes utilisent XMPP pour la messagerie instantanée via des services publics tels que Google Talk et les déploiements XMPP dans des organisations du monde entier.

  • Décentralisé – l’architecture du réseau XMPP est similaire à la messagerie électronique ; par conséquent, n’importe qui peut exécuter son propre serveur XMPP, permettant aux individus et aux organisations de prendre le contrôle de leur expérience de communication.

  • Sécurisé – tout serveur XMPP peut être isolé du réseau public (par exemple, sur un intranet d’entreprise) et une sécurité robuste utilisant SASL et TLS a été intégrée aux spécifications XMPP de base. De plus, la communauté des développeurs XMPP travaille activement sur le chiffrement de bout en bout pour relever encore plus la barre de sécurité.

  • Extensible – en utilisant la puissance de XML, n’importe qui peut créer des fonctionnalités personnalisées au-dessus des protocoles de base; pour maintenir l’interopérabilité, des extensions communes sont publiées dans la série XEP, mais une telle publication n’est pas requise et les organisations peuvent maintenir leurs propres extensions privées si elles le souhaitent.

  • Flexible – Les applications XMPP au-delà de la messagerie instantanée incluent la gestion de réseau, la syndication de contenu, les outils de collaboration, le partage de fichiers, les jeux, la surveillance des systèmes à distance, les services Web, les middleware légers, le cloud computing et bien plus encore.

  • Divers – un large éventail d’entreprises et de projets open source utilisent XMPP pour créer et déployer des applications et des services en temps réel ; vous ne serez jamais « verrouillé » lorsque vous utiliserez les technologies XMPP.

Cette page fournit une introduction aux différentes technologies XMPP, y compris des liens vers des spécifications, des implémentations, des tutoriels et des lieux de discussion spéciaux.

Technologies clés XMPP:

  • Core — informations sur les technologies XMPP de base pour le streaming XML
  • Signalisation multimédia compatible Jingle SIP pour la voix, la vidéo, le transfert de fichiers et d’autres applications
  • Chat multi—utilisateurs – communication flexible et multi-parties
  • PubSub — alertes et notifications pour la syndication de données, la présence riche et plus encore
  • BOSH – une liaison HTTP pour le trafic XMPP (et autre)

Core

À la base, XMPP est une technologie permettant de diffuser du XML sur un réseau. Le protocole, issu de la communauté open source Jabber en 1999, a été conçu à l’origine pour fournir une alternative ouverte, sécurisée et décentralisée aux services de messagerie instantanée (IM) axés sur le consommateur tels que ICQ, AIM et MSN. Les technologies de base ont été formalisées sous le nom de Protocole de présence et de messagerie Extensible (XMPP) à l’IETF en 2004. Ces technologies de base comprennent:

  • La couche de streaming XML de base
  • Cryptage des canaux à l’aide de la Sécurité de la couche de transport (TLS)
  • Authentification forte à l’aide de la Couche d’authentification et de sécurité Simple (SASL)
  • Utilisation de UTF-8 pour une prise en charge complète de Unicode, y compris des adresses entièrement internationalisées
  • Informations intégrées sur la disponibilité du réseau (« présence »)
  • Abonnements à la présence pour une autorisation bidirectionnelle
  • Listes de contacts activées par la présence (« listes »)

Spécifications

Les technologies XMPP de base sont définies dans deux RFC publié par l’IETF:

  • RFC 6120: Noyau XMPP
  • RFC 6121: IM XMPP
  • RFC 7622: Format d’adresse XMPP

Les premiers RFC XMPP (RFC 3920 et RFC 3921) ont été produits par le Groupe de travail XMPP de l’IETF en octobre 2004. En 2011, ils ont été révisés, ce qui a donné lieu aux spécifications actuelles.

Implémentations

Il existe de nombreuses implémentations des spécifications XMPP de base. Voir les pages suivantes pour plus de détails:

  • Clients
  • Serveurs
  • Bibliothèques de code

Jingle

En substance, Jingle fournit aux clients Jabber un moyen de configurer, de gérer et de supprimer des sessions multimédias. Ces sessions peuvent prendre en charge un large éventail de types d’applications (telles que le chat vocal, le chat vidéo et le transfert de fichiers) et utiliser un large éventail de méthodes de transport de médias (telles que TCP, UDP, RTP ou même XMPP lui-même). La signalisation pour établir une session de Jingle est envoyée sur XMPP, et généralement le média est envoyé directement en pair à pair ou via un relais multimédia. Jingle fournit un cadre enfichable pour les types d’applications et les transports de médias; dans le cas du chat vocal et vidéo, une négociation de Jingle entraîne généralement l’utilisation du Protocole de transport en temps réel (RTP) comme transport de médias et est donc compatible avec les technologies multimédias existantes telles que le Protocole d’initiation de session (SIP). De plus, la sémantique de la signalisation Jingle a été conçue pour être cohérente avec le protocole SIP et le protocole SDP (Session Description Protocol), ce qui facilite la fourniture de passerelles de signalisation entre les réseaux XMPP et les réseaux SIP.

Spécifications

Jingle est défini dans un certain nombre de spécifications:

  • XEP-0166: Jingle
  • XEP-0167: Jingle Sessions RTP
  • XEP-0176: Jingle Méthode de Transport ICE-UDP
  • XEP-0177: Jingle Méthode de Transport UDP Brute
  • XEP-0181: Jingle DTMF
  • XEP-0234: Transfert de fichiers Jingle

Implémentations

Remarque: La plupart des implémentations suivantes prennent en charge l’ancien protocole Google Talk et sont mises à niveau pour prendre en charge Jingle tel qu’il est défini dans les spécifications; contactez les développeurs du projet pour plus de détails.

Clients

  • Coccinella
  • Gajim
  • Jitsi (anciennement nommé Communicateur SIP)
  • Movim
  • Pandion
  • Pidgin (anciennement nommé Gaim)
  • Psi
  • Télépathie
  • Yate

Bibliothèques

  • libjingle(C/C++)
  • Smack(Java)
  • Télépathie Gabble(C)
  • yjingle (C++)

Gestionnaires d’appels /serveurs VoIP

  • Astérisque
  • FreeSWITCH
  • Yate

Multi-User-Chat (MUC)

MUC est une extension XMPP pour l’échange d’informations multipartites similaire au chat de relais Internet (IRC), par lequel plusieurs utilisateurs XMPP peuvent échanger des messages dans le contexte d’une pièce ou d’un canal. En plus des fonctionnalités de chatroom standard telles que les sujets de salle et les invitations, le protocole définit un modèle de contrôle de salle solide, y compris la possibilité de lancer et d’interdire les utilisateurs, de nommer les modérateurs et les administrateurs de salle, d’exiger l’adhésion ou les mots de passe pour rejoindre la salle, etc. Étant donné que les salles MUC sont basées sur XMPP, elles peuvent être utilisées pour échanger non seulement des corps de message en clair, mais une grande variété de charges utiles XML.

Spécifications

Le MUC est défini dans une spécification principale (XEP-0045) et plusieurs spécifications auxiliaires:

  • XEP-0045 : Chat multi-utilisateurs
  • XEP-0249 : Invitations MUC directes
  • XEP-0272 : Jingle Multipartite

Implémentations

Serveurs – les serveurs XMPP suivants incluent un support intégré pour MUC:

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

Composants externes – les composants autonomes suivants peuvent être utilisés avec une grande variété de serveurs XMPP:

  • mu-conférence
  • palabres

Clients

  • Adium
  • Gajim
  • JWChat
  • mcabber
  • Movim
  • Pidgin
  • Psi

Bibliothèques

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

PubSub

PubSub est une extension de protocole pour la fonctionnalité générique de publication-abonnement, spécifiée dans XEP-0060. Le protocole permet aux entités XMPP de créer des nœuds (rubriques) sur un service pubsub et de publier des informations sur ces nœuds ; une notification d’événement (avec ou sans charge utile) est ensuite diffusée à toutes les entités qui se sont abonnées au nœud. Pubsub adhère donc au modèle de conception d’observateur classique et peut servir de base à une grande variété d’applications, y compris les flux de nouvelles, la syndication de contenu, la présence riche, la géolocalisation, les systèmes de flux de travail, les systèmes de gestion de réseau et toute autre application nécessitant des notifications d’événements. Le protocole de concours complet personnel (PEP), spécifié dans XEP-0163, fournit un profil de PubSub conscient de la présence qui permet au JabberID de chaque utilisateur de fonctionner comme un service de pubsub virtuel pour une présence riche, un microblogging, des réseaux sociaux et des interactions en temps réel.

Spécifications

PubSub est défini dans plusieurs spécifications:

  • XEP-0060: Publish-Subscribe
  • XEP-0163: Personal Eventing Protocol
  • XEP-0248: Nœuds de collection PubSub

Charges utiles

PubSub et PEP sont « indépendants de la charge utile » – vous pouvez les utiliser comme transports neutres pour une grande variété de formats de données. Certaines des charges utiles les plus populaires sont énumérées ci-dessous, en particulier pour une présence riche liée aux utilisateurs de messagerie instantanée:

  • Activités
  • Notifications Atom/RSS
  • Avatars
  • Visites de Chatroom
  • Activités de jeu
  • Géolocalisation
  • Humeurs
  • Airs musicaux
  • Activités TV/Vidéo
  • Visites de sites Web

Implémentations

Serveurs – les serveurs XMPP suivants incluent la prise en charge intégrée de PubSub ou PEP:

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

Composants de serveur

  • Idavoll

Clients

  • Gajim
  • Movim
  • Psi

3.4 Bibliothèques

  • strophe (C ou JavaScript)
  • XMPP4R(Ruby)

BOSH

BOSH est « Flux bidirectionnels sur HTTP synchrone », une technologie de communication bidirectionnelle via le Protocole de transfert Hypertexte (HTTP). BOSH émule de nombreuses primitives de transport familières du protocole TCP (Transmission Control Protocol). Pour les applications qui nécessitent à la fois des communications « push » et « pull », BOSH est nettement plus efficace en bande passante et réactif que la plupart des autres protocoles de transport bidirectionnels basés sur HTTP et les techniques connues sous le nom d’AJAX. BOSH atteint cette efficacité et cette faible latence en évitant l’interrogation HTTP, mais il le fait sans avoir recours à des réponses HTTP fragmentées comme cela se fait dans la technique connue sous le nom de Comet. À ce jour, BOSH a été principalement utilisé comme moyen de transport pour le trafic échangé entre les clients Jabber / XMPP et les serveurs (par exemple, pour faciliter les connexions à partir de clients Web et de clients mobiles sur des réseaux intermittents). Cependant, BOSH n’est pas lié uniquement à XMPP et peut également être utilisé pour d’autres types de trafic.

Spécifications BOSH est défini en deux spécifications:

  • XEP-0124 : Flux bidirectionnels Sur HTTP synchrone
  • XEP-0206 : XMPP Sur BOSH

Implémentations

Serveurs Les serveurs XMPP suivants incluent la prise en charge intégrée de BOSH:

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

Gestionnaires de connexions

Les gestionnaires de connexions XMPP autonomes suivants peuvent être utilisés avec une grande variété de serveurs XMPP:

  • JabberHTTPBind
  • Punjab
  • nœud-xmpp-bosh
  • rhb

Clients

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

Bibliothèques

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

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.