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.
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
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
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
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