Extensible Messaging and Presence Protocol - XMPP<br />	Ricardo Reis<br />1<br />
Tópicos<br />Introdução<br /><ul><li>O que é XMPP ?
História</li></ul>Arquitetura<br /><ul><li>Visão Geral
XMPP Network
Servidores
Clientes
Gateways
Esquema de Endereçamento</li></ul>Comunicação<br /><ul><li>XMPP Stanzas
Ciclo de vida da conexão  </li></ul>Conclusão<br />Referências Bibliográficas<br />2<br />
Introdução |O que é XMPP ?<br />XMPP é uma padronização do IETF para comunicação em tempo real.<br />Baseado na linguagem ...
Introdução |História<br />No início só havia o caos, muitas aplicações de mensagens instantâneas . (96,97,98,99)<br />Cada...
Introdução |História<br />Em 1999, Jeremie Miller anunciou o projeto Jabber.<br />Jabber Software Foundation (JSF) fundado...
Introdução |História<br />Aprovado em 2002 pelo IETF, possui 2 Request for Comments (RFC)  básicos.<br />O RFC(3920) defin...
Introdução |História<br />Mais tarde o protocolo passou a se chamar XMPP.<br />Hoje em dia tem mais de 300 extensões ( XEP...
Arquitetura |Visão Geral<br /><ul><li>A arquitetura do XMPP é muito semelhante à do correio eletrônico (e-mail):
É necessário que a mensagem passe por um servidor, no mínimo, antes de ser entregue ao destinatário.
Usuários são identificados de forma semelhante: usuario@dominio.
Os servidores se comunicam entre si para entregar mensagens.</li></ul>8<br />
Arquitetura |Visão Geral<br />9<br />
Arquitetura |Visão Geral<br />WTF ? E qual a diferença então ?<br /><ul><li>Correio Eletrônico                    Storeand...
XMPP                     Real Time
Servidores XMPP sabem quando um usuário esta conectado.</li></ul>10<br />
Arquitetura |XMPP Network<br />Composta de atores: Servidores, Clientes, Gateways...<br />O sistema consiste em uma rede d...
Arquitetura |Servidores<br />Jobs<br /><ul><li>Gerenciar conexões (sessões).
Fazer o roteamento de stanzas.</li></ul>Ex: Ejabberd, Openfire, Jabber...<br />12<br />
Arquitetura |Clientes<br />O que fazem ?<br /><ul><li>Se conectam com servidores através de conexões TCP.
É possível se conectar ao mesmo servidor de dois lugares diferentes.</li></ul>Ex: Adium, Pidgin, AQQ<br />13<br />
Arquitetura |Gateway<br />O que é ?<br /><ul><li>É uma forma especial de traduzir mensagens XMPP para o protocolo utilizad...
Existem gateways para IRC, MSN Messenger, Yahoo Instant Messenger...</li></ul>14<br />
Arquitetura |Esquema de Endereçamento<br />Clientes que se comunicam devem possuir um ID único. <br />Por razões histórica...
Arquitetura |Esquema de Endereçamento<br />Domínio<br /><ul><li>O domínio é o nome DNS da entidade.
Representa o servidor no qual o cliente está conectado.
É o identificador primário.</li></ul>16<br />
Upcoming SlideShare
Loading in...5
×

XMPP - Extensible messaging and presence protocol

1,862

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,862
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
4
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

XMPP - Extensible messaging and presence protocol

  1. 1. Extensible Messaging and Presence Protocol - XMPP<br /> Ricardo Reis<br />1<br />
  2. 2. Tópicos<br />Introdução<br /><ul><li>O que é XMPP ?
  3. 3. História</li></ul>Arquitetura<br /><ul><li>Visão Geral
  4. 4. XMPP Network
  5. 5. Servidores
  6. 6. Clientes
  7. 7. Gateways
  8. 8. Esquema de Endereçamento</li></ul>Comunicação<br /><ul><li>XMPP Stanzas
  9. 9. Ciclo de vida da conexão </li></ul>Conclusão<br />Referências Bibliográficas<br />2<br />
  10. 10. Introdução |O que é XMPP ?<br />XMPP é uma padronização do IETF para comunicação em tempo real.<br />Baseado na linguagem XML.<br />Suporta encriptação TLS e autenticação SASL.<br />3<br />
  11. 11. Introdução |História<br />No início só havia o caos, muitas aplicações de mensagens instantâneas . (96,97,98,99)<br />Cada uma com o seu protocolo proprietário.<br />Problemática: usuários de um não podiam se <br /> comunicar com usuários de outro.<br />4<br />
  12. 12. Introdução |História<br />Em 1999, Jeremie Miller anunciou o projeto Jabber.<br />Jabber Software Foundation (JSF) fundado em 2001 para coordenar a implementação do protocolo Jabber.<br />5<br />
  13. 13. Introdução |História<br />Aprovado em 2002 pelo IETF, possui 2 Request for Comments (RFC) básicos.<br />O RFC(3920) define os métodos de conexão, arquitetura, semântica das stanzas(Mensagens XML), segurança e transporte de dados<br />O RFC(3921) define a maneira como as mensagens são enviadas, solicitação e definição de presença, gerenciamento de contatos e etc.<br />6<br />
  14. 14. Introdução |História<br />Mais tarde o protocolo passou a se chamar XMPP.<br />Hoje em dia tem mais de 300 extensões ( XEP).<br />7<br />
  15. 15. Arquitetura |Visão Geral<br /><ul><li>A arquitetura do XMPP é muito semelhante à do correio eletrônico (e-mail):
  16. 16. É necessário que a mensagem passe por um servidor, no mínimo, antes de ser entregue ao destinatário.
  17. 17. Usuários são identificados de forma semelhante: usuario@dominio.
  18. 18. Os servidores se comunicam entre si para entregar mensagens.</li></ul>8<br />
  19. 19. Arquitetura |Visão Geral<br />9<br />
  20. 20. Arquitetura |Visão Geral<br />WTF ? E qual a diferença então ?<br /><ul><li>Correio Eletrônico StoreandForward
  21. 21. XMPP Real Time
  22. 22. Servidores XMPP sabem quando um usuário esta conectado.</li></ul>10<br />
  23. 23. Arquitetura |XMPP Network<br />Composta de atores: Servidores, Clientes, Gateways...<br />O sistema consiste em uma rede de servidores que se comunicam.<br />Clientes conectados em servidores diferentes conseguem se comunicar.<br />11<br />
  24. 24. Arquitetura |Servidores<br />Jobs<br /><ul><li>Gerenciar conexões (sessões).
  25. 25. Fazer o roteamento de stanzas.</li></ul>Ex: Ejabberd, Openfire, Jabber...<br />12<br />
  26. 26. Arquitetura |Clientes<br />O que fazem ?<br /><ul><li>Se conectam com servidores através de conexões TCP.
  27. 27. É possível se conectar ao mesmo servidor de dois lugares diferentes.</li></ul>Ex: Adium, Pidgin, AQQ<br />13<br />
  28. 28. Arquitetura |Gateway<br />O que é ?<br /><ul><li>É uma forma especial de traduzir mensagens XMPP para o protocolo utilizado por um sistema de mensagens instantâneas diferente (não XMPP) e vice-versa.
  29. 29. Existem gateways para IRC, MSN Messenger, Yahoo Instant Messenger...</li></ul>14<br />
  30. 30. Arquitetura |Esquema de Endereçamento<br />Clientes que se comunicam devem possuir um ID único. <br />Por razões históricas, chamado de Jabber ID ou JID.<br />O JID é composto por 3 partes:<br />usuário@domíno/recurso<br />15<br />
  31. 31. Arquitetura |Esquema de Endereçamento<br />Domínio<br /><ul><li>O domínio é o nome DNS da entidade.
  32. 32. Representa o servidor no qual o cliente está conectado.
  33. 33. É o identificador primário.</li></ul>16<br />
  34. 34. Arquitetura |Esquema de Endereçamento<br />Usuário<br /><ul><li>Utilizado para identificar um usuário particular dentro do domínio.
  35. 35. São válidos apenas em um determinado domínio.</li></ul>17<br />
  36. 36. Arquitetura |Esquema de Endereçamento<br />Recursos<br /><ul><li>Identifica uma conexão particular do cliente.
  37. 37. Isso que permite a um usuário se conectar várias vezes ao mesmo servidor.</li></ul>18<br />
  38. 38. Comunicação |XMPP Stanzas<br />3 tipos básicos de stanzas fazem parte do core do XMPP.<br /><ul><li><presence>
  39. 39. <message>
  40. 40. <iq>
  41. 41. XMPP stream é composto de 2 documentos XML, um em cada direção.</li></ul>19<br />
  42. 42. Comunicação |XMPP Stanzas<br />Stanzas de Presença<br /><ul><li>Controla e reporta a disponibilidade da entidade.
  43. 43. Ex:</li></ul>20<br /><presence/><br /><presence type=’unavailable’/><br /><presence><br /> <show>away</show><br /> <status>Estudando…</status><br /></presence><br />Away, chat, dnd, xa.<br />
  44. 44. Comunicação |XMPP Stanzas<br />Stanzas de Presença<br /><ul><li>O servidor do usuário envia automaticamente informações de presença para todos os contatos que tem uma assinatura de presença do usuário.
  45. 45. Assinatura de presença no XMPP é direcional.</li></ul>21<br />
  46. 46. Comunicação |XMPP Stanzas<br />Stanzas de Presença<br />22<br /><presencefrom=’usuario1@longbourn.lit/outside’<br /> to=’usuario2@pemberley.lit’<br />type=’subscribe’/><br /><presencefrom=’usuario2@pemberley.lit/library’<br /> to=’usuario1@longbourn.lit/outside’<br />type=’subscribed’/><br /><presencefrom=’usuario2@pemberley.lit/library’<br /> to=’usuario1@longbourn.lit’<br />type=’subscribe’/><br /><presencefrom=’usuario1@longbourn.lit/outside’<br /> to=’usuario2@pemberley.lit/library’<br />type=’subscribed’/><br />
  47. 47. Comunicação |XMPP Stanzas<br />Stanzas de Mensagem<br />23<br /><message from=’usuario1@chat.meryton.lit’<br />to=’usuario2@longbourn.lit’<br />type=’groupchat’><br /><body> XMPP é legal </body><br /></message><br />Chat, error, normal, groupchat, headline<br />
  48. 48. Comunicação |XMPP Stanzas<br />Stanzas de iq<br /><ul><li>Significa Info/Query e provê um mecanismo de requisição e resposta para a comunicação do XMPP.
  49. 49. O ID deve ser o mesmo.</li></ul>24<br /><iqfrom=’usuario1@longbourn.lit/garden’<br />type=’get’ id=’roster1’><br /> <queryxmlns=’jabber:iq:roster’/><br /></iq><br />Request: Get, Set<br />Response: Result, Error<br />
  50. 50. Comunicação |XMPP Stanzas<br />Stanzas de iq<br />25<br /><iq to=’usuario1@longbourn.lit/garden’<br />type=’result’ id=’roster1’><br /><queryxmlns=’jabber:iq:roster’><br /> <item jid=’usuario2@longbourn.lit’ name=’ usuario2’/><br /> <item jid=’usuario3@netherfield.lit’ name=’ usuario3’/><br /> </query><br /></iq><br />
  51. 51. Comunicação |Ciclo de vida da conexão<br />Conexões persistentes <br />26<br />Porta TCP 5222<br />Porta TCP 5269<br />
  52. 52. Comunicação |Ciclo de vida da conexão<br />Inicialmente...<br />27<br /><?xml version=’1.0’?><br /><stream:streamxmlns=’jabber:client’<br />xmlns:stream=’http://etherx.jabber.org/streams’<br /> version=’1.0’ <br /> to=’deinf.ufma.br’><br />
  53. 53. Comunicação |Ciclo de vida da conexão<br />Depois...<br />28<br /><?xml version=’1.0’?><br /><stream:streamxmlns=’jabber:client’<br />xmlns:stream=’http://etherx.jabber.org/streams’<br />version=’1.0’<br />from=’deinf.ufma.br’<br />id=’893ca401f5ff2ec29499984e9b7e8afc’<br />xml:lang=’pt’><br /><stream:features><br /> <stream:features><br /> <starttlsxmlns=’urn:ietf:params:xml:ns:xmpp-tls’/><br /> <compressionxmlns=’http://jabber.org/features/compress’><br /> <method>zlib</method><br /> </compression><br /> <mechanismsxmlns=’urn:ietf:params:xml:ns:xmpp-sasl’><br /> <mechanism>DIGEST-MD5</mechanism><br /> <mechanism>PLAIN</mechanism><br /> </mechanisms><br /></stream:features><br />
  54. 54. Comunicação |Ciclo de vida da conexão<br />O cliente inicia uma conexão TLS (TransportLayerSecurity) sem desconectar.<br />Autenticação no XMPP ocorre via SASL (Simple Authentication and Security Layers).<br />Normalmente o servidor provê autenticação PlainText e MD5.<br />Inicia uma sessão no servidor.<br />29<br />
  55. 55. Comunicação |Ciclo de vida da conexão<br />Envia uma Stanza de presença<br />Solicita sua lista de contatos através de uma info/query.<br />Um meio de desconectar é primeiro mandar uma stanza de presença informando a indisponibilidade, depois fecha a stream.<br />30<br /><presencetype=’unavailable’/><br /></stream:stream><br />
  56. 56. Conclusão<br />Protocolo relativamente novo porém robusto.<br />Aprovado pelo IETF, o que garante a seriedade e o padrão de qualidade do projeto.<br />Trabalha com padrões abertos, garantindo assim a interoperabilidade.<br />Simples de entender, isso torna um boa alternativa para quem deseja fazer uma aplicação de IM.<br />31<br />
  57. 57. Referências Bibliográficas<br />DIAS, Israel; MENESES, Thiago; MACHADO, Domingos. ExtensiveMessagingandPresenceProtocol – XMPP. (12/12/2007).<br />SAINT-ANDRE, Peter. “Extensible Messaging and Presence Protocol (XMPP): Core”. 10/2004. http://xmpp.org/rfcs/rfc3920.html (22/11/2010)<br />SAINT-ANDRE, Peter. “Extensible Messaging and Presence Protocol (XMPP): InstantMessagingandPresence”. 10/2004. http://xmpp.org/rfcs/rfc3921.html (22/11/2010).<br />32<br />
  58. 58. Referências Bibliográficas<br />JAIN, Pramod; JAIN, Mahaveer. “Buildinganinstantmessaging application usingJabber/XMPP: anadventurewithSmackandWildfire”. 23/06/2006. http://java.sys-con.com/node/232087?page=0,0 (23/11/2010).<br />MOFFITT, Jack. Professional XMPP Programming with JavaScript and jQuery. Wrox. 2010.<br />33<br />

×