Gnutella
Arquitetura Gnutella
Atualmente, é o sistema mais popular para compartilhar arquivos. Para evitar os problemas judiciais que o Napster teve, a Gnutella foi projetada para ser uma rede descentralizada. Dessa forma, seria difícil provar que a rede compactuava com as transferências de arquivos ilegais dos usuários, e mesmo que fosse provado, seria necessário derrubar todos os milhões de nós da rede para impedir as pessoas de partilhar.O Gnutella não é baseada em circuitos e sim em mensagens. Ou seja, não se cria um circuito virtual persistente que manterá a conexão entre dois nós. O sistema de busca trabalha com cinco tipos de mensagem: Ping, Pong, Query, Query Hit e Push. O Ping é utilizado para descobrir informações sobre os outros nós da rede; possui o TTL e o número de hosts pelos quais passou. O Pong é a resposta ao Ping, e contém a porta a ser utilizada na conexão, o IP do nó, um contador do número de arquivos compartilhados e o tamanho total de dados que ele possui. Query é a mensagem de busca, e contém a velocidade mínima de conexão e a busca propriamente dita. O QueryHit é a resposta positiva a uma busca, e é composta pelo número de arquivos correspondentes à busca, o IP do nó que enviará o arquivo, o número da porta de conexão, a velocidade de transferência do nó, um campo de detalhes do arquivo e o ID do nó na rede. O Push é usado para que o firewall permita o tráfego de mensagens de troca de arquivos, contendo o ID do nó, a descrição de qual o arquivo que deve ser baixado, o número de IP do receptor e o número da porta de conexão do receptor.