Gnutella

Gnutella é um protocolo de computador descentralizado para pesquisa e transferência de arquivos ponto a ponto (também conhecido como P2P ). Foi imaginado em 2000 por Tom Pepper  (en) e Justin Frankel, então programadores para a empresa Nullsoft , que também editou o WinAmp .

O protocolo Gnutella continuou a evoluir durante os anos 2000, permitindo também uma redução significativa na largura de banda utilizada. Entre as suas melhorias, podemos citar a gestão de ultrapeers, GUESS e GWebCache que permite aos clientes Gnutella de forma descentralizada conhecer outras máquinas para se conectar.

Seu nome é formado a partir da contração de GNU e Nutella , embora o protocolo não seja um projeto GNU (a Free Software Foundation pediu aos desenvolvedores para mudar o nome para não causar confusão) e não há nada a ver com o marca de propagação .

Gnutella v0.4

No Gnutella v0.4, cada estação atua como um servidor e um cliente e é chamada de "  servir  " (uma contração de servidor e cliente).

Cada servidor está conectado a um conjunto de vizinhos. Para iniciar uma pesquisa, um servidor consulta todos os seus vizinhos enviando-lhes uma mensagem de pesquisa. Seus vizinhos fazem o mesmo com seus próprios vizinhos. Um campo TTL (Time To Live) é associado à mensagem de pesquisa para contar o número de retransmissões restantes. Quando é nulo, a mensagem não é mais enviada. Este método de propagação é chamado de inundação.

Os servidores com arquivos que respondem à solicitação enviam sua resposta (nome do arquivo + seu endereço IP) de volta ao vizinho que encaminhou a solicitação para eles. A resposta, portanto, retorna, passo a passo, para o servidor que iniciou a solicitação.

O servidor que inicia a solicitação escolherá os arquivos para download, enviando diretamente uma solicitação de download para o servidor que possui o arquivo.

No entanto, essa inundação é cara em termos de largura de banda e as pesquisas são mais lentas do que em redes centralizadas ( Napster ).

Gnutella v0.6

Publicado em 2002.

Ultrapeers

Isso levou os desenvolvedores do software LimeWire a propor o sistema ultrapeers em 2001. O gerenciamento de ultrapeers (ou superpeers ) está incluído na versão 0.6 do protocolo Gnutella. Os servidores são divididos em duas categorias: ultrapeers (ou superpeers), que são servidores estáveis ​​com boa conectividade e clientes (ou nós folha). As folhas são presas a 3 ultrapeutas e as ultrapeutas admitem entre 30 e 45 clientes e 30 ultrapeutas. Os ultrapeutas indexam o conteúdo dos clientes aos quais estão vinculados e respondem às consultas de pesquisa, incluindo os documentos de seus clientes.

Os pedidos de busca recebidos pelos ultrapeutas são encaminhados apenas aos demais ultrapeutas. Assim, um cliente consultando um ultrapeer pode pesquisar em 30 outros clientes com uma única consulta. Se o pedido for retransmitido para os outros 30 ultrapeers aos quais está conectado, sua busca chega ao conteúdo de 900 clientes ... Outro ponto importante, os clientes não recebem mais pedidos de busca, dizemos que estão protegidos (blindados) pelo ultrapeer . Isso também permite que usuários conectados à Internet em baixa velocidade possam usar o Gnutella sem reduzir seu desempenho.

ACHO

GUESS (Gnutella UDP Extension for Scalable Searches) permite que as planilhas controlem o número de ultrapeers consultados e, portanto, reduza a largura de banda usada.

Para satisfazer uma busca por palavras populares, é necessário consultar alguns ultrapeers para obter um número satisfatório de resultados. Pelo contrário, a pesquisa sobre recursos escassos requer entrevistar um grande número de ultra-eers.

Com o mecanismo de inundação, não é possível controlar com eficácia o número de ultrapeutas questionados. A solução proposta pelo GUESS é deixar o iniciador da busca interrogar sucessivamente um conjunto de ultrapeers até obter um número satisfatório de resultados.

GWebCache

O GWebcache funciona como um script instalado em um servidor web, destinado a permitir que os clientes Gnutella recuperem uma lista de nós Gnutella aos quais é possível se conectar. Normalmente, ao se conectar à rede Gnutella pela primeira vez, os servidores não sabem de nenhum outro servidor para se conectar. Esta etapa é conhecida como bootstrap .

GWebCaches são acessíveis através de um endereço URL e usam o protocolo HTTP ( servidores HTTP rudimentares).

O protocolo GWebcache especifica dois tipos de solicitações:

O servidor mantém uma lista limitada de endereços IP de ultrapeers e URLs GWebCaches e mantém apenas os últimos recebidos. Isso garante que os endereços de ultrapeers e GWebCaches devolvidos a um cliente estejam sempre atualizados e, portanto, tenham uma boa chance de ainda estarem acessíveis.

Gnutella2

Gnutella2 (também apelidado de G2): Apesar do nome, não é um sucessor do protocolo Gnutella, é um " fork " (fork, desvio) iniciado em 2002. Um ponto de controvérsia com muitos desenvolvedores do Gnutella é que o nome " Gnutella2 "reflete uma atualização ou superioridade, que levou a uma" guerra de chamas Gnutella2 ". Outras críticas são o uso da rede Gnutella para o priming de pares G2 e a documentação deficiente do protocolo G2.

Gnutella2 foi desenvolvido por Michael Stokes (programador original do Shareaza ). Leva alguns recursos do Gnutella, como a conexão inicial, por exemplo, mas tem uma topologia, além de um algoritmo de busca completamente diferente.

Programas

Muitos sistemas de troca de arquivos P2P implementam este protocolo, incluindo:

Notas e referências

  1. Para obter mais informações sobre a perspectiva da Free Software Foundation sobre Gnutella, consulte http://www.gnu.org/philosophy/gnutella.html
  2. http://rfc-gnutella.sourceforge.net/src/rfc-0_6-draft.html
  3. (em) Ernesto Van der Sar, "  FrostWire 'Kills' to Go All Gnutella BitTorrent  " em torrentfreak.com , FT Publishing ,27 de junho de 2011(acessado em 27 de setembro de 2020 ) .
  4. http://qtella.sourceforge.net
  5. (em) "  WireShare  " no SourceForge (acessado em 27 de setembro de 2020 ) .

Apêndices

Artigos relacionados

links externos