Gnutella2 é uma das redes utilizadas em alguns programas de compartilhamento de arquivos.
O protocolo peer-to-peer Gnutella2 é uma reformulação do protocolo Gnutella, escrito principalmente por Michael Stokes (criador do Shareaza). Do protocolo original Gnutella, Stokes só manteve o handshake de conexão e adotou um algoritmo de pesquisa inteiramente novo. A Gnutella2 é frequentemente abreviada para G2.
Como ele funciona
A Gnutella2 divide nós em dois grupos: folhas (leaves) e concentradores (hubs). As folhas mantêm uma ou duas conexões com os concentradores, os concetradores aceitam milhares de folhas e muitas conexões de outros concentradores. Quando uma pesquisa é iniciada, o nó obtem uma lista de concentradores se necessário, e contacta todos os concentradores da lista até o fim da lista ou se atingir um limite definido na consulta. Isso permite um usuário encontrar um arquivo desejado facilmente sem sobrecarregar a rede, enquanto teoricamente mantém a habilidade do usuário pesquisar um único arquivo localizado em qualquer lugar da rede.
Os concentradores indexam os arquivos que chegam das folhas na Tabela de Roteamento de Pesquisa, a qual é preenchida com entradas de bit do tipo hashes de palavras-chaves, que são recombinadas com as tabelas enviadas pelas folhas e cria uma nova versão da tabela a ser enviada aos concentradores próximos. Isso permite os concentradores reduzir a uso da banda enormemente simplesmente não encaminhando consultas às folhas e concentradores próximos se as entradas que atendem à consulta atual não são encontradas nas tabelas de roteamento.
A Gnutella2 usa extensivamente o UDP, no lugar do TCP, durante as pesquisas. A sobrecarga imposta pelo TCP faria o sistema de consulta se tornar improdutivo.
Diferenças entre Gnutella2 e Gnutella
No geral, as duas redes são razoavelmente similares, com as diferenças preliminares se dando no formato do pacote e na metodologia da busca. O formato do pacote de Gnutella sempre foi criticado por, originalmente, não ter sido projetado com extensibilidade em mente, e através dos anos sofreu muitas adiçôes, deixando a estrutura do pacote desordenada e ineficiente. A Gnutella2 partiu daqui e, ao contrário da Gnutella, já embutia no seu projeto inicial a tão desejada extensibilidade futura.
A outra diferença principal é o algoritmo da busca. Enquanto a Gnutella usa o método de consulta por inundação query flooding, a Gnutella2 usa um sistema da caminhada onde o nó de pesquisa recolhe uma lista dos hubs e os contata diretamente, um por vez. Isto traz diversas vantagens sobre a consulta no Gnutella de inundação da rede. A Gnutella2 é mais eficiente, tanto que continuar uma busca não aumenta o tráfego da rede exponencialmente, as consultas não são roteadas entre tantos nós, e isso aumenta a granularidade da busca, permitindo que um cliente parar uma vez que um condição pré-definida de resultados foi obtido mais eficazmente do que em Gnutella. Isso também aumenta a complexidade e manutenção das redes requeridas, como também requer proteções para impedir que um atacante malicioso use a rede para ataque de negação de serviço.
Há também uma diferença na terminologia usada diferentemente para os nós mais capazes e que são usados para condensar a rede que está sendo consultada, Ultrapeer em Gnutella e Hub em Gnutella2. Eles também são usados diferentemente na topologia. Em Gnutella, o Ultrapeers mantém geralmente um número relativamente pequeno das folhas e um número elevado de conexões do par, quando os Hubs Gnutella2 mantiverem distante mais folhas, e de poucas conexões do par. A razão para esta é que os métodos da busca das várias redes têm topologias das mais diferentes.
Clientes
Alguns clientes que implementam o protocolo Gnutella2: Shareaza (Windows), Open source C++ under the GPL. Kiwi Alpha (Windows), Closed source. Morpheus (Windows), Closed source. Gnucleus (Windows), Open source core in C/C++ under the LGPL. Adagio (Cross Platform), Open source Ada under the GPL. Pocket G2 (Windows Pocket PC), Closed Source. FileScope (Cross Platform), Open source C# under the GPL. iMesh (Windows), Closed source. MLDonkey (Cross Platform), Open source Ocaml under the GPL. TrustyFiles (Windows), Closed source. LimeWire (Cross Platform), Open source Java under the GPL.
Ligações externas Gnutella2 Wiki Protocol specifications Gnutella2 crawler
Ver também
Kademlia, rede semelhante à Gnutella, desenvolvida pelos criadores do eMule P2P
Categoria:Compartilhamento de arquivos