私はさらに別のビットトレント クライアントの実装に取り組んでおり、現時点では DHT に苦労しています。この仕様http://www.bittorrent.org/beps/bep_0005.htmlに従って実装されていますが、デバッグを開始すると、ネットワーク上の他のノードの応答が異なることに気付きました。
たとえば、find_node は、ターゲット ノード情報または 8 つの最も近いノードのいずれかを返すことになっています。ほとんどのノードは 34 の最も近いノードで応答し、通常、それら 34 のうち 1 ~ 3 つのノードのみが結果の ping 要求に正常に応答します。
より良い実装の推奨事項を記載した別のドキュメントはありますか? ノードの状態を疑わしい状態に変更するために 15 分間隔を使用することは効率的ではないことが既に証明されている可能性があり、10 または他の数値を使用する必要がありますか? 最新の最適な提案はどこで見つけることができますか?
もう一つ奇妙なことがあります。router.bittorrent.com のようなブートストラップ ノードは、さらに最も近いノードで応答し、通常、「ノード」BDictionary プロパティのバッファー長は 6 で割り切れません (コンパクトなノード情報: IP の場合は 4、ポートの場合は 2)。今のところ、6 で割り切れる最も近い長さでバッファーを切り取るだけですが、それはすべて奇妙です。なぜそれが起こるのか誰か知っていますか?