Jan Tarik Martins Nazorek
DESENVOLVIMENTO DE UM SOFTWARE DE BACKUP
DESCENTRALIZADO, UTILIZANDO A PLATAFORMA JXTA
Palmas
2013
Jan Tarik Martins Nazorek
DESENVOLVIMENTO DE UM SOFTWARE DE BACKUP
DESCENTRALIZADO, UTILIZANDO A PLATAFORMA JXTA
Trabalho de Concluso de Curso (TCC)
elaborado e apresentado como requisito
parcial para obteno do ttulo de
bacharel em Sistemas de Informao pelo
Centro Universitrio Luterano de Palmas
(CEULP/ULBRA).
Orientador: Prof. Mestre Madianita Bogo
Marioti.
Palmas
2013
JAN TARIK MARTINS NAZOREK
DESENVOLVIMENTO DE UM SOFTWARE DE BACKUP
DESCENTRALIZADO, UTILIZANDO A PLATAFORMA JXTA
Trabalho de Concluso de Curso (TCC)
elaborado e apresentado como requisito
parcial para obteno do ttulo de
bacharel em Sistemas de Informao pelo
Centro Universitrio Luterano de Palmas
(CEULP/ULBRA).
Orientador: Prof. Mestre Madianita Bogo
Marioti.
Aprovada em xxxxxxx de 20XX.
BANCA EXAMINADORA
___________________________________________________
Prof. M.Sc. Madianita Bogo Marioti
Centro Universitrio Luterano de Palmas
___________________________________________________
Prof. M.Sc. Jackson Gomes de Souza
Centro Universitrio Luterano de Palmas
___________________________________________________
Prof. M.Sc. Edeilson Milhomem Silva
Centro Universitrio Luterano de Palmas
Palmas
2013
SUMRIO
1 INTRODUO ................................................................................................... 10
2 REFERENCIAL TERICO ................................................................................. 13
2.1 Sistemas Distribudos ................................................................................... 13
2.1.1 Aspectos de Projeto ............................................................................... 14
2.1.2 Motivaes e dificuldades ...................................................................... 18
2.1.3 Modelos de Sistemas Distribudos ......................................................... 19
2.2 Arquitetura Peer-to-Peer (P2P) .................................................................... 21
2.2.1 Aplicaes P2P ...................................................................................... 22
2.2.2 Distribuio de contedo utilizando redes P2P...................................... 23
2.2.3 Arquiteturas P2P de Distribuio de Contedo...................................... 24
2.2.4 Arquiteturas Desestruturadas ................................................................ 25
2.2.5 Arquitetura Descentralizada................................................................... 28
2.2.6 Segurana P2P ...................................................................................... 31
2.3 Tecnologia JXTA .......................................................................................... 33
2.3.1 Arquitetura JXTA ................................................................................... 36
2.3.2 Protocolos JXTA .................................................................................... 37
2.4 Backup Cooperativo ..................................................................................... 39
2.4.1 Tipos de backup .................................................................................... 39
2.4.2 Backup em rede ..................................................................................... 41
3 MATERIAIS E MTODOS ................................................................................. 44
3.1 MATERIAIS .................................................................................................. 44
3.2 Metodologia .................................................................................................. 45
4 RESULTADOS E DISCUSSES ....................................................................... 50
4.1 Arquitetura da aplicao Peer Backup ......................................................... 51
4.2 Diagrama de classes .................................................................................... 53
4.3 Modelo de dados .......................................................................................... 58
4.4 Cenrios de Uso ........................................................................................... 61
4.5 Implementao da aplicao Peer Backup .................................................. 65
4.6 Testes realizados sobre a aplicao ............................................................ 83
5 CONSIDERAES FINAIS ............................................................................... 91
6 REFERNCIAS BIBLIOGRFICAS ................................................................... 93
RESUMO
As redes de computadores tm se tornado comum entre usurios e organizaes e,
consequentemente, a utilizao de dados digitais tem crescido. Com isso,
importante criar novas formas de armazenar esses dados com intuito de manter
cpias de segurana de arquivos para evitar possveis perdas. Assim, o objetivo
deste trabalho foi desenvolver uma soluo de backup P2P, utilizando JXTA, que
possibilita o compartilhamento de arquivos disponveis nas mquinas dos usurios.
A aplicao oferece funcionalidades para o usurio enviar, buscar e recuperar seus
arquivos, que so criptografados e armazenados em diversas mquinas de rede afim
de criar cpias de segurana. Os arquivos enviados podem ser recuperados
somente por quem possui a chave de criptografia, utilizada para garantir a
privacidade dos arquivos.
7
LISTA DE ILUSTRAES
Figura 1Troca de mensagens entre servidor e clientes ........................................... 14
Figura 2 - Servidor FTP ............................................................................................. 20
Figura 3 - Sistema distribudo P2P ............................................................................ 21
Figura 4 - Rede P2P .................................................................................................. 22
Figura 5 - Compartilhamento de contedo em uma rede P2P .................................. 24
Figura 6 - Rede P2P Hibrida ..................................................................................... 26
Figura 7 - Rede P2P parcialmente centralizada ........................................................ 27
Figura 8 - Rede P2P descentralizada ........................................................................ 28
Figura 9 - Incluso de novo membro na rede ............................................................ 29
Figura 10 - Buscar um arquivo na rede descentralizada. .......................................... 30
Figura 11 - Recuperando informao com chave pblica ......................................... 33
Figura 12 - Camadas JXTA (MAINBAUM, MUNDT. 2002, p. 3) ................................ 36
Figura 13 - Protocolos JXTA (MAIBAUM, MUNDT. 2002. p. 4) ................................. 38
Figura 14 - Backup incremental adaptado (IBM, 2004, online) .................................. 40
Figura 15 Backup diferencial (IBM, 2004, online) ................................................... 41
Figura 16 - Backup centralizado ................................................................................ 42
Figura 17 - Backup descentralizado .......................................................................... 43
Figura 18 - Etapas de execuo do projeto ............................................................... 46
Figura 19 - Arquitetura Peer Backup ......................................................................... 51
Figura 20 - Funcionamento do Peer Backup ............................................................. 52
Figura 21 - Diagrama de classes da aplicao .......................................................... 54
Figura 22 - Pasta .jxta ............................................................................................... 58
Figura 23 - Pastas Peer Backup ................................................................................ 60
Figura 24 - Pasta Config ......................................................................................... 60
Figura 25 - Arquivo "Base.xml" ................................................................................. 61
Figura 26 - Primeiro acesso ...................................................................................... 62
Figura 27 - Recuperando lista de arquivos ................................................................ 63
Figura 28 - Recuperar um arquivo ............................................................................. 64
Figura 29 - Sequncia de eventos na inicializao do Peer Backup ......................... 66
Figura 30 - Fluxo verificar base e pastas................................................................... 67
Figura 31 - Criao da rede P2P ............................................................................... 68
Figura 32 - Etapas de acesso aplicao................................................................. 72
8
Figura 33 - JXTA Configurator ................................................................................... 73
Figura 34 - Verificao de chave ............................................................................... 75
Figura 35 - Interface grfica Peer Backup ................................................................. 76
Figura 36 - Mtodo notifyMoreResults() .................................................................... 79
Figura 37 - Aba Buscar Arquivos ............................................................................... 80
Figura 38 - Aba "Download" ...................................................................................... 81
Figura 39 - Aba Peers Conectados ........................................................................... 82
Figura 40 - Aba Logs ................................................................................................. 83
Figura 41 - Arquivos enviados por Lord..................................................................... 87
Figura 42 - Arquivos da pasta Share dos pares ........................................................ 87
Figura 43 - Peers conectados ................................................................................... 88
Figura 44 - Lista de arquivos disponveis .................................................................. 88
Figura 45 - Tentativa de recuperao de usurio falso ............................................. 90
9
LISTA DE ABREVIATURAS E SIGLAS
P2P Peer-to-Peer
IP Internet Protocol
FTP File Transfer Protocol
URI Uniform Resource Identifier
10
1 INTRODUO
Com a expanso da internet e a facilidade de acesso aos recursos computacionais e
de telecomunicao, a quantidade de dados gerados por usurios tambm
aumentou. Deste modo, continuamente tem sido propostos novos meios de atender
a demanda de usurios e criar sistemas com poder computacional e capacidade de
armazenamento elevado tem se tornado cada vez mais comum. Nesse contexto,
utilizar sistemas distribudos pode ser uma boa alternativa.
Coulouris (2007, p. 16) define sistema distribudo como um sistema no qual
os componentes de hardware ou software, localizados em computadores interligados
em rede, se comunicam e coordenam suas aes apenas enviando mensagens
entre si. Estes componentes trabalham em conjunto para realizar aes solicitadas
pelos usurios do sistema.
Um sistema distribudo pode trazer muitas vantagens, sendo que o
compartilhamento de recursos uma delas, pois oferece a capacidade de dividir o
processamento entre os recursos, evitando que apenas um destes fique
sobrecarregado de processos. Outro ponto positivo a possibilidade de aumentar a
capacidade do sistema, como o espao de armazenamento, sem precisar descartar
o que j est funcionando. Exemplos de sistemas distribudos so: Cliente/Servidor;
que utiliza um servidor centralizado para coordenar as aes e responder
requisies enviadas pelos clientes; e P2P, que constitudo de pares que se
comunicam diretamente entre si, podendo trabalhar tanto como servidor quanto
como cliente.
Em uma rede P2P (Peer-to-Peer) os ns interligados podem compartilhar
recursos como ciclos de CPU, armazenamento, arquivos etc. Muitas aplicaes
existentes utilizam P2P para que seus usurios possam compartilhar arquivos
pessoais como msicas, vdeos, fotos etc. Alm do compartilhamento de arquivos, o
compartilhamento de hardware tambm importante como, por exemplo, espao em
disco, pois outros usurios podem usar o espao disponvel de ns da rede para
guardar seus dados. Baseado nisso, desenvolveu-se em criar um sistema de backup
11
descentralizado utilizando P2P, no qual as cpias podem ficar armazenadas em ns
de rede. Esses ns representam as mquinas conectadas a rede local.
Um sistema descentralizado de backup guarda em vrios locais uma mesma
informao, tornando difcil que esta seja perdida caso ocorra falha em algum dos
locais. Uma maneira de implementar um sistema desses utilizando a ferramenta
JXTA, que oferece recursos para a implementao de redes P2P e para o acesso
aos recursos disponveis dos pares da rede.
Segundo Sun Microsystems (2005, p. 7) JXTA um conjunto aberto de
protocolos Peer-to-Peer (P2P) que permitem qualquer dispositivo de rede [...] se
comunicar e colaborar mutuamente como pares. Esta ferramenta vem sendo
bastante utilizada em aplicaes P2P, isto porque tem caractersticas que permitem
a comunicao entre os pares independentemente de endereamento de rede,
protocolos fsicos e plataforma de programao.
A criao de uma rede P2P descentralizada foi o objetivo do trabalho, e isto
foi possvel por meio do JXTA, que fornecer as funcionalidades da rede Peer-to-
Peer. Com os mtodos de rede P2P fornecidos pelo JXTA, foi implementada uma
aplicao denominada Peer Backup. A aplicao, em conjunto com as
funcionalidades da rede, fornece ao usurio mtodos para realizao de backups em
rede.
Na primeira etapa do trabalho foram pesquisados assuntos referentes a
sistemas distribudos, peer-to-peer, JXTA e Backup colaborativo. Estes materiais
foram utilizados para o desenvolvimento do referencial terico, e foram utilizados
como base para a execuo do projeto. Durante a execuo do projeto foram
gerados artefatos de modelagem, e, a partir deles, foram criados cenrios que
mostram situaes com os quais os usurios da aplicao pode se deparar. Os
cenrios, que englobam desde a criao da rede P2P descentralizada at a
recuperao de um arquivo do usurio, serviram de base para a implementao dos
mtodos e das sequncias de execuo das aes.
A aplicao Peer Backup possui as caractersticas de um programa comum
de cpias de arquivos, mas possibilita duplicar os arquivos em mquinas de uma
rede local, com intuito de garantir a disponibilidade e garantir a privacidade utilizando
chave de criptografia.
O trabalho est estruturado da seguinte forma: captulo 1 que referente
Introduo do projeto, captulo 2 que apresenta o referencial terico sobre os
12
assuntos 2.1 Sistemas Distribudos, 2.2 Arquitetura Peer-to-Peer, 2.3 Tecnologia
JXTA e 2.4 Backup cooperativo. No captulo 3 apresentada a metodologia de
desenvolvimento do projeto e os materiais utilizados no desenvolvimento do projeto.
O captulo 4 referente ao desenvolvimento da aplicao, no qual apresenta a
arquitetura, modelo de dados, codificao e testes da aplicao desenvolvida. As
consideraes finais que mostrada no captulo 5, seguido pelas referncias
bibliogrficas presentes no capitulo 6.
13
2 REFERENCIAL TERICO
Nesta seo so abordados os principais conceitos referentes ao projeto, que so:
2.1 Sistemas Distribudos, 2.2 Arquitetura Peer-to-Peer, 2.3 Tecnologia JXTA e 2.4
Backup cooperativo. A partir deles ser possvel fundamentar o desenvolvimento da
aplicao.
2.1 Sistemas Distribudos
As redes de computadores possibilitam que computadores se conectem e troquem
informaes, independentemente da localidade. As tecnologias de redes e sua
abrangncia cresceram bastante, e consequentemente, a quantidade de usurios e
tipos de servios oferecidos tambm. Para atender essa demanda, tem se
destacado o uso de sistemas distribudos, que tm a capacidade de atender grande
quantidade de usurios e oferecer servios usando recursos das redes de
computadores.
Coulouris (2007, p.16) define sistema distribudo como um sistema no qual
os componentes de hardware ou software, localizados em computadores interligados
em rede, se comunicam e coordenam suas aes apenas enviando mensagens
entre si. Isto , processos que podem estar executando em computadores distintos
trabalham em conjunto para executar determinada tarefa em comum e, tambm,
compartilham recursos e informaes.
Os sistemas distribudos podem ser empregados em diversos tipos de
aplicaes como, por exemplo, uma partida online de domin, no qual os usurios
trocam mensagens com o servidor para realizar uma jogada e o servidor envia
mensagem aos usurios sobre aes do jogo, como mostra a Figura 1.
14
Figura 1Troca de mensagens entre servidor e clientes
Na Figura 1, os usurios acessam a aplicao cliente que envia para o
servidor mensagens de requisio. O servidor o responsvel por controlar as
aes baseando-se nas mensagens que recebeu das aplicaes cliente. Dessa
forma, quando um usurio realiza uma jogada, o aplicativo cliente envia uma
mensagem ao servidor, que replica a mensagem para os aplicativos cliente dos
demais usurios para que todos os usurios tenham a mesma viso do jogo nos
seus computadores.
No desenvolvimento de um sistema distribudo necessrio considerar
aspectos de projeto importantes para que este funcione de forma consistente, que
so: Transparncia, Flexibilidade, Escalabilidade, Confiabilidade, Tolerncia a falhas
e Desempenho. Cada um desses aspectos apresentado na seo seguinte.
2.1.1 Aspectos de Projeto
No projeto dos Sistemas Distribudos um conjunto de aspectos devem ser
considerados visando garantir o funcionamento adequado, para que as tarefas
possam ser realizadas de forma eficiente, que seu funcionamento no seja
interrompido em caso de falhas, que tenha a capacidade de acompanhar o
15
crescimento da demanda, entre outras caractersticas desejadas em um sistema de
computao. Esses aspectos so:
Transparncia;
Flexibilidade;
Escalabilidade;
Confiabilidade;
Tolerncia a falhas;
Desempenho.
Transparncia
Um sistema distribudo deve ocultar de seus usurios que os processos executados
e os componentes utilizados esto separados fisicamente, mesmo quando esto
separados por localidade, com sistemas operacionais diferentes etc.. Existem vrios
tipos de transparncia, sendo que cada aplicao pode exigir conceitos diferentes
(TANEMBAUM, 2007, p. 3). So elas:
Acesso: ocultar como os dados so representados e como os recursos so
acessados. Caso o usurio faa uma requisio de download, por exemplo, o
usurio no deve perceber como este dado est armazenado no sistema;
Localizao: ocultar do usurio a localizao dos recursos, sendo que
recursos locais e remotos, para o usurio, so vistos da mesma forma. Por
exemplo, ao acessar uma pgina o usurio no quer saber se ela est no
Brasil ou na China, apenas necessita que pgina seja exibida.
Migrao: ocultar que um recurso possa ter sido movido de um local para
outro. Por exemplo, se um arquivo foi movido de um servidor para outro, o
sistema deve retornar as informaes para o usurio sem que este perceba
ou se preocupe com a nova localizao;
Performance: melhorar a capacidade (desempenho) do sistema caso seja
necessrio sem que o usurio perceba. Mesmo com o aumento da carga,
devido ao aumento da quantidade de usurios, o sistema deve garantir que o
tempo de acesso a um recurso no sofra alterao;
Replicao: ocultar que existem cpias de um recurso. Um exemplo de
replicao um sistema que, para evitar perda de dados, faz cpias de dados
que usurios enviam em outro local, mas, no informa isto ao usurio. Caso
16
ocorra um problema na mquina que est o documento original, a cpia pode
ser utilizada, evitando que os dados do usurio sejam perdidos;
Concorrncia: ocultar do usurio que existem outros usurios compartilhando
do mesmo recurso. Um exemplo de concorrncia dois usurios utilizarema
mesma opo (exemplo sacar) de um caixa eletrnico, que busca no banco
de dados informaes na mesma tabela. O sistema deve ser percebido pelo
usurio como exclusivo, como se ningum estivesseusando os mesmos
recursos que ele;
Falha: ocultar falhas de algum recurso e ainda ocultar a recuperao dessa
falha. Se um usurio tenta acessar uma imagem e o servidor tem um
problema de conexo com a internet, este deve solucionar o problema
automaticamente sem que o usurio perceba.
Flexibilidade
Segundo Dettenborn (2008, p. 19) um projeto de sistemas distribudos deve ser
flexvel com a capacidade de suportar alteraes que no foram previstas. Deste
modo, a flexibilidade de um sistema est ligada a capacidade de realizar
modificaes futuras com mais facilidade. Nessas modificaes podem ser includas
funcionalidades como segurana, desempenho etc.. Assim, situaes imprevistas
devem ser contornadas de forma simples. Por exemplo, se o firewall utilizado de
baixa confiabilidade ele pode ser trocado por outro sem precisar alterar o sistema
que protegido por ele.
Escalabilidade
Um sistema descrito como escalvel se permanece eficiente quando h um
aumento significativo no nmero de recursos e no nmero de usurios
(COULOURIS, 2007, p.31). Ou seja, preciso que um sistema continue funcionando
adequadamente caso a demanda aumente. Por exemplo, se um site da internet
ganha novos usurios de forma progressiva e de diversos locais do mundo, deve
permanecer funcionando normalmente e fornecer respostas s solicitaes dos
usurios em tempo adequado. Esta escalabilidade pode ser dividida em trs nveis:
Tamanho: capacidade de atender uma demanda maior de usurios.
Distncia geogrfica:capacidade de atender usurios mesmo ele estando
longe dos recursos.
17
Facilidade de administrao: mesmo com incluso muitas organizaes
independentes ainda continuam fceis administrao.
Confiabilidade
Confiabilidade [...] refere-se propriedade de um sistema poder funcionar
continuamente sem falha (TANEMBAUM, 2007, p.194). Um sistema confivel deve
garantir a disponibilidade, a segurana dos dados transmitidos e, tambm, a
possibilidade de se recuperar caso ocorra uma falha. Por exemplo, se um servidor
que compartilha arquivos na maior parte do tempo est fora do ar, os usurios
podem entender que o site no confivel, pois existe uma dificuldade em obter
qualquer informao dele dependendo do momento que em que acessado.
Tolerncia a Falhas
Sistemas so sujeitos a falhas, tanto por software como por hardware. Quando
ocorrem falhas no hardware ou no software, os programas podem produzir
resultados incorretos ou podem parar antes de terem concludo a computao
pretendida (COULOURIS, 2007, p.32). Porm, mesmo quando ocorre algum
problema com um de seus componentes, o sistema deve ter a capacidade de
continuar funcionando, ou seja, deve ser tolerante a falhas. Algumas alternativas
para preveno de falhas so: redundncia de hardware, que ter cpias idnticas
de hardwares utilizados; e recuperao por software, pois, caso algo falhe, o sistema
pode, por exemplo, reiniciar um servio ou direcionar os usurios para um recurso
que est funcionando, evitando que o servio pare.
Desempenho
preciso que um sistema distribudo oferea um desempenho equivalente ou
melhor que de um sistema centralizado, fornecendo respostas rpidas, como se o
sistema estivesse executando localmente. Podem ser adotadas mtricas distintas
para verificar o desempenho, como: tempo de resposta, utilizao do sistema,
quantidade consumida da capacidade da rede, entre outras.
A utilizao de sistemas distribudos interessante em diversas situaes,
mas, a distribuio dos sistemas traz dificuldades. A prxima seo discorre sobre
18
as motivaes que levam a criao dos sistemas distribudos e a dificuldades
encontradas no uso destes.
2.1.2 Motivaes e dificuldades
Os sistemas distribudos permitem que sejam criadas aplicaes com a capacidade
de executar tarefas que exigem alto poder de processamento, atender demanda de
grande quantidade de usurios, entre outras possibilidades que se tornam motivao
para o seu uso:
Compartilhamento de recursos: capacidade de utilizar recursos disponveis
em maquinas da rede como software, hardware e dados.
Capacidade de concorrncia: caso a escala de usurios aumentar de forma
desordenada, a carga pode ser distribuda entre os recursos, no
sobrecarregando apenas um recurso.
Capacidade de expanso: possibilidade de aumentar o poder de
processamento ou/e armazenamento sem precisar se desfazer do que j est
pronto.
Tolerncia a falhas: o sistema pode continuar funcionando mesmo quando
ocorre um problema.
Por outro lado, se comparado a outros tipos de sistemas, o seu desenvolvimento
mais complexo e nem sempre as solues fceis so encontradas para resolver os
problemas. Entre os principais problemas encontrados na sua utilizao e
desenvolvimento esto:
Complexidade de software: implementar softwares para sistemas
distribudos so complexos, levando em considerao a sua dimenso e que
seu funcionamento no-determinstico.
Segurana: como os dados so compartilhados, preciso garantir que os
dados sejam acessados somente por pessoas autorizadas.
Rede de comunicao: a rede pode saturar por causa da quantidade de
dados transferidos, e falhar. Alm da distncia fsica da rede entre os
recursos do sistema podem afetar a velocidade, deixando o sistema lento.
19
Apesar das dificuldades o uso de sistemas distribudos costuma ser uma boa
soluo para resolver determinados problemas, como o acesso informao em
localidades distintas. No seu desenvolvimento deve ser levada em considerao a
necessidade, a dificuldade e o benefcio que trar quando concludo. De toda forma
existem vrias solues parao problema da segurana e das redes de comunicao.
Ao se decidir pelo desenvolvimento de um sistema distribudo, deve-se definir
qual modelo ser utilizado, j que existem alguns modelos, entre eles Cliente-
Servidor e P2P, abordados na prxima seo. As motivaes e dificuldades
comentadas nessa seo esto presentes nos Sistemas Distribudos em geral,
independente do modelo.
2.1.3 Modelos de Sistemas Distribudos
As diversas caractersticas contidas em sistemas distribudos so empregadas de
acordo com o modelo escolhido no seu desenvolvimento. Estes modelos permite
que o desenvolvedor tenha conhecimento sobre o funcionamento do seu sistema.
Entre os modelos existentes possvel citar: Arquitetura Cliente-Servidor e P2P.
Na arquitetura Cliente-Servidor existe uma aplicao central, denominada
servidor, que responsvel por disponibilizar servios e as aplicaes acessadas
pelos usurios, que so os clientes. Um servidor fica esperando por requisies de
clientes, que recebem a solicitao do usurio, empacotam em uma mensagem de
requisio e enviam ao servidor pela rede (TANEMBAUM, 2007, p22). Esse tipo
considerado centralizado, no qual um servidor essencial e responsvel pelo
atendimento das requisies dos usurios e que uma falha neste pode gerar muitos
problemas.
Vrios sistemas podem ser citados como exemplo de cliente servidor, um
deles o sistema de FTP (File Transfer Protocol), mostrado na Figura 2.
20
Figura 2 - Servidor FTP
Na Figura 2 apresentado um exemplo de aplicao Cliente-Servidor, que
representa o funcionamento do FTP. Quando um cliente deseja um arquivo, envia a
solicitao do arquivo ao servidor. O servidor recebe a solicitao, buscar o arquivo,
verifica se o usurio possui permisso para acessar, monta as mensagens com o
contedo do arquivo solicitado e envia como resposta ao cliente.
Outro modelo de sistema distribudo o Peer-to-Peer, tambm conhecido
como P2P. Nesse modelo os ns so interconectados e tm a capacidade de atuar
tanto como cliente quanto como servidor. Ainda, so capazes de se auto organizar
em topologias de redes, com o objetivo de compartilhar recursos (arquivos, ciclos de
CPU etc.) (LOEST, 2007, p3).
Como mostra a Figura 3 os sistemas P2P so projetados de forma que os
componentes, chamados de ns, se comuniquem entre si e compartilhem recursos
por troca direta, via rede, sem a necessidade de um servidor central.
21
Figura 3 - Sistema distribudo P2P
Como a arquitetura P2P o foco desse trabalho, a seo seguinte apresenta
de forma mais detalhada os conceitos, exemplos e caractersticas relacionadas a
essa arquitetura.
2.2 Arquitetura Peer-to-Peer (P2P)
Os sistemas Peer-to-Peer tem ganhado afinidade entre desenvolvedores de
sistemas distribudos, e isto ocorre porque as redes P2P oferecem facilidade de
expanso caso esta seja necessria, alm de ter um custo mais baixo, se
comparada a outras arquiteturas.
Segundo Androutsellis-Theotokis e Spinellis (2004, p. 337) Peer-to-Peer so
sistemas distribudos constitudos de ns interligados capazes de se organizar em
topologias de rede com a finalidade de compartilhar recursos [...].
Estes ns podem trabalhar como cliente (ex. recebendo um arquivo) ou como
servidor (ex. transferindo um contedo). Os recursos compartilhados podem ser
apenas arquivos ou at mesmo ciclos de CPU, espao em disco etc.. Na Figura 4
mostrada a representao de uma rede P2P composta por quatro ns.
22
Figura 4 - Rede P2P
Na Figura 4 mostrada a ligao entre ns em uma rede P2P, sendo que
eles so equivalentes e funcionam como cliente ou como servidor. Em alguns casos,
podem existir super-ns, que so pares que utilizados para centralizar informaes
como localizao de pares, recursos etc., isto definido na aplicao.
A arquitetura P2P pode ser empregada em diversos tipos de aplicaes,
como para transferncia de contedo como fotos, vdeos, programas etc.. De acordo
com a finalidade da aplicao foram definidas diversas classificaes, as principais
so: comunicao e colaborao, computao distribuda, suporte de servios de
internet, sistemas de banco de dados, distribuio de contedo. Na prxima seo
abordada as caractersticas dessas classificaes.
2.2.1 Aplicaes P2P
Segundo Androutsellis-Theotokis e Spinellis (2004) a arquitetura P2P est cada vez
mais sendo utilizada no desenvolvimento de aplicaes. Estas aplicaes tm sido
utilizadas para diversos fins, alguns exemplos so:
Comunicao e colaborao: esto presentes nesta classificao
aplicaes que permitem que os usurios da rede se comuniquem, para
trocar mensagens de texto, voz, imagem etc. Este tipo de aplicao tem se
tornado comum entre os usurios de internet, pois existem muitos softwares
que utilizam a tecnologia, como exemplo: MSN Messenger, Skype, ICQ;
23
Computao distribuda: so sistemas que utilizam o poder de
processamento dos pares da rede para executar tarefas. Este tipo de
aplicao divide grandes processos em pequenas tarefas, que so
distribudas e balanceadas entre os pares e ainda utiliza o poder de
processamento deles para concluir estas tarefas, deste modo o sistema
ganha capacidade de processamento dependendo da quantidade de pares na
rede;
Streaming media: segundo Rodrigues e Druschel (2010, p.73) aplicaes
P2P mais populares so streaming media distribution e IPTV. Estas
aplicaes streaming P2P tem o objetivo de utilizar a largura da banda dos
pares da rede para replicar os dados de udio e vdeo, deste modo
economizando largura de banda de um servidor central;
Computao voluntria: so sistema no qual os pares fornecem ciclos de
CPU para terceiros. Neste caso geralmente os usurios da rede instalam uma
aplicao, que recebem e processam os dados de um servidor central e
retorna os resultados. Esse tipo de paradigma bastante utilizado para
clculos cientficos. Um exemplo de aplicao o SETI@Home que faz a
anlise de sinais de rdio do espao para detectar possveis emisses
extraterrestres (RODRIGUES, DRUSCHEL, 2010, p. 73);
Distribuio de contedo: aplicaes para distribuio de contedo so
bastante populares entre os usurios de sistemas P2P. Esto includas nesta
classificao aplicaes que permitem o compartilhamento de arquivos
(imagens, vdeos, documentos etc.) entre os usurios da rede. Exemplos de
aplicaes que esto nessa classificao so Kazaa, Gnutella, Napster.
O foco deste trabalho a distribuio de contedo entre os ns de uma rede
P2P, deste modo, na prxima seo abordado o funcionamento de uma aplicao
de distribuio de contedo.
2.2.2 Distribuio de contedo utilizando redes P2P
A utilizao de aplicaes P2P para distribuio de contedo tem se tornado comum
entre usurios da internet. Estes servios fornecem ao usurio meios de publicar,
buscar e recuperar arquivos de outros pares ou de locais de armazenamento da
rede. Os contedos compartilhados nessas aplicaes, normalmente, incluem
24
arquivos de msicas, vdeos, fotos e programas. A Figura 5 apresenta uma rede
P2P formada por quatro ns, que trocam contedos atravs de uma aplicao P2P.
Figura 5 - Compartilhamento de contedo em uma rede P2P
Na Figura 5 as setas representam a troca de informaes entre os pares, no
qual eles podem tanto transmitir quanto receber informaes. A arquitetura da rede
que vai definir a ligao entre os pares, deste modo a prxima seo aborda as
caractersticas das arquiteturas P2P.
2.2.3 Arquiteturas P2P de Distribuio de Contedo.
As redes P2P so formadas dentro de uma rede j existente (normalmente IP), e so
chamadas de redes overlay (sobreposta). As redes overlay fornecem recursos como
arquitetura de roteamento robusta para atingir reas amplas, busca eficiente de
dados, localizao de pares prximos etc., alm de caractersticas como
autenticao, anonimato, escalabilidade e tolerncia a falhas (LUA etal, 2004, p1).
As redes overlay podem ser diferenciadas por sua organizao, na qual
possuem regras para garantir o funcionamento coerente. As redes sobrepostas
podem ser: estruturadas e desestruturadas.
Estruturadas
So redes com alto controle no qual o contedo colocado em locais especficos,
para que consultas sejam feitas de forma mais eficiente (LUA et al, 2004, p. 2). A
25
rede define chaves nicas para os dados, organiza os pares e atribui a chave para
um ponto, isto permite que sejam realizadas consultas mais eficientes. Geralmente
redes estruturadas so baseadas em DHT (Distributed Hash Tables), no qual so
utilizadas para organizar os processos (ex. localizao). Segundo Vestola (2010, p.
2) DHT so sistemas descentralizados e distribudos de prestao de servios de
pesquisa semelhante a uma tabela hash.
Em redes baseadas em DHT os pares e objetos possuem identificadores
nicos, conhecidos como chave. As DHTs armazenam a chave e valor de um item
nos pares da rede, no qual a chave utilizada para identificar o objeto, e o valor o
identificador do n que responsvel pelo item. Exemplos de arquiteturas
estruturadas so: Freenet, Chord, CAN.
Desestruturadas
Nas redes P2P no estruturadas a ligao entre os pares estabelecida de forma
facultativa e no existe correlao entre um par e o contedo administrado por ele
(LUA et al, 2004, p. 2). Deste modo um par pode se conectar a outro utilizando
somente seu endereo fsico. Os itens podem ser disponibilizados em qualquer
ponto da rede e para encontr-los necessrio utilizar a busca por inundao, que
consiste em difundir a requisio entre os pares. Exemplos de arquiteturas no
estruturadas so: Napster, Gnutella.
Para o desenvolvimento deste trabalho, proposta a utilizao de uma rede
P2P descentralizada, deste modo, a prxima seo aborda as caractersticas desse
tipo de arquitetura.
2.2.4 Arquiteturas Desestruturadas
As arquiteturas desestruturadas podem ser classificadas em: hibrida
descentralizada, parcialmente centralizada e puramente descentralizada.
Hibrida descentralizada
Neste tipo de rede, existe o papel de um servidor que executa aes como registro
de pares, servios de ndice (recursos disponveis), registro de grupos etc.
(VITHOFT, 2009, p. 10). Os pares da rede armazenam o contedo e compartilham
26
com a rede. Na Figura 6 apresentado o funcionamento de uma rede hibrida
descentralizada.
Figura 6 - Rede P2P Hibrida
Os clientes trocam informaes diretamente, porm existe intermdio do
servidor em casos de buscas, inicializao, publicao de recurso, conexo com a
rede etc.. Como mostrado na Figura 6, um par realiza uma consulta no servidor,
que retorna a informao de localizao de determinado dado. Quando obtida a
informao sobre a localizao, o par se conecta ao outro e realiza a transferncia
das informaes solicitadas. Exemplos de arquiteturas hbridas so: Napster e
Publios.
Parcialmente centralizada
Esta arquitetura caracterizada pela existncia de super-ns, que so definidos de
acordo com as caractersticas definidas pela rede (ANDROUTSELLIS-THEOTOKIS,
SPINELLIS, 2004, p. 346). Os super-ns possuem funes semelhantes de um
servidor, como exemplo indexao, cache e proxy para as requisies. Caso um
27
super-n falhe, a rede possui caractersticas para se auto organizar e definir um
novo. A Figura 7 mostra um exemplo de rede parcialmente centralizada.
Figura 7 - Rede P2P parcialmente centralizada
Os pares comuns ingressam e publicam recursos na rede com auxilio dos
super-ns. Como mostrado na Figura 7, os super-ns so interconectados, e em
conjunto com os pares comuns criam redes locais para realizar o processamento de
requisies de busca. Caso os pedidos no sejam encontrados na rede local, so
repassados para o super-n referente, que realiza o roteamento da requisio entre
os outros. Exemplo de arquitetura parcialmente centralizada o Kazaa.
Puramente descentralizada
Esta arquitetura caracterizada por no existir o papel de um servidor para
centralizar as aes da rede, todos os pares trabalham como servidor e cliente
(ANDROUTSELLIS-THEOTOKIS, SPINELLIS, 2004, p. 345). Os pares se conectam
diretamente, e no necessariamente precisam conhecer todos os outros. A Figura 8
mostra um exemplo de estrutura de uma rede puramente descentralizada.
28
Figura 8 - Rede P2P descentralizada
Na rede P2P mostrada na Figura 8 no existe um centralizador de aes para
comandar as requisies dos usurios, desta forma os pares da rede precisam se
comunicam diretamente para trocar informaes.
Como o objetivo do trabalho a implementao de uma aplicao P2P
descentralizada, esse tipo de arquitetura abordada na prxima seo.
2.2.5 Arquitetura Descentralizada
Em uma rede P2P descentralizada no se utiliza um servidor para comandar as
requisies enviadas na rede (BACKXet al, 2002, p. 2). Desta forma, no existe
pontos nicos de falha, tornando mais difcil a indisponibilidade da rede. De forma
arbitrria ou diretamente os pares descobrem a rede, no necessitando do servidor
para registr-los.
Qualquer par pode iniciar a rede e distribuir a tabela de vizinhos conectados
para novos membros. Caso algum dos pares se desconectar, a rede continua
funcionando, pois qualquer membro da rede pode fornecer os servios essenciais da
rede.
Um exemplo de arquitetura descentraliza a rede Gnutella
(ANDROUTSELLIS-THEOTOKIS E SPINELLIS, 2004, p. 344), que formada por
pares conectados por meio do protocolo IP, que operam como servidor e cliente e
possuem uma tabela de roteamento dinmico. A Figura 9 mostra como um par se
conecta a rede.
29
Figura 9 - Incluso de novo membro na rede
Na rede descentralizada mostrada na Figura 9, um novo par envia uma
requisio para outro j conectado a fim de se conectar na rede, e recebe uma
resposta informando se a entrada foi permitida ou no. Quando conectado, um par
envia mensagens de tempos em tempos para seus vizinhos com intuito de descobrir
novos pares.
As mensagens servem para que os membros possam se comunicar e trocar
informaes. No Gnutella as mensagens possuem em seu corpo atributos
importantes (KLINGBERG, T., MANFREDI, R., 2002, online), como:
Message ID: identificado nico da mensagem na rede;
PayloadType: determina o tipo de mensagem. Exemplo: Ping, PongBye
etc.;
TTL (Time To Live): controla a propagao da mensagem. No qual
definido um valor, que decrementado a cada par percorrido. Quando o
valor chega zero significa que no tempo especificado a consulta no
retornou nenhum objeto;
Hops: quantidade de vezes que a mensagem foi encaminhada;
PayloadLength: tamanho de bytes do corpo da mensagem.
As mensagens tm papel importante por ser o meio de comunicao entre os
pares da rede (ANDROUTSELLIS-THEOTOKIS E SPINELLIS, 2004, p. 344).
30
Existem mensagens de controle como, por exemplo, para ingressar na rede, verificar
status etc.; e para troca de dados, que so os arquivos. So definidos quatro tipos
de mensagens, que so:
Ping: pedido de um determinado host para se anunciar;
Pong: resposta a uma mensagem de ping.
Query: mecanismo para realizar busca de recursos disponveis na
rede;
QueryHit: resposta a uma consulta. Este tipo de mensagem retorna ao
usurio a localizao de dados encontrados da pesquisa
correspondente.
Por no existir um centralizador de aes, as mensagens so propagadas
pela rede por inundao, que consiste em distribuir a requisio entre os pares
vizinhos, que difunde a requisio entre outros membros. Na Figura 10 mostrada a
troca de mensagens a fim de encontrar um arquivo.
Figura 10 - Buscar um arquivo na rede descentralizada.
Para obter um determinado dado na rede, um par deve seguir alguns passos,
como mostrado na Figura 10, na qual a linha tracejada representa a ligao dos
pares e as setas indicam o caminho percorrido das mensagens. O peer A envia
uma mensagem de Query para seu vizinho peer B, que consequentemente distribui
31
a requisio com seu vizinho peer C, que repassa a mensagem aos vizinhos peer
D e peer E. Ao encontrar o arquivo no peer C, uma mensagem de QueryHit
retornada ao peer A, que originou a mensagem, contendo as informaes de
localizao do arquivo.
Em qualquer arquitetura P2P, as mensagens trocadas devem ser vistas e
modificadas somente por usurios autorizados, aumentando a segurana da rede, o
que discorrido na prxima seo.
2.2.6 Segurana P2P
Para garantir a segurana de uma rede algumas caractersticas devem ser levadas
em considerao (ANDROUTSELLIS-THEOTOKIS E SPINELLIS, 2004), entre elas
esto:
Integridade e autenticidade: garantir que as informaes no possam
ser modificadas por usurios no autorizados. E que membros no se
passem por outros.
Privacidade e confidencialidade: garantir que somente membros
autorizados possam ter acesso determinada informao.
Disponibilidade e persistncia: garantir que as informaes e a rede
sempre estejam disponveis quando o usurio desejar ou precisar.
As caractersticas citadas tendem a criar uma sensao de segurana no
usurio sobre os dados trocados na rede. Desta forma, necessrio que sejam
adotados mecanismos que no permitam acesso no autorizado e a integridade das
informaes. Entre os mecanismos existentes esto:
Auto certificao dos dados;
Esquema de Shamir Secret Sharing;
Retransmisso criptogrfica annima;
Public Key.
Auto certificao dos dados
Este mecanismo permite que um par ao recuperar um arquivo verifique sua
integridade. Isto feito por meio de um hash criptogrfico, que calculado no
32
momento que o arquivo postado e quando ele recuperado (ANDROUTSELLIS-
THEOTOKIS E SPINELLIS, 2004).
Esquema de Shamir Secret Sharing
Consistem em uma forma de criptografia, que gera uma chave para o arquivo
(ANDROUTSELLIS-THEOTOKIS E SPINELLIS, 2004). Esta chave dividida em
vrias partes e distribuda entre os pares da rede. Para recuperar o arquivo
necessrio unir todas as partes, afim de obter a original.
Retransmisso criptogrfica annima
A pessoa que ir publicar o contedo escolhe um conjunto de retransmissores e
envia para eles, utilizando conexes annimas, partes criptografadas do arquivo. Os
retransmissores, por sua vez, escolhem alguns pares para armazenar as partes que
foram recebidas. No instante que todas as partes so armazenadas, a pessoa
responsvel pela publicao destri as partes originais e anuncia o arquivo, com a
respectiva lista de retransmissores.
Quando o cliente quer recuperar um arquivo, ele entra em contato com os
retransmissores, que entram em contato com servidores aleatrios, para repassar
a requisio para os pares que possuem o contedo. Por fim, esses pares
decodificam o contedo e o enviam para o cliente.
Public Key
Mecanismo de criptografia que gerar duas chaves, chave pblica e chave privada,
no qual so relacionadas (MIZANI, 2005, p. 21-22). As informaes criptografadas
pelo mecanismo so recuperadas utilizando as duas chaves correspondentes. Em
uma rede P2P a chave pblica armazena junto ao arquivo, e somente um par que
possuir a chave privada pode decodificar e recuperar a informao, na Figura 11
mostra essa comunicao.
33
Figura 11 - Recuperando informao com chave pblica
Na Figura 11 mostrado como um par consegue recuperar uma informao,
em que o Peer A possui uma chave privada de determinado objeto presente no
Peer C. O Peer A envia uma query requisitando o arquivo, como ele possui a
chave privada correspondente a chave pblica do objeto, o Peer C retorna o que
foi solicitado. J o Peer B por no possu a chave privada necessria no recebe
nenhuma informao.
Esses mecanismos de segurana fornecem confiabilidade se forem includos
no desenvolvimento das aplicaes. Existem diversas tecnologias disponveis para
se aplicaes P2P, e que ainda fornece tais mecanismos, entre elas a JXTA. Que
de cdigo aberto e vem sendo bastante utilizada em diversos projetos. Suas
caractersticas so abordadas na prxima seo.
2.3 Tecnologia JXTA
O JXTA uma tecnologia de cdigo aberto, projetada para redes P2P, desenvolvida
pela Sun Microsystems, com a participao de empresas, universidades, entre
outros colaboradores. Segundo Gong (2001, p. 88) a tecnologia JXTA uma
plataforma de desenvolvimento computacional e de redes que foi projetada para
34
resolver problemas na computao distribuda, mais especialmente para sistemas
P2P.
Entre as tecnologias existentes para se desenvolver aplicaes P2P, o JXTA
tem ganhado afinidade entre os desenvolvedores, isto porque oferece
funcionalidades que facilitam a implementao de redes P2P, que possibilitam a
conexo dos pares independe da sua localizao, por ser uma ferramenta
independente de linguagem de programao e por funcionar em qualquer dispositivo
com tecnologia digital (SUN, 2001, p. 1).
Uma rede JXTA constituda por pares, que enviam anncios na rede e
ingressam em grupos de pares, utilizando mensagens e passando por canais virtuais
denominados Pipes, para a formao das redes P2P(SUN, 2001, p. 4). Esses pares,
anncios, grupo de pares etc., so denominados conceitos em uma rede JXTA. Os
conceitos existentes so utilizados pela tecnologia como forma de identificar uma
ao ou componente da rede, que so:
Peers: qualquer dispositivo (computador, telefones, sensores etc.) que
utilize qualquer protocolo JXTA, de forma que possam se comunicar
entre si considerado um Peer (Par). Cada par da rede funciona de
forma independente e assncrona e so identificados com um ID nico.
Os pares utilizam uma ou mais interfaces de rede para uso dos
protocolos JXTA, anunciadas na rede como um ponto de extremidade,
utilizadas para estabelecer conexes diretas entre os pares.
PeerGroups: um grupo de pares composto por um conjunto de
pares, geralmente, com interesses em comum. O JXTA no cita
normas de quando, onde e por que um grupo de pares deve ser criado.
Normalmente, o objetivo agrupar pares com interesses em comum,
criar um ambiente seguro etc.
Identifiers (ID): o JXTA utiliza identificadores de 128 bits,
denominados UUID, para referir-se a entidades (par, anuncio, servio
etc). Cada entidade possui um identificador exclusivo, e para expressar
esses identificadores o JXTA utiliza URI (Uniform Resource Identifier).
As ID so apresentadas em formato texto.
Advertisements: todos os recursos da rede so representados em
forma de anncios, como exemplo os pares, grupos de pares, servios
etc.. Os anncios, tipo de mensagem mais trocada no JXTA, so
35
metadados utilizados para representar recursos. Ele pode descrever a
disponibilidade (vida til) de um recurso na rede, e pode ser
republicado para aumentar a vida til de um recurso (SUN, 2007, p. x).
Messages: so informaes transmitidas por canais virtuais entre os
pares, que podem armazenar qualquer tipo de dado e so transmitidas
em formato XML ou em representaes binrias. As mensagens ainda
contm informaes de roteamento, direcionamento e a sequncia de
pares a ser percorrida at chegar ao destinatrio.
Pipes: so canais virtuais de comunicao unidirecionais e
assncronos que conectam dois ou mais pares da rede, que
possibilitam a troca de mensagens independente da sua localizao,
topologia e protocolo de rede. Os pipes podem ser do tipo Receiver
(recebe dados) ou Transmitter (transmissor de dados) (SUN, 2007, p.
xi) e oferecem dois tipos de comunicao:
o Ponto a ponto: conecta dois pontos da rede, um receptor e um
transmissor de dados.
o Propagao: faz a conexo de um ponto transmissor a vrios
outros pontos receptores. Todas as mensagens enviadas de um
ponto transmissor so enviadas aos pontos receptores.
Network Services: servios de rede podem ser vistos como um
conjunto de operaes disponibilizadas a serem utilizadas via rede. Os
pares trabalham em conjunto para publicar, descobrir e invocar
servios de redes. Estes servios so executados por um par da rede
por um grupo de pares.
O JXTA se diferencia das outras tecnologias existentes por oferecer recursos
que permitem que os pares conectados possam, facilmente: se localizar, se
comunicar e fornecer servios aos outros pares. Isso se deve a sua arquitetura e aos
seus protocolos, que so descritos nas prximas sees.
36
2.3.1 Arquitetura JXTA
A arquitetura da JXTA dividida em trs camadas, que so (2002, p. 3):
JXTA Core: comparada ao kernel de um sistema operacional, abriga as
funcionalidades primrias de uma rede P2P, entre elas comunicao (criao
de pares, descoberta, gesto de comunicao, roteamento etc.) e segurana.
JXTA Services: esta camada do JXTA composta por itens que no so
obrigatrios em uma rede P2P, mas, que so desejveis. Entre as
funcionalidades disponveis nesta camada esto busca, indexao, sistema
de armazenamento, compartilhamento de recursos, traduo de protocolo,
autenticao etc.. Esta camada oferece recursos necessrios para a
colaborao entre os pares, independente da plataforma.
JXTA Applications: abriga as aplicaes que utilizam a tecnologia como os
mensageiros instantneos, compartilhadores de arquivos etc.. Essas
aplicaes utilizam as funcionalidades das outras camadas.
A Figura 12 apresenta as trs camadas do JXTA, que abrigam os protocolos e
as funcionalidades necessrias para o funcionamento da rede P2P.
Figura 12 - Camadas JXTA (MAINBAUM, MUNDT. 2002, p. 3)
Na Figura 12 so apresentadas as camadas da arquitetura do JXTA, na qual
as funcionalidades bsicas para o funcionamento de uma rede P2P esto presentes
na camada JXTA Core e nas outras duas camadas, JXTA Services e JXTA
Applications, esto presentes os protocolos especficos de cada aplicao, que so
apresentados na prxima seo.
37
2.3.2 Protocolos JXTA
O JXTA oferece ao desenvolvedor um conjunto de protocolos que possibilitam aos
pares da rede se auto organizar e se autoconfigurar independente de sua posio na
rede e sem a necessidade de um servidor para guiar as aes (SUN, 2007, p. 2).
O JXTA oferece seis protocolos, sendo que, ao se implementar uma aplicao
P2P usando essa tecnologia, pelo menos um deles deve ser implementado, que so
eles:
Peer Endpoint Protocol: responsvel pelo roteamento de mensagens e
descobrir caminhos entre os pares para que as mensagens cheguem ao
destino. Este protocolo ignora a existncia de firewalls ou redes lgicas
(NAT), quando um par um roteador e possu a rota para o destino, a
mensagem enviada diretamente para o destino final, sem necessidade de
buscar novamente em outro roteador (GONG, 2001, p. 91);
Peer Resolver Protocol: permite a um par da rede emitir consultas genricas
como busca de parese grupos de pares e, posteriormente, identificar as
respostas correspondentes. Cada consulta ou resposta possui um
identificador nico (MAIBAUM, MUNDT, 2002, p. 4);
Peer Discovery Protocol: este protocolo permite que um par encontre recursos
anunciados na rede. Permite que o par encontre outros pares, grupo de
pares e anncios emitidos por estes. Pares que implementam esse protocolo
podem, ainda, ajudar outros na busca de recursos na rede (SUN, 2007, p.
32);
Pipe Binding Protocol: esta funcionalidade permite que sejam criados canais
virtuais de comunicao entre pares. Estes canais virtuais permitem criar,
abrir/resolver, fechar, excluir, enviar e receber operaes (SUN, 2007, p. 44);
Peer Information Protocol: permite que um par da rede saiba a situao de
outro par. Alm de obter informaes como trfego de carga, tempo de ativo
etc.. Um par da rede no precisa, obrigatoriamente, implementar este
protocolo, caso este no possua as mensagens de informaes sobre o par
so ignoradas (GONG, 2001, p. 91);
Peer Membership Protocol: por meio deste protocolo, os pares podem se
organizar e formar grupos com intuito de criar uma rede de segurana. Estes
38
pares utilizam este protocolo para ingressar ou sair de um grupo j existente
na rede, e ainda para descobrir grupos existentes (GONG, 2001, p. 91).
A Figura 13 mostra a ligao existente entre os protocolos e as camadas que
cada um compe.
Figura 13 - Protocolos JXTA (MAIBAUM, MUNDT. 2002. p. 4)
A Figura 13 mostra os protocolos do JXTA, as setas ligam os protocolos
comuns dos pares da rede. Os protocolos trabalham acima da camada de
transporte, e so agrupados em quatro camadas diferentes, como mostrado na
Figura 13. Na camada Endpoit existe o protocolo que realiza o roteamento de
mensagens e descobre caminhos entre os pares. A camada Resolver composta
pelo protocolo que permite ao par realizar consultas na rede e identificar resposta
para as buscas. A camada Peer caracterizada pelos protocolos que trabalham com
a descoberta de recursos na rede, a criao de canais entre os pares e ainda
funcionalidades para descobrir a situao de outros pares na rede. Por fim a camada
PeerGroup, que fornece servios relacionados a grupo. Essas camadas servem para
reunir protocolos com caractersticas em comum.
O objetivo deste trabalho utilizar a tecnologia JXTA na criao de
redes P2P para a realizao de backups cooperativos, por isso, a prxima seo
discorre sobre backup.
39
2.4 Backup Cooperativo
Com o crescimento do uso de computadores por usurios comuns e por empresas,
tem-se tornado comum a utilizao de dados digitais. Deste modo, a quantidade de
dados armazenados em computador cada vez maior, que podem ser documentos
importantes, softwares, mensagens de e-mail etc.. Dessa maneira, importante que
esses dados no sejam perdidos, afim de no causar prejuzos a quem precisa das
informaes, e uma forma de garantir isso a cpia de segurana, ou backup.
Segundo Faria (2010, p. 1) backup (ou cpia de segurana) consiste na
cpia de especficos (redundncia) para serem restaurados no caso da perda dos
originais. Existem diversas formas de realizar a cpia de segurana de arquivos,
que vo desde a cpia em discos at cpias em nuvem. Independente de como os
dados tenham sido armazenados, os backups so realizados para minimizar a
probabilidade de perda de dados.
Nos servios de backup cooperativos os recursos pertencentes a mltiplos
usurios so colocados juntos como em um sistema de armazenamento distribudo
para que cada um faa o backup dos dados do outro (LOEST, 2007, p. 32). Neste
caso, os usurios da rede disponibilizam espao de armazenamento em suas
mquinas para que outros usurios possam guardar seus arquivos. Assim, o usurio
garante que mais cpias estejam disponveis caso precise restaurar um arquivo
perdido.
No que diz respeito s necessidades dos usurios existem alguns tipos de
backup e no que diz respeito aos backups em rede podem existir duas topologias, os
backups centralizados e os backups descentralizados. Essas formas de backup so
abordadas na prxima seo.
2.4.1 Tipos de backup
Para garantir que integridade de seus arquivos, assim como as modificaes feitas,
os usurios tendem a realizar cpias de segurana de tempos em tempos. As
cpias evitam problema com a perda de dados no futuro. Deste modo necessrio
que o usurio determine estratgias para realizar estas cpias, pois de forma
aleatria, os dados ou modificaes, poderiam ser ignorados (JUNIOR, 2010, p. 13).
Para auxiliar os usurios a criarem suas estratgias foram definidos alguns tipos de
backup, que os mais comuns so: Completo Full, Incremental e Diferencial.
40
Completo - Full
Os dados so copiados de todos os arquivos ignorando se foram modificados ou
no. Esse tipo geralmente executado em intervalos de tempo maiores do que os
outros, pois o tempo de cpia pode ser muito grande dependendo do volume de
dados a ser gravado. Caso seja necessria uma restaurao dos dados, basta
executar a ltima cpia gravada.
Incremental
Nesse modelo de backup so realizadas cpias dos arquivos modificados desde a
ltima cpia completa ou cpia incremental. Na Figura 14 apresentado como os
dados de um backup incremental crescem durante um perodo de tempo.
Figura 14 - Backup incremental adaptado (IBM, 2004, online)
Na Figura 14 mostrado que uma cpia completa foi executada no domingo e
os arquivos modificados ao longo da semana so adicionados ao backup completo,
atualizando a cpia inteira. Nesse modelo, caso seja necessria uma restaurao,
basta executar a cpia completa.
Diferencial
Este tipo de backup bem parecido com o modelo incremental, mas, os dados
modificados ou criados so gravados em arquivos parte. Na Figura 15 mostrado
o crescimento de cpias utilizando o modelo diferencial.
41
Figura 15 Backup diferencial (IBM, 2004, online)
O modelo apresentado na Figura 15 mostra que foi criado um backup
completo e ao longo do perodo percorrido cpias menores so criadas, essas
cpias so de arquivos novos ou modificados. Nesse tipo de backup, caso seja
necessrio recuperar os itens, preciso restaurar a cpia completa e todos os outros
diferenciais criados depois dele.
Os tipos de backup citados so empregados de acordo com a necessidade do
usurio, quantidade de dados etc.. As polticas empregadas para a criao de cpias
de segurana pode usar todos os tipos de backup, de formas e ocasies distintas.
Por exemplo, uma empresa realiza diariamente backups diferenciais, e nos fins de
semana executa um backup completo.
As cpias podem ser armazenada em diversos lugares, como fitas, discos
externos etc. Com a disponibilidade de uma rede, os dados podem ser gravados em
outros computadores. Desta forma so definidas algumas formas de backup para
armazenamento em rede, e so abordados na prxima seo
2.4.2 Backup em rede
Utilizar computadores de uma rede para guardar arquivos pode ser uma alternativa,
considerando que as informaes ficam armazenadas em outros locais fsicos e,
caso a fonte original falhe, as cpias estaro protegidas e podero ser recuperadas.
Em redes locais, podem ser utilizados servidores para armazenar os dados,
porm, devem possuir grande capacidade de armazenamento, o que requer um alto
investimento. Uma alternativa para evitar gastos utilizar o espao de
armazenamento disponvel nas mquinas da rede para guardar cpias de
segurana. Deste modo existem duas topologias que podem ser empregadas aos
backups em rede que so: Backup centralizado e Backup descentralizado.
42
Backup centralizado
Em um ambiente no qual empregado o backup centralizado, os usurios utilizam
uma mquina central para armazenar as cpias de segurana de seus arquivos
(JUNIOR, 2010, p. 18). O computador que armazena esses backups, geralmente,
so servidores com grandes capacidades de armazenamento e, normalmente, so
utilizados em corporaes. Na Figura 16 mostrado um exemplo de funcionamento
do backup centralizado.
Figura 16 - Backup centralizado
Na Figura 16 mostrada a utilizao de um servidor para guardar cpias de
arquivos dos usurios da rede. No qual as estaes da rede efetuam cpias para o
disco do servidor e, tambm, realizam restaurao de cpias realizadas
anteriormente.
Backup descentralizado
Um ambiente descentralizado quando as mquinas da rede guardam cpias de
seus arquivos em mais de um local como forma de minimizar perdas em caso de
falhas (JUNIOR, 2010, p. 17). Deste modo, se ocorrer problemas em um dos locais
no qual o backup foi armazenado, a restaurao pode ser feita em outro local no
43
qual os dados foram armazenados. Um exemplo de ambiente descentralizado pode
ser observado na Figura 17.
Figura 17 - Backup descentralizado
Em um ambiente que utilizado backup descentralizado, as cpias de um
mesmo arquivo so replicadas em locais diferentes, como mostrado na Figura 17.
Uma estao da rede realiza a cpia de um arquivo e este armazenado em dois
servidores diferentes. Deste modo, caso um deles venha a falhar, o outro possui
uma cpia idntica dos dados.
Os conceitos citados durante o decorrer do referencial terico serviram como
base para a execuo do projeto. Os materiais utilizados durante a execuo, a
metodologia aplicada e os resultados dos projetos so mostrados nas sees
seguintes.
3 MATERIAIS E MTODOS
Nesta seo so apresentados os detalhes sobre a realizao do projeto, tais como
materiais utilizados no decorrer do trabalho, o conjunto de hardware utilizados e a
metodologia adotada no desenvolvimento da aplicao.
3.1 MATERIAIS
A primeira etapa do trabalho consistiu no estudo referente aos conceitos envolvidos
no projeto. Desta forma, diversas fontes bibliogrficas foram utilizadas, como livros,
dissertaes, artigos, teses, monografias etc.
Todas as etapas de implementao e testes foram realizados sobre o sistema
operacional Windows 7, tendo como hardware um computador Intel Core2Duo
E7500 2.93Mhz, 4GB de memria RAM.
No trabalho foram utilizados diversos materiais, que so divididos em duas
categorias: Hardware e Software.
Hardware
Como um dos objetivos do trabalho foi a implementao de uma rede Peer-to-Peer,
foi necessrio criar um ambiente de rede com algumas mquinas para validar o
funcionamento da aplicao.
Devido dificuldade da criao de um ambiente com mquinas reais, foi
decidido criar um ambiente virtual para simular uma rede de computadores. Neste
ambiente foram criadas trs mquinas virtuais sobre o hardware informado
anteriormente.
Cada mquina virtual foi configurada com 512 Mb de memria e disco rgido
de 10 Gigabytes. O sistema operacional escolhido foi o Windows XP, por no
necessitar de muitos recursos de hardware para seu funcionamento.
Software
Na fase de projeto da aplicao foi utilizado o software Microsoft Visio 2010 para a
criao dos diagramas de caso de uso, que descrevem funcionalidades que
45
necessitam da interao do usurio, e do diagrama de classes, que representa as
entidades presentes na aplicao.
Na fase de desenvolvimento foram utilizados os seguintes softwares:
Java, verso 7: linguagem utilizada para criar a aplicao de backup. Foi
escolhida por possuir quantidade superior de referncias sobre o JXTA na
verso JAVA, comparado outras linguagens de programao;
JXTA 2.5 verso Java: utilizada para desenvolvimento das
funcionalidades de uma rede P2P. Sendo o objetivo do trabalho utilizar
esta tecnologia, e seu uso foi definido sem comparar com outras.
JDom 2.0: fornece uma soluo completa para a manipulao de dados
XML, utilizado para acesso ao banco de dados da aplicao que em
arquivo XML. Ferramenta escolhida por ser open source e por fornecer as
funcionalidades necessrias para manipulao de arquivos XML;
VMWare Player: ferramenta gratuita utilizada para a criao das mquinas
virtuais, afim de simular uma rede de computadores. Por ser uma
ferramenta gratuita foi agregada ao trabalho;
IDE NetBeans verso 7.2.1: ferramenta gratuita utilizada para auxiliar no
desenvolvimento da interface grfica e dos cdigos;
Adobe Fireworks CS5: utilizado para manipulao das imagens e cones
presentes na aplicao;
Microsoft Visio 2010: ferramenta que permite a criao de diagramas
UML. Utilizado na criao de diagrama de classes e casos de uso.
As ferramentas foram utilizadas durante o processo de implementao da
aplicao e a maioria foram escolhidas por serem de cdigo aberto ou gratuitas,
alm da facilidade de se usar. As ferramentas auxiliaram durante o processo de
execuo do trabalho. A seguir apresentada a metodologia do trabalho, que o
detalhamento das tarefas executadas com intuito de desenvolver o projeto.
3.2 Metodologia
A primeira etapa do projeto consistiu na coleta de referencial terico sobre o domnio
do projeto, que envolve Sistemas Distribudos, P2P, JXTA e Backup cooperativo.
46
Paralelamente coleta, foi realizado o estudo dos materiais coletados e a
elaborao do referencial terico.
A segunda etapa do trabalho foram executadas as fases de projeto e
desenvolvimento de uma aplicao de backup P2P. A sequncia executada para a
realizao do projeto mostrada na Figura 18.
Figura 18 - Etapas de execuo do projeto
Na Figura 18 so mostradas as etapas executadas durante a realizao do
trabalho. No incio, na etapa de Coleta de requisitos, foi realizada uma pesquisa em
sistemas de backup e compartilhamento de informaes, com o intuito de verificar
requisitos bsicos que devem ser fornecidas ao usurio. A partir disso foram
definidos os requisitos da aplicao Peer Backup, que a implementao de uma
aplicao de backup P2P.
Aps a coleta de requisitos foram definidos requisitos no funcionais para a
implementao da aplicao, que so:
47
criao de rede P2P, de arquitetura descentralizada. Esta arquitetura foi
designada por ter a caracterstica de no precisar de um servidor para
comandar as aes, sendo possvel utilizar a capacidade j existente na
rede local;
envio dos arquivos completos para as mquinas da rede P2P, isto porque
as cpias ficaro em computadores pessoais dos usurios que decidirem
entrar na rede e no momento da restaurao pode ser que nem todos os
usurios estejam conectados, e caso os dados fossem separados em
partes ocasionaria problema na recuperao do arquivo;
uso de criptografia simtrica para garantir a privacidade e
confidencialidade. Definiu-se chave simtrica por no ser preciso o
compartilhamento da chave de criptografia, pois somente o dono dos
arquivos devem recuper-los e visualiz-los;
Por meio dos requisitos definidos, foi possvel ter uma base das necessidades
do software, e a partir da foi iniciado o processo de desenvolvimento da aplicao,
que consistiu em:
criao do diagrama de classes, que representa as classes desenvolvidas
na aplicao e seus respectivos relacionamentos. Por meio do diagrama
foi possvel definir as entidades a serem implementadas e as respostas
que o sistema deve fornecer ao usurio a cada ao.
elaborao dos cenrios de uso, que so possveis situaes em que um
usurio pode se deparar ao realizar uma ao via interface grfica como o
envio e recuperao de arquivos. Os cenrios descritos so baseados nos
casos de uso gerados, em que o usurio precisa interagir com a aplicao.
Foram utilizados para definir as funcionalidades referente a manipulao
de arquivos na rede P2P;
codificao, o produto da implementao, que aplicao propriamente
dita. Consiste na implementao das funcionalidades para a criao e
manuteno da rede P2P, para a manipulao do backup e na interface
grfica. Nesta fase foram realizadas as seguintes etapas:
48
o desenvolvimento da interface grfica, a partir dela os usurios
solicitam as aes, que fazem a manipulao dos arquivos e das
funcionalidades da rede;
o criao do modelo de dados, que responsvel por armazenar
informaes dos arquivos enviados. Foi utilizado como base de
dados um arquivo XML para armazenar os dados dos arquivos
enviados e um arquivo de texto para armazenar o nome do usurio,
dispensando a utilizao de um SGBD;
o desenvolvimento das funcionalidades para a criao da rede e dos
mtodos utilizados pela aplicao durante o funcionamento.
Aps a implementao, foi necessrio realizar a validao da aplicao, com
o intuito de verificar se os requisitos citados foram cumpridos. Os testes foram
realizados sobre um ambiente virtual para simular uma rede de computadores, isto
devido s dificuldades de se criar um ambiente real. Em um ambiente real a
aplicao pode sofrer variao, como velocidade de trfego de dados, bloqueios
realizados por firewalls etc, que impacta a anlise e medio de desempenho da
soluo.
Para a validao foram realizados os seguintes testes na aplicao, sendo
que estes foram definidos:
Teste de interface: realizado de forma manual com intuito de verificar o
comportamento geral da aplicao e se o sistema oferece ao usurio o
que proposto. Nesse teste foram verificados layout, criao e
autenticao da rede P2P, aes de envio, de recuperao de arquivos e
configurao do sistema. Para esse teste foram utilizados usurios e
arquivos fictcios;
Teste de privacidade e autenticidade: realizado com intuito de verificar se
os usurios que possuem os arquivos conseguem visualizar os dados de
outros usurios, o que no deve ocorrer. Para realizar a verificao foi
enviado um arquivo qualquer para backup e, depois, na mquina destino,
foram realizadas tentativas de visualizar utilizando uma aplicao qualquer
que leia o formato do arquivo enviado. A garantia da privacidade e
autenticidade acontece quando um usurio da rede possui o arquivo, mas
no consegue abri-lo sem a chave secreta.
49
Essa seo apresentou as etapas executadas para o desenvolvimento do
projeto. Os resultados obtidos, os artefatos gerados e a descrio dos testes esto
apresentados na prxima seo.
50
4 RESULTADOS E DISCUSSES
O presente trabalho consistiu no desenvolvimento de uma aplicao de
backup P2P utilizando a plataforma JXTA, denominada Peer Backup. Essa aplicao
fornece ao usurio funcionalidades para a criao de cpias de segurana em
computadores de uma rede local, utilizando uma rede lgica P2P sobreposta a rede
fsica. Com isso, permite que os usurios se comuniquem diretamente e que
compartilhem dados e recursos como memria ram, espao em disco, ciclos de cpu.
Os pares da rede P2P so os usurios que esto utilizando a aplicao nos
computadores da rede. A comunicao entre os pares pode ser referente a busca
por pares e anncios e manipulao de arquivos. Cada par utiliza uma chave de
segurana que serve para cifrar arquivos e conectar-se aplicao.
Antes de serem enviados aos outros pares, os arquivos so cifrados com a
chave do usurio e os nomes so alterados e codificados utilizando o algoritmo
base64, com intuito de que outros usurios no tenham acesso ao nome e formato
de arquivo. Os dados so enviados integralmente para os pares, desta forma, para a
recuperao preciso da chave do usurio e um membro da rede possuir o arquivo.
importante ressaltar que as informaes enviadas aos outros pares devem
ser lidas e modificadas apenas por usurio que possui a chave de criptografia
referente ao arquivo. Para garantir a privacidade dos dados contidos nos arquivos,
utilizada a criptografia simtrica, na qual o usurio fornece uma chave que aplicada
na cifragem dos dados.
Os critrios e requisitos da aplicao so apresentados na metodologia, e
foram a base para o seu desenvolvimento. A partir dessas definies foram gerados
os artefatos de software que so apresentados no decorrer desta seo na seguinte
ordem:
Arquitetura da aplicao;
Estrutura interna da aplicao;
Cenrios possveis no uso da aplicao;
A aplicao Peer Backup; e
Testes.
51
4.1 Arquitetura da aplicao Peer Backup
As estruturas baseadas em redes P2P se distinguem pela existncia ou ausncia de
servidores que centralizam aes de controle da rede P2P. Nesse contexto, as redes
P2P so divididas em hbridas, parcialmente centralizadas e descentralizadas,
conforme foi descrito na seo 2.2.4.
A aplicao Peer Backup tem por objetivo utilizar recursos disponveis nas
mquinas de uma rede local, por isso foi utilizada a arquitetura descentralizada, que
dispensa a necessidade de aquisio de qualquer tipo de mquina para comandar
as aes da rede.
Por ser descentralizada, na Peer Backup os pares trabalham como servidor
e/ou cliente, comunicando-se diretamente entre si e podendo iniciar uma rede P2P
ou ingressar em uma j existente. A Figura 19 mostra a arquitetura da aplicao.
Figura 19 - Arquitetura Peer Backup
Na Figura 19 mostrado vrios pares conectados em uma rede P2P, sendo
que podem trabalhar como cliente ou servidor. Os pares que trabalham como cliente
enviam requisies para o par servidor atual. Existem mecanismos que selecionam
os pares com maior capacidade computacional para servir de servidor, na aplicao
caso o par que est atuando como servidor se desconecte da rede,
automaticamente e de forma aleatria, outro escolhido, evitando que a rede fique
indisponvel. Com isso, garante-se a tolerncia a falhas.
52
A prpria aplicao presente em cada computador fornece as funcionalidades
de manipulao da rede (iniciar, autenticar, ingressar etc.) e realiza todo o processo
de forma transparente ao usurio. Assim, os pares da rede so procurados e
encontrados pela aplicao e no preciso que o usurio conhea informaes
sobre a localizao fsica dos demais ns como, por exemplo, endereo IP.
A implementao da aplicao foi feita em camadas, separando as
funcionalidades disponveis ao usurio das que so de uso exclusivo da aplicao. A
Figura 20 mostra a diviso entre as camadas do sistema.
Figura 20 - Funcionamento do Peer Backup
A aplicao Peer Backup se divide em duas camadas: interface e
funcionamento interno, como mostrado na Figura 20. A camada de interface fornece
ao usurio uma interface grfica, enquanto a camada de funciomento interno
responsvel pelos servios de rede e fornecer suporte camada superior.
A camada interface se refere parte visual da aplicao, atravs da qual o
usurio pode solicitar as aes de backup, como: envio, busca e recuperao de
arquivos. Essas aes utilizam mtodos existentes na camada inferior.
A camada funcionamento interno transparente ao usurio e fornece servios
camada de interface, como: a criao da rede, autenticao de usurios e
53
comunicao entre os pares. Nessa camada so implementados os mtodos de
manipulao da rede, que implementam funcionalidades como verificao de
integridade dos dados, localizao de pares etc..
Na camada de funcionamento interno as tarefas que mantm a rede em
funcionamento so executadas por threads, de modo que as atividades de controle
so executadas em paralelo aos outros servios de rotina (autenticao do usurio,
recuperao de arquivos etc.).
As camadas do sistema possuem dependncias e trabalham em conjunto,
com intuito de executar as aes solicitadas pelo usurio. Os mtodos de
gerenciamento de arquivo so implementados na camada de funcionamento interno,
mas por meio da interface que o usurio faz as requisies das aes
implementadas pelos mtodos.
Para auxiliar no desenvolvimento das funcionalidades descritas nas camadas
do sistema foram gerados artefatos, que so detalhados na prxima seo.
4.2 Diagrama de classes
O diagrama de classes representa a estrutura da aplicao, como as classes
e o relacionamento entre elas, alm de demonstrar os atributos/propriedades e as
operaes do sistema referentes ao sistema. O diagrama de classes da aplicao
Peer Backup mostrado na Figura 21.
54
+toString()()
+getId()()
+setId(id)()
+getNome()()
+setNome(String nome)()
+getTamanho()()
+setTamanho(long tamanho)()
+Cifrar_Nome(String nome)()
+Decifrar_Nome(String nome)()
+Criptografar(String chave,Peer p)()
+getDataEnvio()()
+setDataEnvio(Calendar data)()
-id : String
-nome : String
-tamanho : long
-data_envio : calendar
-caminho_original : String
Classe::Arquivo
+run()()
-Grupo_Backup
-Query_Busca
-List_Requestor
-Tempo_Inicio_Thread
-Opcao
-Arquivos
Classe::Arquivo_Buscar_Thread
+Download(PeerGroup g, ContentAdvertisement c, File f, Object [] o)()
+notifyUpdate()()
+notifyDone()()
+notifyFailure()()
-Objetos : Object []
Classe::Download
+run()()
-Grupo_Backup : PeerGroup
-Anuncio : ContentAdvertisement
-Arquivo : File
-Objetos : Object []
Classe::Download_Thread
+Atualizar_Lista_Arquivos()()
+to16bytes(senha)()
+Login()()
+Verifica_Base()()
+Atualizar_Lista_Pares()()
+Carregar_Base()()
+Buscar_Meus_Arquivos()()
+main()()
-Peer : Peer
-Arquivos : ArrayList
-Rede : JXTA_Service
-Pares_Thread : Peer_Thread
-Arquivo_Enviar : Arquivo
-Compartilhar : Share
-Logado : boolean
-inDownload : boolean
-Arquivos_Busca : ArrayList
Classe:Interface
+Comecar()()
+Iniciar_Rede()()
+Force_Iniciar_Grupo()()
+Pesquisar_Grupo_Existente()()
+Ingressar_Grupo(PeerGroup grupo)()
+Log(String texto)()
+Criar_Novo_Grupo()()
+getGrupo()()
-GrupoGlobal : PeerGroup
-Grupo_Backup : PeerGroup
-DS_Padrao : DiscoveryService
-DS_Backup : DiscoveryService
-PGA_Backup : PeerGroupAdvertisement
-Grupo_Backup_ID : String
-Auth : Authenticator
Classe::JXTA_Service
+notifyMoreResults()()
-Resultado_Busca : ContentAdvertisement[]
-Opcao : int
-Thread_Manager : ThreadPoolExecutor
-Grupo_Backup : PeerGroup
-Arquivos : ArrayList
Classe::ListRequestor
+gets()()
+sets()()
+verifyPassword(senha)()
-id : String
-nome : String
-password : String
Classe:Peer
+discoveryEvent(DiscoveryEvent d)()
+Gerar_Lista_Pares(Enumeration e)()
+sets()()
+run()()
-Grupo_Backup : PeerGroup
-DS_Padrao : DiscoveryService
-Lista_Pares : JList
-Tempo_Inicio_Thread : long
Classe::Peer_Thread
+Iniciar_CMS()()
+run()()
-Grupo_Backup : PeerGroup
-Pasta_Shared : File
-cms : CMS
Classe::Share
Figura 21 - Diagrama de classes da aplicao
Como mostrado no diagrama de classes da Figura 21, o sistema possui 10
classes. A classe Interface referente a parte grfica do sistema, sendo
responsvel por controlar o sistema e acionar mtodos de outras classes. As demais
classes do sistema, que fazem parte da camada de Funcionamento Interno,
possuem relacionamento direto ou indireto com a classe Interface
O detalhamento da classe Interface, de seus atributos e mtodos, est
presente na Tabela 2.
Tabela 1 - Classe Interface
Classe: Interface
55
Responsvel pela inicializao da aplicao, chamada de mtodos e interface visual
do sistema. Interage diretamente com o usurio.
Atributos:
Peer: referente ao usurio (classe Peer) que est conectado ao sistema;
Arquivos: lista de arquivos enviados pelo usurio;
Rede: instncia da classe JXTA_Service, responsvel por iniciar e controlar
a rede;
Pares_Thread: servio utilizado para realizar busca por pares conectados
rede;
Arquivo_Enviar: referente ao arquivo que o usurio pretende enviar;
Compartilhar: instncia de File referente pasta que possui os arquivos a
serem compartilhados pelo usurio;
inDownload: informa se existe um download em execuo;
Arquivos_Busca: lista de arquivos recuperados em uma varredura nos
pares online.
Mtodos:
Atualizar_Lista_Arquivos(): atualiza lista de arquivos enviados pelo
usurio;
to16bytes(): transforma a senha do usurio em um objeto de 16 bytes;
Login(): verifica se o usurio cadastrou uma senha para acessar o
sistema, e responsvel por permitir o acesso interface visual;
Verifica_Base(): faz a verificao e criao das pastas e arquivos de
dados necessrios para o funcionamento do sistema;
Atualizar_Lista_Pares(): realiza atualizao da lista de pares
conectados rede;
Carregar_Base(): carrega os arquivos de configurao referente aos
arquivos e dados do usurio;
Buscar_Meus_Arquivos(): inicia um servio de busca por arquivos nos
outros pares da rede;
Main(): mtodo de inicializao da aplicao.
56
Ao iniciar a Interface, so enviadas requisies para a classe
JXTA_Service, que implementa os servios de rede e inicia os servios da
tecnologia JXTA. Aps o usurio conectar-se ao sistema utilizando sua chave
secreta, a interface grfica do sistema exibida e so executados os processos
necessrios para o incio da rede, autenticao de usurios e comunicao entre os
pares.
Os mtodos e atributos da classe JXTA_Service so mostrados na Tabela
3.
Tabela 2 - Classe JXTA_Service
Classe: JXTA_Service
Contm as funcionalidades de iniciar e controlar a rede P2P.
Atributos:
GrupoGlobal: instncia de PeerGroup, grupo P2P novo reservado a iniciar
a rede;
Grupo_Backup: instncia PeerGroup referente ao grupo P2P reservado
para usurios que utilizam a aplicao;
DS_Padro: instncia de servio padro de descoberta de redes e dados
utilizado para buscar servios de rede disponveis;
DS_Backup: instncia de DescoveryService responsvel por servio da
rede backup, responsvel pela descoberta de servios da rede backup;
PGA_Backup: instncia de PeerGroupAdvertisement, responsvel pelos
anncios no grupo JXTA da rede;
Grupo_Backup_ID: identificao JXTA da rede;
Auth: credenciais de autenticao do usurio na rede;
Mtodos:
Comecar(): responsvel por executar os mtodos de criao, busca e
autenticao de grupo;
Iniciar_Rede(): inicia a rede P2P;
Forcar_Iniciar_Grupo(): faz requisio de criao de grupo e insere o
par n
Top Related