Upload
mohammed-sahli
View
3.223
Download
4
Embed Size (px)
DESCRIPTION
عرض حول "XMPP" قدمه محمد أزيرار في اللقاء الأول لهواة التقنية المغاربة، يوم 4 يوليوز 2010.
Citation preview
eXtensible Messaging and Presence Protocol
Présenté par : Mohammed AZIRAR [email protected]
« Protocole extensible de présence et de messagerie »
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)
Mohammed Azirar 04/07/2010
RFCs (Request for comments) XEPs (XMPP Extension Proposal)
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
Mohammed Azirar 04/07/2010
Gmail
Google Talk
Messagerie instantanée et présence
Notifications
Transferts de fichiers
Téléphonie sur internet
Mohammed Azirar 04/07/2010
Applications concrètes
Notifications en temps-réel
Messagerie intantanée et présence
Diffusion par push
Mohammed Azirar 04/07/2010
Applications concrètes
Travail collaboratif en temps-réel
Mohammed Azirar 04/07/2010
Recherche en temps-réel
Applications concrètes
Mohammed Azirar 04/07/2010
Partage et transferts de fichiers en temps-réel
Applications concrètes
Mohammed Azirar 04/07/2010
Jeux en ligne en temps-réel
Applications concrètes
Et nous ? qu'est ce qu'on va réaliser ?
Mohammed Azirar 04/07/2010
Mohammed Azirar 04/07/2010
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.
Mini Robot
Mohammed Azirar 04/07/2010
Client Mini Robot
Commandes
Réponses / Résultats
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
• 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
Services
• Architecture client / serveur décentralisée ; • Très similaire à celle du système de messagerie ;
Mohammed Azirar 04/07/2010
Architecture
Client XMPP
Serveur XMPP Composant 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
Client 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
Serveur XMPP
• Un composant est un petit serveur qui se connecte à un serveur XMPP pour étendre ses fonctionnalités.
Mohammed Azirar 04/07/2010
Composants XMPP
Tinder API agsXMPP SDK
Mohammed Azirar 04/07/2010
Technologies supportés
• Basée sur le DNS et des schémas d'URI ;
• Ressemble à une adresse e-mail ;
Mohammed Azirar 04/07/2010
Adressage
utilisateur@domaine/ressource
• Un JID est l'adresse unique d'une entité XMPP ;
• Composé de 2 à 3 parties :
Mohammed Azirar 04/07/2010
Adressage : exemple (1)
jabber.spark.ma 192.168.232.90
Serveur XMPP
Utilisateur
azirar
ns1.spark.ma 192.168.232.90
Serveur DNS
FQDN : spark.ma
Mohammed Azirar 04/07/2010
Adressage : exemple (2)
• L'adresse de base est :
• Pour ouvrir plusieurs sessions du même compte, il est obligatoire de choisir une ressource :
[email protected]/bureau
[email protected]/phone Ressource
Mohammed Azirar 04/07/2010
Adressage : URI
• Web :
http://www.spark.ma
• Messagerie :
mailto:[email protected]
• XMPP :
xmpp:[email protected]
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’> <query xmlns=’jabber:iq:roster’/> </iq> <presence/> <message to=’[email protected]’ from=’[email protected]’ type=’chat’> <body>Salam !<body> </message> <presence type=’unavailable’/> </stream:stream>
Stanza
Stanza
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 ;
Message d’état
Statuts
Etat (Hors ligne / Unavailable)
Etat (En ligne)
04/07/2010 Mohammed Azirar 33
Presence stanza : exemple
<presence> <show>dnd</show> <status>Entrain d'éxposer !</status> </presence>
<presence type=’unavailable’/>
Exemple 1 :
Exemple 2 :
dnd : do not disturb (Busy)
Mohammed Azirar 04/07/2010
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
• 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 ;
IQ-result
IQ-set
IQ-error
Mohammed Azirar 04/07/2010
IQ stanza : exemple
<iq from=’[email protected]/bureau’ type=’get’ id=’roster1’> <query xmlns=’jabber:iq:roster’/> </iq> <iq to=’[email protected]/bureau’ type=’result’ id=’roster2’> <query xmlns=’jabber:iq:roster’> <item jid=’[email protected]’ mohammed tribak’/> <item jid=’[email protected]’ name=Mohammed’/> <item jid=’[email protected]’ name=robot.azirar’/> </query> </iq>
Mohammed Azirar 04/07/2010
Conclusion
HTTP is Dead, Long Live The Realtime Cloud !