eXtensible Messaging and Presence Protocol
      « Protocole extensible de présence et de messagerie »




   Présenté par :
   Mohammed AZIRAR                         mohammed.azirar@spark.ma
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
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
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
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
Acteurs industriels




Mohammed Azirar
04/07/2010
Applications concrètes


Mohammed Azirar
04/07/2010
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
Applications concrètes


                                           Diffusion par push




                                    Notifications en temps-réel




Messagerie intantanée et présence


Mohammed Azirar
04/07/2010
Applications concrètes




                  Travail collaboratif en temps-réel
Mohammed Azirar
04/07/2010
Applications concrètes




                  Recherche en temps-réel

Mohammed Azirar
04/07/2010
Applications concrètes




                  Partage et transferts de fichiers en temps-réel

Mohammed Azirar
04/07/2010
Applications concrètes




                  Jeux en ligne en temps-réel
Mohammed Azirar
04/07/2010
Et nous ? qu'est ce qu'on
         va réaliser ?


Mohammed Azirar
04/07/2010
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
Commandes




                  Réponses / Résultats




   Client                                Mini Robot

Mohammed Azirar
04/07/2010
XMPP en détail

     •   Services
     •   Architecture
     •   Technologies supportés
     •   Adressage XMPP
     •   Flux XML
     •   Stanzas de XMPP


Mohammed Azirar
04/07/2010
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
Services
•   Channel encryption [RFC 3920]
•   Authentication [RFC 3920]
•   Presence [RFC 3921]
•   Contact lists [RFC 3921]
•   One-to-one messaging [RFC 3920]
•   Multi-party messaging [XEP-0045]
•   Notifications [XEP-0060]
•   Service discovery [XEP-0030]
•   Capabilities advertisement [XEP-0115]
•   Structured data forms [XEP-0004]
•   Workflow management [XEP-0050]
•   Etc.
Mohammed Azirar
04/07/2010
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
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
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
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
Technologies supportés




Mohammed Azirar
04/07/2010
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
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
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
Adressage : URI
• Web :
                    http://www.spark.ma
• Messagerie :
                  mailto:contact@spark.ma
• XMPP :
                   xmpp:azirar@spark.ma

Mohammed Azirar
04/07/2010
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
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
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
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
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
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
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
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
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
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
Erreur (error)
•     Permet d'informer l'utilisateur qu'une erreur s'est
      produite ;




Mohammed Azirar
04/07/2010
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
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
Conclusion



   HTTP is Dead, Long Live The Realtime Cloud !




Mohammed Azirar
04/07/2010

مقدمة حول XMPP

  • 1.
    eXtensible Messaging andPresence 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 standardouvert ; • 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
  • 6.
  • 7.
  • 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
  • 10.
    Applications concrètes Travail collaboratif en temps-réel Mohammed Azirar 04/07/2010
  • 11.
    Applications concrètes Recherche en temps-réel Mohammed Azirar 04/07/2010
  • 12.
    Applications concrètes Partage et transferts de fichiers en temps-réel Mohammed Azirar 04/07/2010
  • 13.
    Applications concrètes Jeux en ligne en temps-réel 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 serviceest 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
  • 19.
    Services • Channel encryption [RFC 3920] • Authentication [RFC 3920] • Presence [RFC 3921] • Contact lists [RFC 3921] • One-to-one messaging [RFC 3920] • Multi-party messaging [XEP-0045] • Notifications [XEP-0060] • Service discovery [XEP-0030] • Capabilities advertisement [XEP-0115] • Structured data forms [XEP-0004] • Workflow management [XEP-0050] • Etc. 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 êtrecapable : • 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 3fonctionnalité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 • Uncomposant est un petit serveur qui se connecte à un serveur XMPP pour étendre ses fonctionnalités. Tinder API agsXMPP SDK Mohammed Azirar 04/07/2010
  • 24.
  • 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 • XMPPoffre à 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