Одноранговое обнаружение и обнаружение ресурса (файлы в вашем случае) - это две разные вещи.
Я больше знаком с JXTA, но все одноранговые сети работают по одним и тем же базовым принципам.
Первое, что должно произойти, - это открытие со стороны сверстников.
Peer Discovery
Большинство p2p-сетей являются «затравленными» сетями: при первом запуске одноранговый узел подключается к общеизвестному (жестко запрограммированному) адресу для получения списка работающих одноранговых узлов. Это может быть прямое заполнение, например, подключение к тому, dht.transmissionbt.com
как упомянуто в другом сообщении, или косвенное заполнение, как это обычно делается с JXTA, когда одноранговый узел подключается к адресу, который предоставляет только простой текстовый список адресов других одноранговых сетей.
Как только соединение установлено с первым (несколькими) одноранговыми узлами, соединяющийся одноранговый узел выполняет обнаружение других одноранговых узлов (отправляя запросы) и поддерживает их таблицу. Поскольку число других одноранговых узлов может быть огромным, подключающийся одноранговый узел поддерживает только часть распределенной хэш-таблицы (DHT) одноранговых узлов. Алгоритм определения того, какую часть таблицы должен поддерживать подключающийся узел, зависит от сети. BitTorrent использует Kademlia с 160-битными идентификаторами / ключами.
Обнаружение ресурсов
После того, как соединяющийся узел обнаружил несколько узлов, последний отправляет им несколько запросов на обнаружение ресурсов. Магнитные ссылки идентифицируют эти ресурсы и построены таким образом, что они являются «подписью» для ресурса и гарантируют, что они однозначно идентифицируют запрошенный контент среди всех пиров. Соединяющийся узел затем отправит запрос на обнаружение магнитной ссылки / ресурса узлам вокруг него. DHT построен таким образом, что он помогает определить, каких пиров нужно сначала запросить для ресурса (подробнее о Kademlia в Википедии). Если запрошенный узел не удерживает запрошенный ресурс, он обычно «передает» запрос дополнительным узлам, извлеченным из его собственного DHT.
Количество «прыжков», на которые может быть выполнен запрос, обычно ограничено; 4 - это обычный номер в сетях типа JXTA.
Когда узел удерживает ресурс, он отвечает со всеми подробностями. Соединяющийся одноранговый узел может затем подключиться к одноранговому узлу, удерживающему ресурс (напрямую или через ретранслятор - я не буду вдаваться в подробности здесь), и начать извлекать его.
Ресурсы / сервисы в P2P-сетях напрямую не связаны с сетевыми адресами: они распределены, и в этом прелесть этих масштабируемых сетей.