Sistemas peer-to-peer por Tiago João Neves Carvalho



Baixar 28.73 Kb.
Encontro02.08.2016
Tamanho28.73 Kb.

Licenciatura em Engenharia Informática COMUNICAÇÃO & PROFISSÃO


Sistemas peer-to-peer

por Tiago João Neves Carvalho



Nº501021278 tjneves@student.dei.uc.pt
Sumário. Apresenta-se seguidamente uma visão geral sobre o peer-to-peer (P2P), o que é, a sua história e diferentes tipos de aplicação do mesmo, bem como as características principais de alguns sistemas P2P.

Palavras-chave. Peer-to-peer, P2P, Gnutella, Napster.


1. Introdução

Os sistemas peer-to-peer (P2P) são usados hoje em dia em grande escala com o objectivo de partilhar um grande número de recursos com um grande número de utilizadores.

A história recente mostra-nos que inúmeras redes P2P de partilha de ficheiros têm sido criadas, “destruídas” ou “readaptadas”, exemplos disso são o Napster, o Gnutella entre outros.

Este artigo apresenta uma visão geral sobre o P2P e foca alguns aspectos das redes de partilha de ficheiros e suas tecnologias, bem como modelos arquitecturais e determinadas características de dois sistemas P2P: Napster e Gnutella.

2. O que é o Peer-to-peer?

Antes de começarmos a falar das aplicações do P2P convém explicar o conceito.

Um problema que se põe é a confusão criada pela utilização da expressão peer-to-peer e possivelmente também pela própria definição de peer: algo que tem o mesmo estatuto que outro (“one that is of equal standing with another”).

Parafraseando Clay Shirky, “Ao traduzir a definição literalmente, todos os servidores que comunicam entre si são peer-to-peer. O jogo Doom seria peer-to-peer. No entanto o napster não seria peer-to-peer no sentido estrito, pois utiliza um servidor central que guarda ponteiros e procura endereços.”.

Para resolver este problema usaremos a definição geral de P2P, sendo este “uma qualquer arquitectura de rede onde os participantes partilhem os seus próprios recursos de hardware (poder de processamento, capacidade de armazenamento, impressoras, …)” e a definição de Rüdiger Schollmeier, que além das arquitecturas P2P e cliente-servidor “puras” considera também a possibilidade de uma arquitectura “P2P híbrida”, que apesar de considerada P2P não se enquadra como pura.

Arquitectura P2P “PURA”: Uma arquitectura é classificada como P2P “pura” se for P2P segundo a definição geral (anterior) e se qualquer terminal da rede puder ser removido sem que a rede sofra qualquer perda em termos de “serviço”.

Arquitectura P2P “HIBRIDA”: Uma rede “híbrida” é uma rede P2P segundo a definição geral (acima) e se para além disso tiver necessidade de uma entidade central que efectua parte dos serviços da rede. (Como no caso do Napster).

De maneira geral, a principal diferença entre as arquitecturas P2P e cliente-servidor é o conceito de “Servents” um termo derivado das palavras servidor e cliente. Os “Servents” representam a capacidade dos nós da rede actuarem simultaneamente como servidores e clientes, partilhando entre si os recursos de hardware e partilhando serviços com a rede. O que difere das arquitecturas cliente-servidor onde os nós actuam como clientes ou servidores mas não podem conjugar ambas as capacidades.



3. Historia do P2P

A origem do P2P confunde-se com a própria história da Internet, uma vez que desde o seu início houve a vontade de partilhar recursos entre os diferentes utilizadores.

A ARPANET já possuía alguns hospedeiros independentes que não eram tratados como clientes ou servidores, mas como pares de mesma importância, mas a primeira implementação “real” do P2P foram os servidores de DNS e a Usenet.

A partir dos anos 90, principalmente após o aparecimento do Napster, a utilização de sistemas P2P massificou-se, havendo hoje em dia múltiplos programas praticamente iguais ao Napster com milhões de utilizadores e ficheiros partilhados.

Para além das aplicações “napster-like” a utilização do P2P na investigação científica é cada vez mais popular, com projectos que mobilizam os tempos mortos de milhares ou milhões de computadores numa rede de aderentes voluntários, como acontece no seti@home (investigação de inteligência extraterrestre ou no fightAIDS@home (investigação no campo da sida).

Hoje em dia a utilização do P2P está envolta em discussão, nomeadamente devido aos direitos de autor e licenças dos arquivos partilhados nessas redes, com os contestatários a atribuírem ao P2P (e aos programas que o utilizam) uma grande responsabilidade pela pirataria na Internet.


4. Aplicações P2P.

Todas as aplicações P2P, seja qual for a topologia utilizada, têm uma característica óbvia em comum. Todas as transferências de ficheiros entre “peers” vão ser feitas através de uma ligação directa entre o “peer” que partilha o ficheiro e o “peer” que o pediu. A diferença fundamental entre as várias aplicações reside nos mecanismos que antecedem e gerem a transferência de ficheiros, que podem variar consoante as aplicações.

Posto isto vamos ver em pormenor duas dessas aplicações, Gnutella e Napster.
4.1 Gnutella.

O Gnutella foi criado por Justin Frankel e Tom Pepper no início do ano 2000 quando ambos trabalhavam para a Gnullsoft, um subsidiário da América On-line. AOL essa que ao perceber que poderia vir a ter problemas de infracção de direitos de autor abandonou o projecto. Apesar disso o pouco tempo em que o Gnutella ficou on-line chegou para que alguns programadores curiosos fizessem o download do programa e através de “reverse-engineer” criassem novos programas-clone do Gnutella tais como o BearShare e o Shareaza.



A arquitectura do Gnutella. O Gnutella utiliza uma rede de peers (servents) na qual cada um possui uma directoria-indice de todo o conteúdo existente nele proprio. Numa rede Gnutella os servents funcionam como cliente e servidor ao mesmo tempo por si próprios, sendo que quando funcionam como servidor respondem a procuras de outros servents e quando clientes, fazem procuras noutros servents. Para que um servent se junte à rede Gnutella precisa primeiro de encontrar o endereço de um servent que já se encontre ligado. Após o encontrar tenta estabelecer uma ligação com ele e após permissão de ligação o programa automaticamente manda pings a servents vizinhos e tenta efectuar novas ligações a outros servents para evitar que seja desligado da rede por o servent a que se ligou deixar de estar ligado à rede. Como não existe um servidor central com as informações sobre os ficheiros existentes no sistema, cada servent tem as informações sobre os ficheiros que possui. Ao procurar ficheiros no Gnutella, o servent “pergunta” aos servents vizinhos se o possuem e caso isso não aconteça, cada servent vai perguntar aos seus servents vizinhos pelo ficheiro requerido, até que este ficheiro seja encontrado. Caso o ficheiro seja encontrado, o servent que o possui envia uma mensagem de resposta até ao servent que pediu o ficheiro e inicia uma ligação com ele através de HTTP.

Uma vez que o Gnutella reenvia as suas mensagens e para evitar que a rede seja inundada por mensagens é incrementado um campo TTL (time to live) em cada mensagem enviada, campo esse cujo valor vai sendo decrementado cada vez que a mensagem passa num servent até que o valor do TTL seja zero e deixe de reenviar a mensagem. Para além disso cada servent mantém uma lista de mensagens que foram “vistas” recentemente evitando que a mesma mensagem seja reenviada continuamente.



Funcionamento: O funcionamento do Gnutella é explicado na figura seguinte:

- O utilizador A pede uma lista de servents já ligados à GnuCache e esta envia-lha.

- Utilizador A tenta-se ligar ao utilizador B que aceita a ligação.

- Após a ligação ser estabelecida o servent A “pergunta” a B se possui um ficheiro.

- B verifica que esta mensagem de procura não foi “vista” recentemente e procura no seu índice de arquivos se possui o ficheiro seleccionado.

- Se o possui, envia uma resposta afirmativa a A, decrementa o TTL e reenvia a mensagem a C, D e E.

- C, D e E efectuam as mesmas operações que B e reenviam o pedido para os servents F, G, H e I.

- Caso algum servent encontre o ficheiro na sua lista, efectua uma ligação http com o servent A (o servent que pediu o ficheiro).



Resumo: O Gnutella é um protocolo simples que só define como uma mensagem é passada de um servent para outro e como cada servent interpreta a mensagem pedida.

Limitações: As limitações básicas deste sistema são a grande quantidade de mensagens trocadas, nomeadamente as mensagens de ping e pong entre os servers, que ocupam uma grande parte da largura de banda usada, e o facto de não ser possivel comunicar com a rede de forma global pois cada servent está limitado a encontrar informações que estejam restritas ao seu horizonte de busca.
4.2 Napster.

O Napster é uma aplicação de partilha de ficheiros que permite aos utilizadores procurar e partilhar ficheiros MP3 através da Internet e foi desenvolvido por Shawn Fanning em 1999.



A arquitectura do Napster. A arquitectura do napster é baseada no modelo centralizado de P2P, com a adição de uma estrutura central que funciona como um servidor que redirecciona o tráfego entre os utilizadores registados (sendo portanto uma arquitectura híbrida). Esse servidor possui informações sobre os ficheiros armazenados nos computadores dos diferentes utilizadores, informações essas que são actualizadas sempre que um novo utilizador se liga á rede. Os clientes ligam-se directamente a um sub-servidor (normalmente ao com menor numero de utilizadores) ao qual enviam as informações sobre os ficheiros que possuem e o qual lhes transmite os ficheiros existentes em todos os sub-servidores.

Os utilizadores são quase sempre anónimos e a sua directoria de ficheiros nunca é pesquisada directamente, sendo que o único interesse é procurar no servidor um utilizador onde fazer o download do ficheiro pretendido. Cada vez que um utilizador ligado a um servidor faz uma procura de determinado ficheiro, o servidor central cria uma lista de ficheiros correspondentes à procura efectuada através da procura na sua base de dados de ficheiros pertencentes a utilizadores ligados nesse instante e envia essa lista ao utilizador que a requereu. O utilizador pode então seleccionar o ficheiro desejado dessa lista e abre uma ligação http com o utilizador que possui esse ficheiro. Começa então o download que é efectuado directamente entre os utilizadores, sem intervenção dos mesmos, sendo que em nenhum momento deste processo o ficheiro mp3 é armazenado nem no servidor central nem em nenhuma outra estrutura intermediária da rede. Para além das funcionalidades de partilha de ficheiros o napster possui também outras funcionalidades tais como salas de chat, grupos de amigos ou informações sobre música.



Funcionamento: O funcionamento do Napster é ilustrado na figura seguinte:
- É efectuada uma ligação a um sub-servidor

- O servidor central procura na sua base de dados e envia a resposta ao Utilizador.

- O download é efectuado directamente entre peers.

- O ficheiro MP3 nunca é armazenado em nenhum servidor na rede.



Limitações: As principais limitações do napster prendem-se com a impossibilidade de fazer download de ficheiros que não mp3, sendo que foram criados programas “auxiliares” tais como o wrapster que camuflava ficheiros não-mp3 para que parecessem, aos servidores de controlo de ficheiros, ficheiros mp3. Actualmente o Napster encontra-se encerrado devido a uma acção em tribunal que o acusa de incentivador de pirataria informática, mas outros programas-clone do napster são hoje em dia bastante populares e com a vantagem de permitir fazer download de praticamente todos os tipos de ficheiros. Exemplos desses programas são o Kazaa ou o Edonkey/Emule.
5. Conclusões.

Neste ponto devia ser já bastante claro que as aplicações P2P estão ainda numa fase inicial. Existe ainda muito potencial para ser usado e são necessários continuamente novos sistemas que consigam responder mais rapidamente à cada vez maior procura por parte dos utilizadores por estes sistemas.

É também necessário referir que actualmente o P2P é visto como uma arquitectura que incentiva o trafico de ficheiros com copyright e que as iniciativas individuais por parte de diferentes entidades de tentar encerrar as aplicações de partilha de ficheiros e de ameaçar os seus utilizadores com penas de prisão não são o caminho a seguir, uma vez que é mais fácil destruir um sistema do que uma ideia e a ideia está lançada e vai estar presente em cada novo programa clone do napster (ou não) que permita a partilha de ficheiros.

De referir também a utilização do P2P em causa nobres tais como a pesquisa da cura para a SIDA e das potencialidades do P2P na distribuição de produtos de empresas aos seus consumidores, como foi o caso da Valve que recentemente decidiu utilizar o sistema Bittorrent para a distribuição dos seus produtos online.

Tentou-se mostrar neste artigo algumas das utilizações do P2P e algumas das suas fusões com outras arquitecturas, acreditando que a verdadeira implementação deste sistema ainda mal começou e que muitas mais aplicações surgiram num futuro próximo, que a acreditar no que se verifica hoje, parece promissor.

6. Agradecimentos.

Gostava de agradecer aos professores da cadeira que me incentivaram à realização deste projecto e aos colegas, principalmente aos de casa que me ajudaram na escolha do tema referido.

Referências



  1. Ding,C.H.(2003) Peer-to-Peer Networks for Content Sharing,

http://www.gridbus.org/papers/P2PbasedContentSharing.pdf


  1. Rodrigues,J.N. (2001) A sucessão da Web: P2P The next hot thing?, http://www.janelanaweb.com/digitais/p2p.html


Departamento de Engenharia Informática, Universidade de Coimbra 2004/2005




©principo.org 2016
enviar mensagem

    Página principal