El descubrimiento entre pares y el descubrimiento de recursos (archivos en su caso) son dos cosas diferentes.
Estoy más familiarizado con JXTA, pero todas las redes punto a punto funcionan con los mismos principios básicos.
Lo primero que debe suceder es el descubrimiento entre pares.
Descubrimiento entre pares
La mayoría de las redes p2p son redes "sembradas": cuando se inicia por primera vez, un par se conectará a una dirección conocida (codificada) para recuperar una lista de pares en ejecución. Puede ser una siembra directa como conectarse a dht.transmissionbt.com
como se menciona en otra publicación o una siembra indirecta como se hace generalmente con JXTA donde el par se conecta a una dirección que solo entrega una lista de texto sin formato de otras direcciones de red de pares.
Una vez que se establece la conexión con los primeros (pocos) pares, el par de conexión realiza un descubrimiento de otros pares (enviando solicitudes) y mantiene una tabla de ellos. Dado que el número de otros pares puede ser enorme, el par de conexión solo mantiene parte de una tabla de hash distribuido (DHT) de los pares. El algoritmo para determinar qué parte de la tabla debe mantener el par de conexión varía según la red. BitTorrent usa Kademlia con identificadores / claves de 160 bits.
Descubrimiento de recursos
Una vez que el par de conexión ha descubierto algunos pares, este último envía algunas solicitudes para que descubran recursos. Los enlaces magnéticos identifican esos recursos y están construidos de tal manera que son una "firma" para un recurso y garantizan que identifiquen de manera única el contenido solicitado entre todos los pares. El par de conexión enviará una solicitud de descubrimiento para el enlace / recurso magnético a los pares a su alrededor. El DHT está construido de tal manera que ayuda a determinar a qué pares se les debe pedir primero el recurso (lea en Kademlia en Wikipedia para obtener más información). Si el par solicitado no retiene el recurso solicitado, generalmente "transmitirá" la consulta a pares adicionales extraídos de su propio DHT.
El número de "saltos" a los que se puede pasar la consulta suele ser limitado; 4 es un número habitual con redes de tipo JXTA.
Cuando un compañero retiene el recurso, responde con todos sus detalles. El par de conexión puede conectarse al par que contiene el recurso (directamente o mediante un relé; no entraré en detalles aquí) y comenzar a buscarlo.
Los recursos / servicios en las redes P2P no están directamente conectados a las direcciones de red: se distribuyen y esa es la belleza de estas redes altamente escalables.