3. Introdução a P2P
Uma visão geral de P2P
P2P é um protocolo de redes para transmissão de dados sem o uso de um servidor, usuários utilizando um aplicativo P2P comunicam-se diretamente um com o outro. Esse protocolo é muito usado atualmente para compartilhamento de arquivos.
    Os computadores da rede estão ligados em uma cadeia descentralizada, de uma forma que todos trabalhem no mesmo nível hierárquico, sendo assim, todos podem ser clientes ou servidores dependendo da aplicação.
A segurança é um aspecto muito relevante nas redes P2P. Navegar por essas redes pode não ser muito seguro, pois nelas existem várias ameaças compartilhadas entre os computadores da rede. Contaminações por vírus worms e malwares são de grande preocupação para os usuários das redes P2P.
O funcionamento de redes P2P
Numa rede P2P, quando um usuário quer um arquivo ou dado específico, o aplicativo que ele está utilizando procura nos computadores de todos os usuários conectados a ele pelo arquivo. À medida que um usuário recebe um arquivo ele passa a poder compartilhá-lo na rede.
Os sitemas P2P funcionam criando uma rede sobreposta sobre a internet, também chamada de rede overlay. Uma rede overlay pode ser definida como sendo uma rede abstrata ou lógica sobre a rede física da Internet que pode ser representada por um grafo no qual uma aresta ligando os nós A e B indica que o nó A mantém uma conexão com o nó B. Esse grafo que representa a rede overlay é formado por todos os nós ativos e conectados entre si da rede. Essas ligações são abstratas, sobrepostas às ligações físicas da internet.
Os sistemas P2P podem ser classificados pela maneira como a rede overlay é organizada:
      • Não-estruturada: a rede é criada de forma totalmente aleatória, sem qualquer tipo de mapeamento ou roteamento entre conteúdo e localização o que gera a grande desvantagem da demora para localizar um conteúdo,  sem garantia de encontrá-lo.
      • Estruturada: é estabelecido um roteamento prévio para os nós criando uma tabela de roteamento distribuído. Para isso usa-se usualmente a tecnologia Distributed Hash Table (DHT), que gera uma identificação lógica no espaço da chave de hash do nó e quais recursos ele tem disponível.  Esse método tem a grande vantagem da busca rápida e garantida, mas tem uma manutenção muito complexa e custosa.