Куда отправить объявление DHT?

При написании другого готового к DHT торрент-клиента я столкнулся с вопросом об объявлении на DHT. Ясно, что мне нужно отправлять get_peers на узлы все ближе и ближе к поисковому хешу информации, пока хотя бы один узел не ответит списком пиров, имеющих этот хеш информации.

Как я понимаю, я могу найти несколько узлов, отвечающих перекрывающимся списком пиров, знающих хэш информации. Теперь вопрос заключается в том, должен ли я объявить о своем присутствии всем узлам, которые возвратили список пиров, или выбрать только один. Какие рекомендации на этот счет?

Может быть, я ошибаюсь, и это работает несколько иначе, и мое предположение неверно, и невозможно иметь несколько узлов со списком пиров для одного и того же хэша информации?

1 ответ

Ясно, что мне нужно отправлять get_peers на узлы все ближе и ближе к поисковому хешу информации, пока хотя бы один узел не ответит списком пиров, имеющих этот хеш информации.

Вы фактически выполняете итеративный поиск до тех пор, пока ответы не вернут новую контактную информацию узла, которая ближе к целевому ключу, чем K ближайших записей, которые ответили и включили токен записи.

Теперь вопрос заключается в том, должен ли я объявить о своем присутствии всем узлам, которые возвратили список

Только для K-closest-node-set. В случае сбоя объявления (сообщение об ошибке или отсутствие ответа) вы также можете вернуться назад, чтобы убедиться, что вы получили как минимум K подтвержденных запросов хранилища.

Другие вопросы по тегам