1. eXtensible Messaging and Presence Protocol
« Protocole extensible de présence et de messagerie »
Présenté par :
Mohammed AZIRAR mohammed.azirar@spark.ma
2. Plan de présentation
• Introduction
• Applications et usages
• XMPP en détail
o Services
o Architecture
o Technologies supportés
o Adressage XMPP
o Flux XML
o Stanzas de XMPP
• Démonstration
• Conclusion
Mohammed Azirar
04/07/2010
3. Introduction
• Protocole standard ouvert ;
• Utilisé pour une large variété de systèmes de
communication en temps réel ;
• Basé sur une architecture client/serveur ;
• Échange décentralisé de données XML entre deux
points quelconques d'un réseau ;
• Authentification sécurisé par SASL ;
• Communications client/serveur et serveur/serveur
sécurisées par TLS (successeur de SSL);
• Chiffrement asymétrique de chaque message par clé
PGP ou GnuPG;
Mohammed Azirar
04/07/2010
4. Introduction
• Établi par l'IETF (The Internet Engineering Task Force)
• Maintenu par la XSF (XMPP Standards Foundation)
RFCs (Request for comments) XEPs (XMPP Extension Proposal)
Mohammed Azirar
04/07/2010
5. Applications et usages
• Messagerie instantanée et présence ;
• Notifications ;
• Diffusion par push ;
• Transferts de fichiers ;
• Travail collaboratif en temps-réel ;
• Échange de données ;
• Jeux en ligne ;
• Recherche en temps-réel ;
• Téléphonie sur internet et Visioconférence ;
• Middleware et Cloud computing ;
• Géolocalisation ;
• Robotique ;
• Etc.
Mohammed Azirar
04/07/2010
8. Applications concrètes
Google Talk
Gmail
Transferts de fichiers
Téléphonie sur internet
Notifications
Messagerie instantanée et présence
Mohammed Azirar
04/07/2010
9. Applications concrètes
Diffusion par push
Notifications en temps-réel
Messagerie intantanée et présence
Mohammed Azirar
04/07/2010
14. Et nous ? qu'est ce qu'on
va réaliser ?
Mohammed Azirar
04/07/2010
15. Mini Robot
Qui peut :
– Chatter ;
– Exécuter des applications sur un PC distant ;
– Ouvrir une URL avec un navigateur distant ;
– Afficher les informations d’un système distant :
o Matériel
o Système d’ exploitation
o Etc.
Mohammed Azirar
04/07/2010
16. Commandes
Réponses / Résultats
Client Mini Robot
Mohammed Azirar
04/07/2010
17. XMPP en détail
• Services
• Architecture
• Technologies supportés
• Adressage XMPP
• Flux XML
• Stanzas de XMPP
Mohammed Azirar
04/07/2010
18. Services
• Un service est une fonctionnalité qui peut être utilisé par une
application donnée.
• Les services sont définis dans deux principales spécifications :
o RFC (base) : publiées par l’IETF
o XEP (extensions ): publiées par XMPP Standards Foundation
Mohammed Azirar
04/07/2010
20. Architecture
• Architecture client / serveur décentralisée ;
• Très similaire à celle du système de messagerie ;
Client XMPP
Serveur XMPP
Composant XMPP
Mohammed Azirar
04/07/2010
21. Client XMPP
Doit être capable :
• D'établir une connexion TCP avec un serveur XMPP (port 5222)
• D'analyser et d’ interpréter les messages XML qu'il reçoit
• Supporter les types de données de bases de XMPP (XMPP Stanzas)
Mohammed Azirar
04/07/2010
22. Serveur XMPP
Présente 3 fonctionnalités :
• Gérer les connexions directes avec les clients
• Communiquer avec les autres serveurs XMPP (port 5269)
• Coordonner les différents composants
Mohammed Azirar
04/07/2010
23. Composants XMPP
• Un composant est un petit serveur qui se connecte à
un serveur XMPP pour étendre ses fonctionnalités.
Tinder API agsXMPP SDK
Mohammed Azirar
04/07/2010
25. Adressage
• Un JID est l'adresse unique d'une entité XMPP ;
• Composé de 2 à 3 parties :
utilisateur@domaine/ressource
• Basée sur le DNS et des schémas d'URI ;
• Ressemble à une adresse e-mail ;
Mohammed Azirar
04/07/2010
26. Adressage : exemple (1)
Serveur DNS
Serveur XMPP
jabber.spark.ma
192.168.232.90
ns1.spark.ma
192.168.232.90
azirar
Utilisateur
FQDN : spark.ma
Mohammed Azirar
04/07/2010
27. Adressage : exemple (2)
• L'adresse de base est :
azirar@spark.ma
• Pour ouvrir plusieurs sessions du même compte, il
est obligatoire de choisir une ressource :
azirar@spark.ma/bureau
Ressource
azirar@spark.ma/phone
Mohammed Azirar
04/07/2010
28. Adressage : URI
• Web :
http://www.spark.ma
• Messagerie :
mailto:contact@spark.ma
• XMPP :
xmpp:azirar@spark.ma
Mohammed Azirar
04/07/2010
29. Flux XML
• Chaque session implique deux flux XML
unidirectionnels ;
• Toutes les communications client/serveur passent
exclusivement par ces deux flux ;
<stream:stream> … </stream:stream>
<stream:stream> … </stream:stream>
Mohammed Azirar
04/07/2010
30. Flux XML : exemple
<stream:stream>
<iq type=’get’>
Stanza <query xmlns=’jabber:iq:roster’/>
</iq>
<presence/>
<message to=’azirar@gmail.com’
from=’azirar@spark.ma’
Stanza type=’chat’>
<body>Salam !<body>
</message>
<presence type=’unavailable’/>
</stream:stream>
Mohammed Azirar
04/07/2010
31. Stanzas de XML
• Petits morceaux de données échangées durant la
communication ;
• Il existe 3 stanzas de base :
o Presence : <presence> .. </presence>
o Message : <message> .. </message>
o IQ (Info/Query) : <iq> .. </iq>
Mohammed Azirar
04/07/2010
32. Presence stanza
• Indique l’état du client (en ligne / hors ligne) ;
• Associée à un statut ainsi qu'un message d'état
optionnel ;
Etat (Hors ligne / Unavailable)
Statuts
Etat (En ligne)
Mohammed Azirar Message d’état
04/07/2010
33. Presence stanza : exemple
dnd : do not disturb (Busy)
Exemple 1 :
<presence>
<show>dnd</show>
<status>Entrain d'éxposer !</status>
</presence>
Exemple 2 :
<presence type=’unavailable’/>
04/07/2010 Mohammed Azirar 33
34. Message stanza
• XMPP offre à la fois les possibilités du :
o Courrier électronique
o Messagerie instantanée
o Salons de discussion de type IRC
• 5 types de messages :
o normal
o chat
o groupchat
o headline
o error
Mohammed Azirar
04/07/2010
35. Normal (normal)
• Semblable à un « courrier électronique » ;
• Relativement longs (messages assez formels)
• Permet de répondre à l'expéditeur ;
• l'interface ne présente pas l'historique des conversations passées ;
Mohammed Azirar
04/07/2010
36. Discussion (chat)
• Correspond aux messages que l'on rencontre habituellement
dans les systèmes de messagerie instantanée ;
• Messages nombreux et très courts (une seule phrase) ;
• Employés dans le cadre d'une conversation fortement
interactive et souvent informelle ;
• L'historique de la conversation est présenté dans la même
fenêtre que le message actif ;
Mohammed Azirar
04/07/2010
37. Discussion de groupe (groupchat)
• Intervient dans le contexte de groupes de discussions ;
• L'interface présente l'ensemble des participants à la conversation
ainsi que l'historique des messages ;
Mohammed Azirar
04/07/2010
38. Titre ou Information (headline)
• Messages automatiques produits par des robots ;
• Permet de transmettre des messages à caractère informatif ;
• L'interface ne permet pas de répondre à l'expéditeur ;
Mohammed Azirar
04/07/2010
39. Erreur (error)
• Permet d'informer l'utilisateur qu'une erreur s'est
produite ;
Mohammed Azirar
04/07/2010
40. IQ stanza
• Mécanisme de base pour les réquêtes/réponses ;
• Similaire au protocole HTTP (GET et POST) ;
• Utilisé pour différentes fonctionnalités (création de compte
authentification, récupération d'une liste de contact, etc.)
IQ-get
IQ-result
IQ-set
IQ-error
• Set : pour envoyer des données ; Get : pour requêter des données ;
• Error : réponse précisant l'erreur; Result : réponse en cas de succès ;
Mohammed Azirar
04/07/2010
41. IQ stanza : exemple
<iq from=’azirar@spark.ma/bureau’
type=’get’
id=’roster1’>
<query xmlns=’jabber:iq:roster’/>
</iq>
<iq to=’azirar@spark.ma/bureau’
type=’result’
id=’roster2’>
<query xmlns=’jabber:iq:roster’>
<item jid=’mohamed.tribak@gmail.com’ mohammed tribak’/>
<item jid=’m.azirar@jabber.org’ name=Mohammed’/>
<item jid=’robot.azirar@jabber.org’ name=robot.azirar’/>
</query>
</iq>
Mohammed Azirar
04/07/2010
42. Conclusion
HTTP is Dead, Long Live The Realtime Cloud !
Mohammed Azirar
04/07/2010