質問

最近、Kademlia Protocolのドキュメントを読みましたが、プロトコルを理解しようとしましたが、まだ質問があります。IPまたはポート以外のIDを知っているときにノードが別のノードを見つけなければならないのですか? IPやポートを知らないのに、なぜIDを持っているのですか?彼はどこでIDを手に入れましたか? 2つの異なるノード間の「距離」は、ルーティング距離や実際の距離ではなく、アルゴリズムを使用してノードをすばやく見つけることができる仮想距離にすぎないと思います。

英語は私の母国語ではないので、私の英語はあまり明確ではないかもしれませんが、必要に応じて自分自身を明確に表現しようとします。どうもありがとう!

役に立ちましたか?

解決

Chaoが言ったように、ネットワークの分散性は、ノードがIDと連絡先の詳細を話し合う他のノードに公開する必要があることを意味します。 IDが連絡先情報にマッピングされる中央の場所はないため、各ノードは、ネットワーク上のノードのサブセットのマッピングを独自のルーティングテーブルに保持する必要があります。

Kademliaルーティングテーブルは構造化されているため、ノードはそれらに近いネットワークの詳細な知識を持ち、さらに指数関数的に知識を減らします。

ID間の概念的距離の尺度としてのBitwise XORの使用には、特定のターゲットIDに対して、2つのIDがターゲットまで同じ距離を持つことができないという利点があります。

IDが00〜63の範囲にある簡単な例を想像してください。Kademliaが距離の尺度として純粋な数学的差異を使用した場合、15と35は25まで同じ距離になります。 15〜25の間の距離は22で、25〜35の距離は58です。

このようにして、ターゲットIDに最も近いIDのグループを明確に計算できます。

定数KにはKademliaにいくつかの用途がありますが、それは主に複製因子です。言い換えれば、データの最も近いノードにデータのIDに保存されます。

ルックアッププロセスは、kノードのグループを(それぞれに保存する前に)または単一のデータを返すように設計されています。

このため、純粋なカデムリアは単一のノードを見つけるのに最適ではないので、あなたの質問の一部があまりにも関連性があるかどうかはわかりません。 Kademliaを使用して単一のノードを見つけたい場合、ノードがターゲットノードの連絡先の詳細を返すとすぐに(ターゲット値が早期に終了するのと同じ方法で、ノードがターゲットノードの連絡先の詳細を返すとすぐに、Lookup Processを変更する価値があります。プロセス中に見つかります)。

他のヒント

ネットワークは配布されているため、定義上、ID->アドレスマッピングのマスターテーブルはありません。ノードは、他のすべてのノードについて知る必要はありません(そして通常はしません)。ノードを「見つける」プロセスは、基本的にターゲットに直接ターゲットに「最も近い」「最も近い」ノードを「最も近い」と尋ねることです。 どのノードが近いか ターゲットに。そのクエリの結果は、次のノードのグループをクエリするための次のグループを提供し、プロセスは繰り返されます - そして、ノードがそれよりも近い結果を返すため、各反復は最終的にターゲットに近いノードを見つける傾向があります「ああ、ノードX?彼はあそこにいる」と言うことができるノードに到達します。

少なくともそれは私がそれを理解していることです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top