95
Jan Tarik Martins Nazorek DESENVOLVIMENTO DE UM SOFTWARE DE BACKUP DESCENTRALIZADO, UTILIZANDO A PLATAFORMA JXTA Palmas 2013

Desenvolvimento de uma ferramenta de backup descentralizada utilizando JXTA

Embed Size (px)

DESCRIPTION

Desenvolvimento de uma ferramenta de backup descentralizada utilizando JXTA

Citation preview

  • 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