A descoberta por pares e a descoberta de recursos (arquivos no seu caso) são duas coisas diferentes.
Eu estou mais familiarizado com o JXTA, mas todas as redes ponto a ponto funcionam com os mesmos princípios básicos.
A primeira coisa que precisa acontecer é a descoberta por pares.
Descoberta de pares
A maioria das redes p2p são redes "semeadas": na primeira inicialização, um ponto se conecta a um endereço conhecido (codificado) para recuperar uma lista de pontos em execução. Pode ser propagação direta, como a conexão dht.transmissionbt.com
mencionada em outro post ou propagação indireta, como geralmente feito com o JXTA, em que o ponto se conecta a um endereço que fornece apenas uma lista de texto sem formatação de outros endereços de rede.
Depois que a conexão é estabelecida com o (s) primeiro (s) ponto (s), o ponto de conexão realiza uma descoberta de outros pontos (enviando solicitações) e mantém uma tabela deles. Como o número de outros pares pode ser enorme, o ponto de conexão mantém apenas parte de uma DHT (Distributed Hash Table) dos pares. O algoritmo para determinar qual parte da tabela o ponto de conexão deve manter varia de acordo com a rede. O BitTorrent usa o Kademlia com identificadores / chaves de 160 bits.
Descoberta de Recursos
Depois que alguns pares são descobertos pelo parceiro de conexão, o último envia alguns pedidos para a descoberta de recursos. Os links magnéticos identificam esses recursos e são construídos de forma que sejam uma "assinatura" para um recurso e garantem que eles identifiquem exclusivamente o conteúdo solicitado entre todos os pares. O ponto de conexão enviará uma solicitação de descoberta para o link / recurso magnético aos pontos ao seu redor. O DHT é construído de tal maneira que ajuda a determinar quais pares devem ser solicitados primeiro pelo recurso (leia Kademlia na Wikipedia para obter mais informações). Se o par solicitado não reter o recurso solicitado, ele geralmente "transmitirá" a consulta para pares adicionais buscados em seu próprio DHT.
O número de "saltos" nos quais a consulta pode ser transmitida geralmente é limitado; 4 é um número usual em redes do tipo JXTA.
Quando um par mantém o recurso, ele responde com todos os detalhes. O ponto de conexão pode então se conectar ao ponto que contém o recurso (diretamente ou através de um relé - não vou entrar em detalhes aqui) e começar a buscá-lo.
Recursos / serviços em redes P2P não estão diretamente conectados aos endereços de rede: eles são distribuídos e essa é a beleza dessas redes altamente escalonáveis.