SlideShare una empresa de Scribd logo
1 de 33
Extensible Messaging and Presence Protocol - XMPP 	Ricardo Reis 1
Tópicos Introdução ,[object Object]
HistóriaArquitetura ,[object Object]
XMPP Network
Servidores
Clientes
Gateways
Esquema de EndereçamentoComunicação ,[object Object]
Ciclo de vida da conexão  Conclusão Referências Bibliográficas 2
Introdução |O que é XMPP ? XMPP é uma padronização do IETF para comunicação em tempo real. Baseado na linguagem XML. Suporta encriptação TLS e autenticação SASL. 3
Introdução |História No início só havia o caos, muitas aplicações de mensagens instantâneas . (96,97,98,99) Cada uma com o seu protocolo proprietário. Problemática: usuários de um não podiam se      comunicar com usuários de outro. 4
Introdução |História Em 1999, Jeremie Miller anunciou o projeto Jabber. Jabber Software Foundation (JSF) fundado em 2001 para coordenar a implementação do protocolo Jabber. 5
Introdução |História Aprovado em 2002 pelo IETF, possui 2 Request for Comments (RFC)  básicos. O RFC(3920) define os métodos de conexão, arquitetura, semântica das stanzas(Mensagens XML), segurança e transporte de dados 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. 6
Introdução |História Mais tarde o protocolo passou a se chamar XMPP. Hoje em dia tem mais de 300 extensões ( XEP). 7
Arquitetura |Visão Geral ,[object Object]
É 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.8
Arquitetura |Visão Geral 9
Arquitetura |Visão Geral WTF ? E qual a diferença então ? ,[object Object]
XMPP                     Real Time
Servidores XMPP sabem quando um usuário esta conectado.10
Arquitetura |XMPP Network Composta de atores: Servidores, Clientes, Gateways... O sistema consiste em uma rede de servidores que se comunicam. Clientes conectados em servidores diferentes conseguem se comunicar. 11
Arquitetura |Servidores Jobs ,[object Object]
Fazer o roteamento de stanzas.Ex: Ejabberd, Openfire, Jabber... 12
Arquitetura |Clientes O que fazem ? ,[object Object]
É possível se conectar ao mesmo servidor de dois lugares diferentes.Ex: Adium, Pidgin, AQQ 13
Arquitetura |Gateway O que é ? ,[object Object]
Existem gateways para IRC, MSN Messenger, Yahoo Instant Messenger...14
Arquitetura |Esquema de Endereçamento Clientes que se comunicam devem possuir um ID único.  Por razões históricas, chamado de Jabber ID ou JID. O JID é composto por 3 partes: usuário@domíno/recurso 15
Arquitetura |Esquema de Endereçamento Domínio ,[object Object]
Representa o servidor no qual o cliente está conectado.
É o identificador primário.16

Más contenido relacionado

La actualidad más candente

Redes I -7.Introdução ao TCP/IP
Redes I -7.Introdução ao TCP/IPRedes I -7.Introdução ao TCP/IP
Redes I -7.Introdução ao TCP/IPMauro Tapajós
 
Análise de Tráfego TCP/IP
Análise de Tráfego TCP/IPAnálise de Tráfego TCP/IP
Análise de Tráfego TCP/IPThiago Finardi
 
Tecnologia web aula 02
Tecnologia web  aula 02Tecnologia web  aula 02
Tecnologia web aula 02Manuel Ernesto
 
Redes de computadores volume 2
Redes de computadores   volume 2Redes de computadores   volume 2
Redes de computadores volume 2Marques Silva
 
Capítulo 3 funcionalidades e protocolos da camada de aplicação
Capítulo 3   funcionalidades e protocolos da camada de aplicaçãoCapítulo 3   funcionalidades e protocolos da camada de aplicação
Capítulo 3 funcionalidades e protocolos da camada de aplicaçãoSimba Samuel
 
Aula01 - protocolos da camada de aplicação
Aula01 - protocolos da camada de aplicaçãoAula01 - protocolos da camada de aplicação
Aula01 - protocolos da camada de aplicaçãoCarlos Veiga
 
Redes - Camada de Transporte
Redes - Camada de TransporteRedes - Camada de Transporte
Redes - Camada de TransporteLuiz Arthur
 
Redes de computadores II - 1.Arquitetura TCP/IP
Redes de computadores II - 1.Arquitetura TCP/IPRedes de computadores II - 1.Arquitetura TCP/IP
Redes de computadores II - 1.Arquitetura TCP/IPMauro Tapajós
 
Ultrasurf - Entendendo e bloqueando
Ultrasurf - Entendendo e bloqueandoUltrasurf - Entendendo e bloqueando
Ultrasurf - Entendendo e bloqueandomarcusburghardt
 
Definições E Correlações Dhcp dns smtp e ntp
Definições E Correlações Dhcp dns smtp e ntpDefinições E Correlações Dhcp dns smtp e ntp
Definições E Correlações Dhcp dns smtp e ntpRogleison Rabelo, ITIL ISO
 
Lista 03 respostas
Lista 03 respostasLista 03 respostas
Lista 03 respostasForça Tauá
 
Unidade3 seg perimetral-vpn
Unidade3 seg perimetral-vpnUnidade3 seg perimetral-vpn
Unidade3 seg perimetral-vpnLeandro Almeida
 
Redes de Computadores - Camada de Aplicação
Redes de Computadores - Camada de AplicaçãoRedes de Computadores - Camada de Aplicação
Redes de Computadores - Camada de AplicaçãoLuís Felipe de Andrade
 

La actualidad más candente (19)

Camada de aplicação parte1
Camada de aplicação parte1Camada de aplicação parte1
Camada de aplicação parte1
 
Redes I -7.Introdução ao TCP/IP
Redes I -7.Introdução ao TCP/IPRedes I -7.Introdução ao TCP/IP
Redes I -7.Introdução ao TCP/IP
 
Análise de Tráfego TCP/IP
Análise de Tráfego TCP/IPAnálise de Tráfego TCP/IP
Análise de Tráfego TCP/IP
 
Tcpdump
TcpdumpTcpdump
Tcpdump
 
Protocolo UDP
Protocolo UDPProtocolo UDP
Protocolo UDP
 
Tecnologia web aula 02
Tecnologia web  aula 02Tecnologia web  aula 02
Tecnologia web aula 02
 
Redes de computadores volume 2
Redes de computadores   volume 2Redes de computadores   volume 2
Redes de computadores volume 2
 
Capítulo 3 funcionalidades e protocolos da camada de aplicação
Capítulo 3   funcionalidades e protocolos da camada de aplicaçãoCapítulo 3   funcionalidades e protocolos da camada de aplicação
Capítulo 3 funcionalidades e protocolos da camada de aplicação
 
Aula01 - protocolos da camada de aplicação
Aula01 - protocolos da camada de aplicaçãoAula01 - protocolos da camada de aplicação
Aula01 - protocolos da camada de aplicação
 
Apostila internet
Apostila internetApostila internet
Apostila internet
 
Redes - Camada de Transporte
Redes - Camada de TransporteRedes - Camada de Transporte
Redes - Camada de Transporte
 
Controle de congestionamento tcp
Controle de congestionamento tcpControle de congestionamento tcp
Controle de congestionamento tcp
 
Exercicio rossana
Exercicio rossanaExercicio rossana
Exercicio rossana
 
Redes de computadores II - 1.Arquitetura TCP/IP
Redes de computadores II - 1.Arquitetura TCP/IPRedes de computadores II - 1.Arquitetura TCP/IP
Redes de computadores II - 1.Arquitetura TCP/IP
 
Ultrasurf - Entendendo e bloqueando
Ultrasurf - Entendendo e bloqueandoUltrasurf - Entendendo e bloqueando
Ultrasurf - Entendendo e bloqueando
 
Definições E Correlações Dhcp dns smtp e ntp
Definições E Correlações Dhcp dns smtp e ntpDefinições E Correlações Dhcp dns smtp e ntp
Definições E Correlações Dhcp dns smtp e ntp
 
Lista 03 respostas
Lista 03 respostasLista 03 respostas
Lista 03 respostas
 
Unidade3 seg perimetral-vpn
Unidade3 seg perimetral-vpnUnidade3 seg perimetral-vpn
Unidade3 seg perimetral-vpn
 
Redes de Computadores - Camada de Aplicação
Redes de Computadores - Camada de AplicaçãoRedes de Computadores - Camada de Aplicação
Redes de Computadores - Camada de Aplicação
 

Similar a XMPP - Extensible messaging and presence protocol

Administração de Rede Local
Administração de Rede LocalAdministração de Rede Local
Administração de Rede Localcymbron
 
Selecionando application procotocols para IoT
Selecionando application procotocols para IoTSelecionando application procotocols para IoT
Selecionando application procotocols para IoTcesar231084
 
Alta Disponibilidade na Prática utilizando servidores Linux
Alta Disponibilidade na Prática utilizando servidores LinuxAlta Disponibilidade na Prática utilizando servidores Linux
Alta Disponibilidade na Prática utilizando servidores Linuxelliando dias
 
Analisando O Caminho Dos Pacotes No Wireshark Stalin
Analisando O Caminho Dos Pacotes No Wireshark   StalinAnalisando O Caminho Dos Pacotes No Wireshark   Stalin
Analisando O Caminho Dos Pacotes No Wireshark Stalinstalinstm
 
XMPP Hands-On
XMPP Hands-OnXMPP Hands-On
XMPP Hands-Oncodebits
 
Net::RabbitMQ(::Simple)
Net::RabbitMQ(::Simple)Net::RabbitMQ(::Simple)
Net::RabbitMQ(::Simple)Thiago Rondon
 
S2 B 2007 Infra Aula 01 V1.00
S2 B 2007   Infra   Aula 01 V1.00S2 B 2007   Infra   Aula 01 V1.00
S2 B 2007 Infra Aula 01 V1.00doctorweb
 
Redes prática - Inetd
Redes prática - InetdRedes prática - Inetd
Redes prática - InetdLuiz Arthur
 
Lua em transmissões ao vivo
Lua em transmissões ao vivoLua em transmissões ao vivo
Lua em transmissões ao vivoLeandro Moreira
 
Apresentação - IT Specialist
Apresentação - IT SpecialistApresentação - IT Specialist
Apresentação - IT SpecialistAlan Carlos
 
Apresentação de Introdução ao Syslog
Apresentação de Introdução ao SyslogApresentação de Introdução ao Syslog
Apresentação de Introdução ao SyslogIsaque Profeta
 
Protocolo MQTT - Redes de Computadores
Protocolo MQTT - Redes de Computadores Protocolo MQTT - Redes de Computadores
Protocolo MQTT - Redes de Computadores Maurício Moreira Neto
 
Conceitos básicos de info
Conceitos básicos de infoConceitos básicos de info
Conceitos básicos de infoYASMIN ALVES
 

Similar a XMPP - Extensible messaging and presence protocol (20)

Administração de Rede Local
Administração de Rede LocalAdministração de Rede Local
Administração de Rede Local
 
Cirrus
CirrusCirrus
Cirrus
 
Selecionando application procotocols para IoT
Selecionando application procotocols para IoTSelecionando application procotocols para IoT
Selecionando application procotocols para IoT
 
Intro_redes.pdf
Intro_redes.pdfIntro_redes.pdf
Intro_redes.pdf
 
Alta Disponibilidade na Prática utilizando servidores Linux
Alta Disponibilidade na Prática utilizando servidores LinuxAlta Disponibilidade na Prática utilizando servidores Linux
Alta Disponibilidade na Prática utilizando servidores Linux
 
Analisando O Caminho Dos Pacotes No Wireshark Stalin
Analisando O Caminho Dos Pacotes No Wireshark   StalinAnalisando O Caminho Dos Pacotes No Wireshark   Stalin
Analisando O Caminho Dos Pacotes No Wireshark Stalin
 
XMPP Hands-On
XMPP Hands-OnXMPP Hands-On
XMPP Hands-On
 
Net::RabbitMQ(::Simple)
Net::RabbitMQ(::Simple)Net::RabbitMQ(::Simple)
Net::RabbitMQ(::Simple)
 
S2 B 2007 Infra Aula 01 V1.00
S2 B 2007   Infra   Aula 01 V1.00S2 B 2007   Infra   Aula 01 V1.00
S2 B 2007 Infra Aula 01 V1.00
 
Ntop
NtopNtop
Ntop
 
Redes prática - Inetd
Redes prática - InetdRedes prática - Inetd
Redes prática - Inetd
 
Lua em transmissões ao vivo
Lua em transmissões ao vivoLua em transmissões ao vivo
Lua em transmissões ao vivo
 
Apresentação de sd2
Apresentação de sd2Apresentação de sd2
Apresentação de sd2
 
Apresentação - IT Specialist
Apresentação - IT SpecialistApresentação - IT Specialist
Apresentação - IT Specialist
 
Sniffers
SniffersSniffers
Sniffers
 
XML-RPC.pdf
XML-RPC.pdfXML-RPC.pdf
XML-RPC.pdf
 
Introdução ao SNMP
Introdução ao SNMPIntrodução ao SNMP
Introdução ao SNMP
 
Apresentação de Introdução ao Syslog
Apresentação de Introdução ao SyslogApresentação de Introdução ao Syslog
Apresentação de Introdução ao Syslog
 
Protocolo MQTT - Redes de Computadores
Protocolo MQTT - Redes de Computadores Protocolo MQTT - Redes de Computadores
Protocolo MQTT - Redes de Computadores
 
Conceitos básicos de info
Conceitos básicos de infoConceitos básicos de info
Conceitos básicos de info
 

XMPP - Extensible messaging and presence protocol

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