Aplicações Peer-to-Peer

Transcrição

Aplicações Peer-to-Peer
UNIVERSIDADE DE SÃO PAULO
INSTITUTO DE CIÊNCIAS MATEMÁTICAS E DE COMPUTAÇÃO
Pós-Graduação em Computação e Matemática Computacional
Sistemas Distribuídos – Prof. Marcos José Santana Aplicações Peer-to-Peer
Vânia de Oliveira Neves São Carlos, novembro de 2007
UNIVERSIDADE DE SÃO PAULO
INSTITUTO DE CIÊNCIAS MATEMÁTICAS E DE COMPUTAÇÃO
Pós-Graduação em Computação e Matemática Computacional
Sistemas Distribuídos – Prof. Marcos José Santana Resumo O presente trabalho tem por objetivo apresentar a descrição de algumas aplicações Peerto-Peer. Inicialmente ele apresenta as definições deste tipo de aplicação e descreve sua
arquitetura. Em seguida, apresenta uma classificação das principais aplicações P2P e
quais aplicações fazem parte dessa classificação, descrevendo com maiores detalhes a
mesma.
UNIVERSIDADE DE SÃO PAULO
INSTITUTO DE CIÊNCIAS MATEMÁTICAS E DE COMPUTAÇÃO
Pós-Graduação em Computação e Matemática Computacional
Sistemas Distribuídos – Prof. Marcos José Santana Índice
1.
Introdução ............................................................................................................................. 2
2.
Arquitetura ............................................................................................................................ 4
Arquitetura Centralizada ........................................................................................................... 4
Arquiteturas Peer-to-Peer não estruturadas ............................................................................... 5
Arquiteturas Peer-to-Peer estruturadas...................................................................................... 6
3.
Aplicações P2P...................................................................................................................... 8
Comunicação e Colaboração: .................................................................................................... 8
Msn Messenger ..................................................................................................................... 8
Yahoo! Messenger ................................................................................................................ 8
Computação Distribuída ............................................................................................................ 8
Seti@Home ........................................................................................................................... 9
Compartilhamento de Arquivos (Distribuição de Conteúdo) .................................................... 9
Napster .................................................................................................................................. 9
Gnutella ............................................................................................................................... 10
Freenet ................................................................................................................................. 11
FastTrack/ KaZaA ............................................................................................................... 13
BitTorrent ............................................................................................................................ 13
Sistema de armazenamento de arquivos em rede (network storage) ...................................... 14
Transmissão de dados (overlay multicast) .............................................................................. 14
4.
Conclusão ............................................................................................................................ 16
5.
Referências Bibliográficas .................................................................................................. 17
1 UNIVERSIDADE DE SÃO PAULO
INSTITUTO DE CIÊNCIAS MATEMÁTICAS E DE COMPUTAÇÃO
Pós-Graduação em Computação e Matemática Computacional
Sistemas Distribuídos – Prof. Marcos José Santana 1.
Introdução Este trabalho é parte da disciplina SCE-5777 - Sistemas Distribuídos e tem como
objetivo apresentar e descrever as aplicações peer-to-peer. A seção seguinte apresenta
uma classificação da arquitetura desses sistemas. A seção 3 descreve as aplicações P2P
mais comumente usadas bem como suas categorias. Na seção 4 são realizadas algumas
considerações gerais.
Há várias definições de sistemas Peer-to-Peer (P2P) na literatura e não existe um
acordo entre o que é e o que não é um desses sistemas e quais seriam suas principais
características. Um primeiro conceito seria de arquitetura distribuída completamente
descentralizada onde todos os nós possuem funcionalidades e tarefas equivalentes.
Porém, essa definição excluiria várias aplicações que são aceitas como peer-to-peer, tais
como o Napster e Kazaa.
[1] definiu como sendo o seguinte: “P2P é uma classe de aplicações que levam
vantagens de recursos – armazenamento, ciclos de CPU, conteúdo, presença humana –
disponíveis nas bordas da Internet”. Esta definição inclui sistemas que conta com
servidores centralizados, assim como várias aplicações no campo da Computação em
Grade [1].
Segundo [1], os sistemas peer-to-peer são assim chamados não por causa de sua
operação interna ou arquitetura, mas como resultado de como eles podem ser percebidos
externamente, ou seja, se eles dão a impressão de fornecer uma interação direta entre
computadores. Como resultado, diferentes definições de peer-to-peer são aplicados para
acomodar os vários casos de sistemas ou aplicações.
Ainda segundo esse autor, há duas características essenciais presentes em sistemas
P2P. São elas:
•
•
O compartilhamento direto de recursos entre nós, preferivelmente sem requerer
a intermediação de um servidor centralizado. Esses podem ser usados para
algumas tarefas específicas (como adicionar novos nós a rede, obter chaves
globais para um dado criptografado).
Tolerância a falhas e capacidade de auto-organização, tendo como norma
habilidade para tratar a instabilidade, conectividade variável e população de nós
transientes. Também deve se adaptar automaticamente a falhas tanto em
conexões de redes quanto em computadores. Esta tolerância a falhas e a
capacidade de auto organização sugerem a necessidade de topologia de rede
adaptável que mudará a medida que os nós entrarão ou sairão e a conectividade
da rede falhará ou se recuperará, funcionando para manter sua conectividade e
desempenho.
2 UNIVERSIDADE DE SÃO PAULO
INSTITUTO DE CIÊNCIAS MATEMÁTICAS E DE COMPUTAÇÃO
Pós-Graduação em Computação e Matemática Computacional
Sistemas Distribuídos – Prof. Marcos José Santana Dessa forma, [1] propõem a seguinte definição:
“Sistemas peer-to-peer são sistemas distribuídos consistindo de nós interconectados
capazes de se auto-organizar em topologias de rede overlay com o propósito de
compartilhar recursos tais como conteúdo, ciclos de CPU, armazenamento e largura de
banda, capazes de se adaptarem a falhas e acomodar populações transientes de nós
enquanto mantém conectividade aceitável e desempenho, sem necessitar da
intermediação ou apoio de uma entidade central”.
Essa definição ainda exclui sistemas que são considerados peer-to-peer por outras
definições.
Uma outra maneira de descrever sistemas P2P, é pensar a respeito de propriedade:
Quem é o dono do hardware que os serviços estão rodando? [5]
3 UNIVERSIDADE DE SÃO PAULO
INSTITUTO DE CIÊNCIAS MATEMÁTICAS E DE COMPUTAÇÃO
Pós-Graduação em Computação e Matemática Computacional
Sistemas Distribuídos – Prof. Marcos José Santana 2.
Arquitetura Existem diferentes categorizações em relação a arquitetura de sistemas P2P. Alguns
autores classificam como sendo Centralizada, Descentralizada e Hierárquica. Outros
como Centralizada, Inundação e Tabela Hash Distribuída (DHT). Nesse monografia
será abordada a seguinte arquitetura: Centralizada, Descentralizada Não Estruturada e
Descentralizada Estruturada.
Arquitetura Centralizada
Nesse tipo de arquitetura existe uma base centralizada com a localização dos
recursos do sistema, com informações de todos os participantes da comunidade. Os
peers conectam-se a essa base, informando todos os dados que ele deseja compartilhar
na rede. Essa base atualiza suas informações para que fique disponível para consulta dos
usuários.
Quando um usuário deseja buscar um determinado arquivo, ele faz a pesquisa no
servidor que escolhe o peer mais adequado. Então, a troca de arquivos será realizada
diretamente entre os dois peers. A Figura 1, retirada de [2], exemplifica o
funcionamento desse tipo de arquitetura. Em 1, um novo cliente conecta ao servidor e
envia uma lista com os dados que deseja compartilhar. Em 2, o cliente, já conectado, faz
uma busca de um determinado arquivo. Em seguida, em 3, o servidor retorna a pesquisa
com o endereço dos nós que contém o item pesquisado. Dessa forma, o cliente conecta
ao nó que contém o arquivo (4) e finalmente, em 5, a transferência do arquivo é
realizada entre os nós.
4 UNIVERSIDADE DE SÃO PAULO
INSTITUTO DE CIÊNCIAS MATEMÁTICAS E DE COMPUTAÇÃO
Pós-Graduação em Computação e Matemática Computacional
Sistemas Distribuídos – Prof. Marcos José Santana Figura 1 ‐ Funcionamento de uma rede centralizada
Uma das vantagens neste tipo de sistema é que se o arquivo estiver em algum nó
da rede, ele será encontrado. O que nem sempre acontece com os outros modelos. Além
disso, as buscas são facilmente implementadas. A grande desvantagem é que há um
ponto central de falhas. Se esse ponto falhar a rede toda falha. Outra desvantagem é que
pode gerar limites de escalabilidade [2].
Arquiteturas Peer-to-Peer não estruturadas
Nesse tipo de arquitetura, a rede não possui um servidor centralizado e nem um
controle preciso sobre a topologia e localização dos arquivos. Quando um nó deseja
entrar na rede, ele descobre alguns outros nós já presentes e se conecta arbitrariamente
de modo não estruturado a alguns deles. A idéia é que cada nó mantenha uma lista de
vizinhos (que foi construída de modo mais ou menos aleatório). Quando um nó precisa
pesquisar um dado específico, ele manda uma mensagem a todos os seus vizinhos.
Esses avaliam a mensagem e verificam se tem o dado pesquisado. Se tiver, manda uma
mensagem de volta ao nó de onde se originou a pesquisa informando o seu endereço.
Caso contrário, incrementa o número de saltos da mensagem (hop count) e repassa para
todos os seus vizinhos. Se o número de saltos ultrapassar o time-to-live (TTL), o
repasse de mensagens é interrompido. Esse é um mecanismo de inundação controlada
por TTL. A Figura 2, retirada de [3], mostra o funcionamento desse mecanismo.
5 UNIVERSIDADE DE SÃO PAULO
INSTITUTO DE CIÊNCIAS MATEMÁTICAS E DE COMPUTAÇÃO
Pós-Graduação em Computação e Matemática Computacional
Sistemas Distribuídos – Prof. Marcos José Santana Figura 2 ‐ Mecanismo de Inundação
A desvantagem dessa arquitetura é que elas não são escaláveis pois necessitam
de um grande poder de processamento e largura de banda. Além disso, não oferecem
garantia quanto à alcançabilidade dos recursos ou ao tempo necessário para encontrálos. Também é difícil encontrar o arquivo desejado sem distribuir a query amplamente
[2,7].
A vantagem é que eles podem acomodar facilmente uma população de nós altamente
transientes [5].
Arquiteturas Peer-to-Peer estruturadas
Nesse tipo de arquitetura, a rede não possui um servidor centralizado de diretório de
informações, mas tem uma estruturação significativa entre os nós. Surgiu
principalmente para tentar preencher a lacuna dos sistemas não-estruturados e dos
sistemas centralizados. Esse tipo de arquitetura cria as conexões entre os nós seguindo
uma estrutura bem definida. Além disso, possuem garantias de alcançabilidade dos
recursos, oferecem balanceamento automático de carga e auto-organização, facilitando a
localização dos dados.
A conexão entre os nós é feita tendo como base o identificador do nó, que
geralmente é obtido com alguma função de hash segura calculado sobre alguma
informação única do nó (por ex., endereço IP). Como as conexões entre os nós são feitas
conforme um protocolo pré-estabelecido, isso possibilita que a pesquisa para os
recursos seja modelada através de um processo iterativo determinístico, que garante a
alcançabilidade dos dados, ao invés de uma busca baseada em inundação no grafo de
conexões.
6 UNIVERSIDADE DE SÃO PAULO
INSTITUTO DE CIÊNCIAS MATEMÁTICAS E DE COMPUTAÇÃO
Pós-Graduação em Computação e Matemática Computacional
Sistemas Distribuídos – Prof. Marcos José Santana Os principais algoritmos que implementam esse modelo são: Chord, CAN, Tapestry
e Pastry. A responsabilidade destes algoritmos é manter a topologia da rede consistente.
A vantagem dessas redes é que elas são muito úteis para criação de aplicações que
requerem buscas rápidas, escaláveis e confiáveis por pares únicos de chave-valor. A
desvantagem é que é difícil manter a estrutura requerida para roteamento em uma
população de nós muito transiente. [1, 2]
7 UNIVERSIDADE DE SÃO PAULO
INSTITUTO DE CIÊNCIAS MATEMÁTICAS E DE COMPUTAÇÃO
Pós-Graduação em Computação e Matemática Computacional
Sistemas Distribuídos – Prof. Marcos José Santana 3.
Aplicações P2P De acordo com [1], as arquiteturas peer-to-peer podem ser empregadas por uma variedade
de diferentes categorias de aplicação, na qual incluem as seguintes:
Comunicação e Colaboração:
Nesta categoria estão os sistemas que fornecem a infra-estrutura para facilitar a
comunicação e a colaboração, geralmente em tempo-real, entre os peers (usuários). As
aplicações dentro dessa categoria permitem que os usuários se comuniquem através de voz,
mensagens de texto, imagens gráficas e arquivos gerais de forma direta, sem passar por um
servidor. Exemplos incluem Skype, aplicações de mensagem instantânea como ICQ, MSN,
Jabber, chat, como IRC. Abaixo segue uma breve descrição de algumas destas aplicações:
Msn Messenger
Uma das aplicações de mensagem instantânea mais populares. Uma de suas
funcionalidades é a sincronização de vídeo e voz fornecendo, dessa forma, comunicação em
tempo real.
Yahoo! Messenger
Além das características comuns a todas as aplicações desta categoria, o
Yahoo!Messenger oferece boa integração com os serviços e conteúdos do Yahoo!. [3, 8]
Computação Distribuída
A idéia neste tipo de arquitetura é utilizar a capacidade ociosa dos computadores
que fazem parte do sistema. Para isso, há uma coordenação central que decompõe uma
tarefa que possui alto poder de processamento em pequenas unidades e as distribui para
diferentes peers. Estes, por sua vez, executam seus trabalhos correspondentes e retorna os
resultados para a coordenação. Como exemplos de aplicações nesta categoria pode-se citar
o Seti@Home, genome@home, OurGrid, entre outros.
8 UNIVERSIDADE DE SÃO PAULO
INSTITUTO DE CIÊNCIAS MATEMÁTICAS E DE COMPUTAÇÃO
Pós-Graduação em Computação e Matemática Computacional
Sistemas Distribuídos – Prof. Marcos José Santana Seti@Home
Segundo [3], o Seti@Home tem um poder computacional de aproximadamente 25
TFlops/s (trilhões de operações de ponto flutuante por segundo) e conta com mais de três
milhões de computadores. O objetivo desse projeto é procurar sinal inteligente através do
processamento dos sinais obtidos por meio de um rádio telescópio.
O Seti@Home funciona da seguinte maneira: O problema computacional a resolver
é dividido em pequenas partes independentes. O processamento de cada uma dessas partes
é feito em um computador individual na rede e os resultados são coletados por um servidor
central, que por sua vez, distribui as tarefas entre os computadores na Internet. Um software
cliente é instalado em cada computador, e é este software quem executa a computação
requisitada pelo servidor. Esse software cliente também permite que configure opções de
quando o processamento será realizado. Pode-se optar, por exemplo, que seja executado
apenas toda vez em que o computador entre em período de inatividade. Após o término da
computação, o resultado é retornado para o servidor e uma nova tarefa é alocada para o
cliente. [3]
Compartilhamento de Arquivos (Distribuição de Conteúdo)
Nesta categoria estão as aplicações P2P mais populares. Seus objetivos são permitir
que usuários possam disponibilizar arquivos cujo conteúdo não mudará e disseminar para
qualquer usuário, geograficamente espalhado pelo mundo. Geralmente, qualquer usuário
poderá publicar um arquivo no sistema. As principais questões técnicas envolvendo
sistemas de compartilhamento de arquivo são o consumo da largura de banda da rede, a
segurança e sua capacidade de pesquisa [3,8].
Abaixo segue uma descrição mais detalhada das principais aplicações de compartilhamento
de arquivo.
Napster
O Napster foi um dos precursores em termos de compartilhamento de arquivo e
obteve um enorme sucesso compartilhando arquivos de música. Ele possuía um servidor
central que armazenava uma lista com as músicas disponibilizadas pelos usuários e onde
elas estavam localizadas. Utilizando um programa cliente, o usuário se conectava ao
servidor central e fornecia uma lista das músicas que estava compartilhando. Para buscar
por um arquivo, o programa cliente faz uma consulta ao servidor que responde se o arquivo
9 UNIVERSIDADE DE SÃO PAULO
INSTITUTO DE CIÊNCIAS MATEMÁTICAS E DE COMPUTAÇÃO
Pós-Graduação em Computação e Matemática Computacional
Sistemas Distribuídos – Prof. Marcos José Santana existe ou não e, caso exista, onde ele está localizado. Os arquivos são transferidos
diretamente entre a fonte e a origem sem intervenção do servidor, utilizando o protocolo
HTTP [9]. O esquema de funcionamento é semelhante ao da Figura 1.
Segundo [5], o Napster não oferece uma solução P2P aceitável, isto porque embora
a transferência dos arquivos ocorra de forma distribuída, pelo menos as descrições do
conteúdo compartilhado e a forma de como acessá-lo são controlados pelo servidor central.
O conteúdo predominante que o Napster distribuía era protegido por copyright, não
podendo, portanto, ser copiado por outros usuários e como a parte P2P do seu protocolo
não funcionava sem a parte centralizada, ele tornou-se um alvo fácil. Hoje o conteúdo que o
Napster disponibiliza é legal, porém o mesmo não possui mais tanto apelo [8,2].
Gnutella
A rede Gnutella utiliza a arquitetura descentralizada e não estruturada. Dessa forma,
como não há uma coordenação central, os usuários se conectam um ao outro diretamente
através de um software que implementa seu protocolo, com a função tanto de servidor
quanto de cliente, por isso é denominado de servent (SERVer + cliENTS). Uma instância
desse software “rodando” em uma determinada máquina pode ser chamada de host. Um
servent se conecta a rede Gnutella estabelecendo uma conexão com um host conhecido que
já está conectado a rede. Podem-se obter listas dos hosts disponíveis, por exemplo, através
do site http://gnutellahosts. com [4,5].
Cada nó da rede Gnutella conhece apenas os nós aos quais está diretamente
conectado, todos os outros servents são invisíveis, a menos que se anunciem respondendo a
um ping ou respondendo uma consulta, o que provê um certo grau de privacidade. A Figura
3, retirada de [4], mostra como é o mecanismo de busca da rede Gnutella [4,9].
10 UNIVERSIDADE DE SÃO PAULO
INSTITUTO DE CIÊNCIAS MATEMÁTICAS E DE COMPUTAÇÃO
Pós-Graduação em Computação e Matemática Computacional
Sistemas Distribuídos – Prof. Marcos José Santana Figura 3 ‐ Mecanismo de Busca do Gnutella
As versões mais recentes do Gnutella utilizam o conceito de supernós, o que
melhora o desempenho e a escalabilidade da rede [4,8].
Os pontos fracos dessa rede são que o anonimato é praticamente inexistente –
qualquer um consegue listar as pesquisas que estão sendo feitas e quem está fazendo a
mesma. Também não há proteção de quem está fornecendo o arquivo, uma vez que utiliza o
protocolo HTTP, podem-se listar os endereços IP.
Como pontos fortes pode-se levar em conta a liberdade de pesquisa e também que é
praticamente impossível acabar com a rede, visto que para isso seria preciso acabar com
todos os nós [2].
Existem muitas aplicações cliente disponíveis para acessar a rede Gnutella, algumas
das mais populares são: BearShare (http://www.bearshare.com), Gnucleus
(http://www.gnucleus.com)
LimeWire
(http://www.limewire.com),
WinMX
(http://winmx.com) e XoloX (http://www.holox.com).
Freenet
O Freenet, assim como o Gnutella, também possui arquitetura descentralizada e não
estruturada. Uma de suas principais vantagens em relação à aplicação anterior é que ele
mantém seus usuários no anonimato, além de possuir código fonte aberto. Para garantir o
anonimato, as comunicações dos usuários são cifradas, o que faz com que não seja possível
rastrear a origem de um arquivo, quem está obtendo ou quem salvou este arquivo em disco.
11 UNIVERSIDADE DE SÃO PAULO
INSTITUTO DE CIÊNCIAS MATEMÁTICAS E DE COMPUTAÇÃO
Pós-Graduação em Computação e Matemática Computacional
Sistemas Distribuídos – Prof. Marcos José Santana Outra diferença do Freenet em relação ao Gnutella é que ele fornece um serviço de
armazenamento de arquivo, da qual é foco principal dessa aplicação. Enquanto no segundo
os arquivos são copiados para outros nós quando são requisitados, no Freenet esses
arquivos são propagados para outros nós para armazenamento, replicação e persistência. [2,
5]
A Figura 4, retirada de [4], mostra o mecanismo do funcionamento do Freenet. Em
(1) o usuário inicia a requisição do dado no peer A, na qual passa a requisição adiante para
o peer B, e em (2) passa adiante para o peer C. O peer C é incapaz de contatar qualquer
outro peer e retorna, em (3), com a mensagem de falha na requisição para o ponto B. O peer
B tenta uma segunda opção, peer E em (4), na qual em (5) repassa a requisição para o Ponto
F, que entrega a requisição para o peer B em (6). O peer B detecta o loop e retorna uma
mensagem de falha em (7). O peer F é incapaz de contatar qualquer outro ponto e volta para
o ponto E em (8). O peer E, em (9), repassa a requisição para a segunda opção, o peer D, na
qual tem o dado. O dado é retornado para o ponto D, via peers E , B e A, em (10), (11) e
(12), respectivamente. O dado é armazenado nos peers E,B e A, que criaram então uma rota
de atalho para as próximas buscas similares [4].
Figura 4 Mecanismo de funcionamento do Freenet
Como pode ser observado através do seu funcionamento, o dono de um nó não sabe
que tipo de dado está armazenado em sua máquina (isso evita que o dono de uma máquina
12 UNIVERSIDADE DE SÃO PAULO
INSTITUTO DE CIÊNCIAS MATEMÁTICAS E DE COMPUTAÇÃO
Pós-Graduação em Computação e Matemática Computacional
Sistemas Distribuídos – Prof. Marcos José Santana participante seja responsabilizado por possuir certos dados). Ele também constrói um
imenso sistema de armazenamento distribuído e tolerante a falhas.
O Freenet possui um controle de tempo de publicação de cada arquivo, na qual os
arquivos menos populares vão dando lugar aos arquivos mais populares.
Todos os arquivos, quando dispostos, são criptografados e assinados digitalmente de modo
a garantir que ninguém será capaz de adulterar o seu conteúdo [2].
FastTrack/ KaZaA
O FastTrack é a rede pública dos aplicativos: KaZaA, KaZaA Lite, iMesh e
Grokster. Essa rede utiliza uma arquitetura em duas camadas, onde a primeira é composta
por supernós (máquinas mais potentes, com conexão rápida e espaço em disco) e a segunda
é formada por máquinas de usuários comuns.
Os supernós assumem um papel principal na rede, uma vez que todo usuário precisa se
conectar a um supernó para ter acesso ao sistema. Eles também mantém uma lista contendo
os arquivos disponibilizados por outros usuários e o local onde eles estão armazenados.
Além disso, eles são responsáveis pela busca que é realizada da seguinte forma:
1. Ao se conectar a um supernó, o nó envia a ele uma lista com a descrição dos
arquivos que está disponibilizando. Quando chega uma consulta, a busca é feita
apenas nesse sub-conjunto dos dados.
2. Se o supernó sabe qual é a localização do arquivo desejado, ele retorna o
resultado da busca feita localmente. Esse processo é rápido e o efeito causado no
usuário final é excelente, uma vez que ele percebe que o sistema está respondendo
rapidamente.
3. Se não souber, o supernó então submete a consulta a outros supernós.
4. Uma vez localizado o usuário que possui o arquivo, uma conexão é estabelecida
diretamente entre os peers para que seja efetuado o download.
Em caso de falha de um supernó, os nós órfãos são passados a outros supernós.
O FastTrack é a maior rede pública existente e mantém em média 4 milhões de
usuários conectados a todo o momento. Esses usuários disponibilizam diferentes tipos de
arquivos, como vídeo, áudio, softwares, etc. [2, 8].
BitTorrent
A arquitetura do BitTorrent consiste de um servidor central, o tracker, que é
conectado ao fazer download de um arquivo torrent, como pode ser visto na Figura 5,
retirada de [4]. Este arquivo contém informações a respeito de tamanho, nome, informação
13 UNIVERSIDADE DE SÃO PAULO
INSTITUTO DE CIÊNCIAS MATEMÁTICAS E DE COMPUTAÇÃO
Pós-Graduação em Computação e Matemática Computacional
Sistemas Distribuídos – Prof. Marcos José Santana de hash e a URL de um tracker, e é preparado por um usuário que deseja publicar
conteúdo, e disponibilizado em sites web especializados.
Figura 5 Mecanismo do BitTorrent
Uma vez carregado o arquivo torrent, o usuário o fornece ao software cliente, que
se conecta ao tracker. O nó informa ao tracker sobre seu interesse naquele torrent, e este
responde com uma lista aleatória de nós presentes para se conectarem e fazer o download e
upload. Os tracker também
O BitTorrent corta o arquivo em partes de tamanho fixo de forma a rastrear o
conteúdo de cada peer. É o tracker quem monitora a disponibilidade dos nós e os pedaços
de cada arquivo. Os nós são testados periodicamente e um nó que não responde é trocado.
O BitTorrent utiliza a política de “olho-por-olho”, onde cada peer também precisa
disponibilizar seus arquivos, ou parte deles, para participar da rede.
Sistema de armazenamento de arquivos em rede (network storage)
Em aplicações desse tipo os usuários poderão modificar o conteúdo dos arquivos.
Dessa forma, em caso de replicação, as informações devem ser propagadas para todas as
réplicas. Entre os exemplos estão: PAST, OceanStores, Ivy e JetFile.
Transmissão de dados (overlay multicast)
As aplicações que estão nesta categoria permitem que um conteúdo seja transmitido
por um nó e entregue a vários outros geograficamente espalhados pelo globo. Essas
aplicações são utilizadas geralmente para transmissão de eventos ao vivo. O ESM – End
System Multicast – é um exemplo de aplicações deste tipo.
14 UNIVERSIDADE DE SÃO PAULO
INSTITUTO DE CIÊNCIAS MATEMÁTICAS E DE COMPUTAÇÃO
Pós-Graduação em Computação e Matemática Computacional
Sistemas Distribuídos – Prof. Marcos José Santana Há várias outras categorias de aplicações P2P, entre elas estão sistemas gerente de bases
de dados distribuída.
15 UNIVERSIDADE DE SÃO PAULO
INSTITUTO DE CIÊNCIAS MATEMÁTICAS E DE COMPUTAÇÃO
Pós-Graduação em Computação e Matemática Computacional
Sistemas Distribuídos – Prof. Marcos José Santana 4.
Conclusão Existem diversas razões para o desenvolvimento de sistemas distribuídos, entre as quais
pode-se citar:
•
•
•
•
A possibilidade compartilhar arquivos sem uma unidade central
Possui características de sistemas distribuídos, o que provê tolerância a falhas,
redundância, entre outros.
Possibilidade de prover anonimato, o que facilita a livre expressão de idéias.
Existem relatos de utilização do Freenet em países da China e Oriente Médio,
onde há censura do governo. Uma outra razão que as pessoas buscam o
anonimato seria para o compartilhamento de material protegido por direitos
autorais.
Possibilidade de utilizar a capacidade ociosa dos computadores para realizar
grandes processamentos.
16 UNIVERSIDADE DE SÃO PAULO
INSTITUTO DE CIÊNCIAS MATEMÁTICAS E DE COMPUTAÇÃO
Pós-Graduação em Computação e Matemática Computacional
Sistemas Distribuídos – Prof. Marcos José Santana 5.
Referências Bibliográficas
[1]Theotokis, S. A. and Spinellis, D. (2004). A survey of peer-to-peer content
distribution technologies. ACM Computing Surveys, 36(4):335–371.
[2] Francesquini, E.C. .Um Estudo sobre sistemas P2P. Junho de 2004
[3] Domingues R.J., Callada, A., Souto, E., Sisvestre, G.,Kamienski, C., Sadok, D..
Peer-to-Peer: Computação Colaborativa na Internet
[4] Lua, E. K., Crowcroft, J., Pias, M., Sharma, R., and Lim, S. (2005). A survey and
comparison of peer-to-peer overlay network schemes. IEEE Communications Surveys &
Tutorials, 7(2):72–93.
[5] Theotokis, S.A (2002). A survey of peer-to-peer File-Sharing Technologies.
[6] SHIRKY, C. 2000. What is p2p... and what isnt’t. Disponível em: http://www.
oreillynet.com/pub/a/p2p/2000/11/24/shirky-whatisp2p.html. O’Reilly
[7]Tanenbaum, A., & Steen, M. (2002). Distributed Systems - Priciples and Paradigms.
Prentice Hall.
[8] Barcellos, M. P. Segurança em Redes P2P: Princípios, Tecnologias e Desafios
[9] Rocha, R.R., Redes Peer-to-Peer para Compartilhamento de Arquivos na Internet.
17 

Documentos relacionados