Escolar Documentos
Profissional Documentos
Cultura Documentos
2 – História do P2P
O P2P é o resultado da tendência natural do desenvolvimento de engenharia de
software com a disponibilidade de tecnologia para a criação de redes maiores.
A tendência das últimas décadas tem crescido com a necessidade das aplicações
empresariais, o que resultou na substituição dos sistemas monolíticos por sistemas
distribuídos. As redes informáticas começaram a crescer, tornando-se cada vez maiores
e mais poderosas, os utilizadores começaram a ser cada vez mais, a banda larga tornou-
se cada vez mais barata e poderosa, sendo fácil de aceder.
Neste campo houve a necessidade de ter a disponibilidade de pontos interligados, e
quanto mais recursos houvesse, mais poderosa se tornava essa rede. A Internet foi um
claro exemplo e uma explosão de utilizadores.
Enquanto as redes cresciam, as aplicações P2P desenvolviam-se e a sociedade
interessava-se pelo P2P. Aplicações como o Napster, Gnutella e Kazaa ficaram
famosos, porque estas colocaram um subconjunto da tecnologia P2P que estava ao
alcance de milhares de utilizadores.
Na verdade o P2P surgiu da tecnologia básica que utilizaram nos tempos da USENET
e da FidoNet. Eram duas redes totalmente descentralizadas, e sistemas como o DNS.
Imagem 3 – primeiros programas P2P
No inicio eram trabalhos que dois estudantes tinham na licenciatura. Não
existia muita informação sobre a partilha, nem Internet como hoje em dia. Os
arquivos eram trocados em batch nas linhas telefónicas, porque os computadores
eram ligados por cabos coaxiais, não tendo muito mais que 10 computadores em
cada rede, ligando-se por um terminador, passando virtualmente por cada nó.
No entanto em 1979, como não havia maneira de centralizar, a USENET, era
totalmente descentralizada sendo o criador Jim Ellis. (Será explicado mais á
frente o que é). A FidoNet também era descentralizada, mas servia para troca de
mensagens. Esta aplicação foi criada em 1984 por Tom Jennings para trocar
mensagens de sistemas (BBS) diferentes.
O DNS tornou-se uma necessidade, porque em 1983 já existiam milhões de
hosts na Internet. Na altura a forma de navegar na Internet era através de um
ficheiro.txt, nomeado de hosts.txt. O nome “cin” era associado um determinado
ip do ficheiro hosts.txt. Como a Internet cresceu, este sistema tornou-se
impossível e foi então que surgiu o DNS.
O conceito de DNS é comparado às aplicações de ficheiros actuais.
Mas foi na década de 90 que as redes P2P apareceram com toda a força, quando
aplicações como o Napster e o Gnutella foram desenvolvidas. Cada nó neste tipo
de rede é conhecido como peer, e pode servir com os mesmos direitos de cada
peer da rede, serve tanto de cliente como de servidor.
Os recursos e as informações passaram a ser disponibilizados de forma
mundial. Estas redes tinham características, que quantos mais peers existissem
mais escabilidade e mais autonomia tinham, e a rede tornava-se mais eficiente e
mais rica em recursos com a comunicação directa que os peers tinham.
3 - Distribuição Horizontal
A organização de uma aplicação cliente-servidor numa arquitectura multi-camadas,
distribui o processamento, colocando componentes logicamente diferentes em máquinas
diferentes. A essa distribuição dá-se o nome de distribuição vertical. Uma distribuição
vertical, facilita a gestão dos sistemas, pois divide, as funções lógica e física entre várias
máquinas, onde cada máquina é responsável por um grupo específico de funções.
Uma abordagem alternativa à distribuição horizontal, bastante comum nas
arquitecturas modernas, baseia-se na distribuição dos clientes e dos servidores, o que se
chama de distribuição horizontal.
Nessa distribuição, um cliente ou um servidor pode estar fisicamente dividido em partes
logicamente equivalentes, onde cada parte opera sobre a sua própria porção dos dados, o
que balanceia a carga. Os sistemas peer-to-peer se baseiam na distribuição horizontal.
Olhando de uma perspectiva de alto nível, os processos que constituem um sistema
peer-to-peer são todos iguais. Isso significa que as funções necessárias devem estar em
todos os processos que constituem o sistema distribuído.
Como consequência, a maior parte da interacção entre os processos é simétrica: cada
processo actua como um "cliente" e um "servidor" ao mesmo tempo. [2]
4 – Características do P2P
O sistema P2P apresenta as seguintes características:
• O modo como estão os recursos, faz com que cada um contribua para o seu
melhoramento;
• Os direitos de cada nó na rede são iguais, o que diferencia são os recursos.
4.1 - Descentralização
Os sistemas P2P não dependem de um servidor central, ou de várias administrações
centralizadas.
Um sistema P2P totalmente descentralizado, não há utilizadores com características
especiais, são todos iguais, com poderes iguais, ou recebem dados, ou estão a enviá-los.
4.2 - Heterogeneidade
Na construção da rede P2P, temos que nos lembrar que há preocupação em que nada é
eterno, e que eventualmente poderá haver falhas de ligação.
Para que isso não aconteça, utilizamos a técnica da replicação, diminuindo assim em
muito a falha ao tentar aceder aos dados.
A replicação pode também tornar o sistema mais confiável se utilizada para neutralizar a
acção de nós maliciosos, que interceptam o sistema e corrompem os dados, através de
técnicas de tolerância a falhas.
Imagem 4 – Rede P2P heterogénea
5 - Sistemas Híbridos
Os sistemas centralizados são simples de implementar e gerir, mas não suportam o
aumento da rede.
Por outro lado os sistemas descentralizados são escaláveis e robustos, contudo, são algo
complicados de implementar, principalmente nas questões de tolerância a falhas e na
descoberta de recursos.
Existem sistemas que utilizam características de ambos, cliente-servidor e peer-to-peer.
Estruturas híbridas implantam ambos, embora adoptem pelo sistema cliente-servidor
devido a complicações de junção de ambos os sistemas.
Um exemplo bem claro disso é o servidor que utiliza o BitTorrent [4].
Ao utilizarmos o MSN Messenger, e enviarmos um ficheiro, pensamos que esse ficheiro
está a ser enviado directamente para o outro nó, no entanto ficamos surpresos em saber
que existe uma espécie de servidor por trás, que guarda a informação, ou faz a
associação entre o nome do utilizador e o ip dele, grava mensagens quando está em
modo off-line, etc.
Se fosse um sistema totalmente descentralizado, isso seria impossível na Internet de
hoje. Por isso como vemos grande parte dos sistemas utilizados hoje utilizam um
esquema de directório centralizado enquanto o ficheiro está a ser enviado.
6.4 - Disponibilidade
A maioria dos sistemas peer-to-peer são constituídos por computadores hospedeiros que
são livres para se juntar ou sair do sistema em qualquer altura. Além disso, os
segmentos de rede utilizados nos sistemas peer-to-peer não são administrados por
qualquer autoridade; nem possuem garantias de qualidade de serviço.
Um grande desafio para os sistemas peer-to-peer é prover um sistema confiável,
apesar desses factos. Quando novos hospedeiros se juntam, eles devem ser integrados ao
sistema e a carga deve ser redistribuída para explorar esses novos recursos.
Quando eles saem do sistema voluntariamente ou involuntariamente, o sistema deve
detectar a partida deles, e redistribuir as suas cargas e os seus recursos.
A localização dos nós e dos ficheiros é realizado na rede overlay através de um router
distribuído.
Esse algoritmo é aplicado na camada de aplicação (modelo OSI), não tendo nenhuma
ligação no router com a camada de rede, do modelo OSI.
Através deste processo, em que a requisição dos clientes é feita no router para um
uploader que possui o ficheiro e redirecciona novamente para o ip que o solicitou.
O router garante que qualquer nó possa aceder a qualquer ficheiro da rede overlay,
explorando cada "conhecimento" de cada nó.
Os sistemas modernos de peer-to-peer, armazenam múltiplas réplicas do mesmo
ficheiro para que o sistema possa garantir disponibilidade.
Assim o router mantém o mínimo de informação possível sobre a localização de
todas as réplicas para o nó vivo mais próximo e mantém uma cópia do ficheiro.
Existem dois tipos de redes sobrepostas:
• As redes estruturadas
• As redes não-estruturadas
O modelo básico é que cada nó tenha uma lista de vizinhos, onde cada um dos vizinhos
representa um nó escolhido aleatoriamente dentro dos nós "vivos".
Esta lista de nós pode ser chamada de visão parcial.
O BitTorrent que constrói a rede overlay de forma aleatória, poderá ser considerado
como tal.
Imagem 8 – Arquitectura P2P não-estruturada
8 - Plataformas, Frameworks e
Aplicações
peer-to-peer
No início da era P2P, as aplicações surgiram monolíticas, ou seja, o programa precisava
implementar o seu próprio protocolo de comunicação peer-to-peer para permitir a
interoperabilidade entre os nós constituintes do seu sistema em rede.
Este tipo de P2P não era uma boa solução, devido a que, embora com serviços iguais, o
cliente tinha que ter os programas todos instalados porque os ficheiros, ou dados
ficavam apenas na rede.
Kazaa, eMule e Gnutella ficaram apenas acessíveis dentro da sua própria rede.
Mas com o passar do tempo, criaram-se aplicações que "juntavam" todas estas
aplicações, de forma a poderem comunicar entre elas todas.
Dentro destas destacam-se o JXTA, Windows Peer-to-Peer-Networking e o XNap.
O JXTA e o Windows P2P-Networking são especificações de protocolos peer-to-peer e
de uma API para utilização dos serviços, sendo o primeiro com implementações em
Java e em C.
O XNap provê, além de uma API de serviços peer-to-peer, também um Framework para
desenvolvimento das aplicações em si, incluindo recursos de interface gráfica com o
usuário. Um Framework peer-to-peer, portanto, vai além de uma plataforma para
comunicação peer-to-peer, provendo serviços adicionais não necessariamente
relacionados com a comunicação em si, mas indispensáveis para o desenvolvimento
rápido de aplicações baseadas nesta arquitectura.
8.1.1 - Kademlia
Kademlia é um conceito de rede altamente descentralizada baseada em "nós" de rede.
Os próprios utilizadores constituem a estrutura da rede dispensando servidores. Várias
redes utilizam o conceito Kademlia.
8.1.2 - Overnet
A rede Overnet é uma espécie de eDonkey "paga". É preciso adquirir o programa da
empresa que a desenvolveu. É uma variante do eDonkey totalmente descentralizada e
mais rápida seguindo o conceito Kademlia e foi a primeira implementação da mesma.
8.1.3 - Gnutella
Rede open-source surgida no final de 2000, utilizada inicialmente por utilizadores do
sistema Linux. Possui uma estrutura altamente descentralizada não havendo mesmo
nenhum servidor central sequer. Os utilizadores constituem a estrutura da própria rede.
Entre os programas que a utilizam, estão o BearShare , LimeWire, Azureus e agora o
Shareaza.
8.1.4 - Gnutella 2
Segundo projecto da rede Gnutella, mas agora com servidores centrais optimizando
buscas e o desempenho geral da rede. É conhecida principalmente no programa
Shareaza. Recebeu críticas quando foi criada pelos criadores da Gnutella original.
8.1.6 - OpenFT
OpenFT é um protocolo desenvolvido pelo projecto giFT. O nome "OpenFT" significa
"Open FastTrack". Entretanto, o OpenFT é um protocolo completamente novo, apenas
alguns protocolos vieram do pouco que se sabia sobre a FastTrack quando o OpenFT foi
desenvolvido. Assim como a FastTrack, o OpenFT é uma rede onde nós que enviam
listas de arquivos compartilhados para outros nós. Isso reduz o consumo de banda
necessário para a pesquisa, entretanto, consumindo no entanto mais recursos do
processador e memória nos nós.
8.1.7 - AudioGalaxy
Projecto antigo da empresa com mesmo nome, o Audiogalaxy centralizava tudo,
indexando-o para o seu site oficial. Foi facilmente fechada por um processo judicial na
Inglaterra. Era uma implementação de FTP’s sendo mais superficial ao utilizador.
8.1.8 - SoulSeek
Rede introduzida para trocas de músicas em 2000. Utiliza o programa com o mesmo
nome. Caracteriza-se pelo facto de ter um grande número de arquivos raros, e
principalmente música alternativa. O programa cliente tem uma interface simplificada, e
permite a adição de utilizadores numa hotlist, ou seja, uma lista de contactos que
permite saber quando um utilizador que tem arquivos relevantes está conectado à rede.
Também há na rede SoulSeek um serviço de chat parecido com o IRC, que possibilita
uma melhor interacção entre os utilizadores, que também podem criar seus próprios
canais de chat.
8.1.9 - DNS
O DNS (Domain Name System) é um exemplo de sistema que mistura os conceitos de
rede peer-to-peer com um modelo hierárquico de posse da informação. O mais incrível
do DNS é quão bem ele tem escalado, dos poucos milhares de hospedeiros que ele foi
projectado para suportar, em 1983, para as centenas de milhões de hospedeiros
actualmente na Internet.
Os problemas encontrados pelas aplicações P2P actuais, tais como partilha de
arquivos, são os mesmos problemas que foram resolvidos pelo DNS há 10 ou 15 anos
atrás. Assim, vários elementos-chave no projecto do DNS são replicados nos sistemas
distribuídos actuais. Um elemento é que o hospedeiro pode operar tanto como cliente
como servidor.
O segundo elemento é um método natural de propagar as requisições de dados pela
rede. A carga é naturalmente distribuída pela rede, tanto que qualquer servidor
individual de nomes só precisa servir as solicitações dos seus clientes e o espaço de
nomes que ele gere.
8.1.10 – BitTorrent
BitTorrent é um sistema de download de arquivos P2P. A ideia básica é que quando um
utilizador procura por um arquivo, ele saca "pedaços" do arquivo de outros utilizadores
até que o arquivo fique completo. Um objectivo importante do projecto foi garantir
colaboração. Na maioria dos sistemas de partilha de arquivos, uma fracção significante
dos utilizadores somente saca os arquivos, não contribuindo para o objectivo da
colaboração [8] [9] [10]. Para isso, um arquivo pode ser sacado somente quando o
cliente que está sacando, também está a disponibilizar ficheiros para alguém.
Gnutella2: Adagio, Caribou, Gnucleus, iMesh, Kiwi Alpha, MLDonkey, mlMac, Morpheus,
Shareaza, TrustyFiles
Kad (rede) (usando o protocolo Kademlia): aMule, eMule, MLDonkey
MANOLITO/MP2P: Blubster, Piolet
MFPnet: Amicima
Napster: Napigator, OpenNap, WinMX
P2PTV type networks: TVUPlayer, CoolStreaming, Cybersky-TV, TVants
Peercasting type networks: PeerCast, IceShare, FreeCast
SoulSeek: SoulSeek, Nicotine
Usenet
WPNP: WinMX
ZPoC
9 - Direitos de autor
As redes P2P são acusadas mundialmente de ir contra os direitos de autor, por