eMule プロトコルの DHT アルゴリズム

eMule プロトコルの DHT アルゴリズム

BT プロトコルと eMule プロトコルのアルゴリズムにはいくつかの違いがあり、この 2 つを併用することはできません。では、このアルゴリズムの違いをどのように説明すればよいのでしょうか?まず、2 つのプロトコルの DHT アルゴリズムを理解しましょう。 DHT の正式名称は Distributed Hash Table で、分散ストレージ方式です。このタイプのネットワークでは、中央ノード サーバーは必要ありません。代わりに、各クライアントが狭い範囲でのルーティングと少量のデータの保存を担当し、DHT ネットワーク全体のアドレス指定と保存を実現します。中央ノード サーバーとは異なり、DHT ネットワーク内の各ノードはネットワーク全体の情報を維持する必要はなく、ノード内の隣接する後続ノードの情報のみを保存するため、帯域幅の占有とリソースの消費が大幅に削減されます。 DHT ネットワークは、単一ノード障害の問題を回避するために、キーワードに最も近いノードに冗長情報を複製します。 DHT ネットワーク全体を 1 つの都市と見なすと、各クライアントは都市の隅々まで地図に描かれ、その上に周囲の地形状況が描かれます。これらの地図を組み合わせると、都市の全体像が浮かび上がります。

DHT で使用される最も有名なアルゴリズムは Kademlia です。これは最初に eMule で使用され、その後 Bitcomet、Azureus、BitTorrent が続き、これらも Kademlia アルゴリズムに基づく DHT を使用しています。ただし、それぞれの実装プロトコルはまったく同じではないため、相互に互換性がありません (BitComet は BitTorrent と互換性があり、Azureus は eMule に似ていますが、他のものと互換性がありません)。

有名なBiTtorrentが2005年5月にバージョン4.0でKademliaプロトコルに基づくDHT技術を実装した後、国内のBitCometとBitSpiritもすぐにBitTorrentと互換性のあるDHT技術を実装し、トラッカーレスダウンロード方法を実現しました。 eMule プロトコルは、Kademlia に似たテクノロジ (BT では DHT、eMule では Kad と呼ばれます) に基づいて実装されています。BT ソフトウェアで使用される Kd テクノロジとの違いは、キー、値、ノード ID を計算する方法が異なることです。

BTプロトコルの場合、国内ユーザーの間で最もよく使用されているBTクライアントはBitcometです。デフォルトでは、BitCometは設定なしでDHTネットワークに自動的に接続して使用できます。ソフトウェアを起動すると、DHT ネットワーク接続の TCP ポート番号と同じ UDP ポート番号が使用されます。 P2P 技術のあらゆる改善は著作権の問題と密接に関係しており、非常に注目を集めている DHT ネットワークについても同様です。

実際、BT が DHT ネットワークを採用すると、著作権侵害対策はより困難になるでしょう。これまでは、ユーザーが BT をダウンロードするときに、まず Tracker サーバーに接続し、ダウンロードおよびアップロードしているユーザーのリストに基づいて通常のファイル交換を実行する必要がありました。この場合、トラッカー サービスを提供する Web サイトをブロックするだけで、著作権侵害の拡散経路を遮断できます。 DHT ネットワークは異なります。現時点では、インターネット上で BT クライアントを実行しているすべてのユーザーが DHT ネットワークのノードとして機能できます。そのため、Tracker サービスを提供する Web サイトがブロックされた場合でも、ユーザーはグローバル論理 DHT ネットワークを介してファイルを共有できるため、著作権侵害の防止は問題になりません。インターネットを利用するすべての人にインターネットの使用を控えるよう要請するか、BT ソフトウェアの使用が重罪と宣言されない限りは。しかし、テクノロジーは常に諸刃の剣でした。 BT が著作権侵害を助長していると批判する一方で、BT が合法的な作品を配布するチャネルとしてますます利用されるようになってきていることも認識すべきです。過剰なトラフィックに耐えられなくなったため、一部の無料および共有ソフトウェア (Foobar2000 など) は、合法的なソフトウェアを配布するために BT を使用し始めました。Linux システムでは、BT を主要な配布チャネルとして使用しています。

これは eMule プロトコルでも使用され、KAD と呼ばれることもありますが、具体的な実装プロトコルは異なります。 Kad ネットワークの主な目標は、サーバーの必要性を排除し、スケーラビリティを向上させることです。従来の ed2k サーバーと比較すると、一定数のユーザーしか処理できません (サーバー リストでも各サーバーに最大ユーザー数があることが示されています)。サーバーに接続するユーザーが多すぎると、ネットワークのパフォーマンスが大幅に低下します。従来の ed2k ネットワークでは、ハッシュ リスト情報の転送と保存にサーバーのサポートが必要でしたが、kad ではサーバーを経由せずに ed2k ネットワークのすべての機能を実行できます。 Kad は UDP ポートのサポートを必要とします。その後、Emule はクライアントの要件に応じて自由に接続できるかどうかを自動的に判断し、ID を割り当てます。このプロセスは、ed2k の高 ID と低 ID のチェックと非常に似ていますが、この ID の意味は ed2k ネットワークとは異なります。これは「ly」ステータスを表します。

Kad は、ユーザー数と接続の有効性を自己組織化し、自己調整することができます。したがって、ネットワークの損失を最小限に抑えることができます。上記の機能により、Kad はサーバーレス ネットワークとも呼ばれます。まだアルファ段階ですが。 Kad キーワード検索を実行すると、誰でもファイル共有ネットワーク上の情報を見つけることができます。ファイル インデックスを保存する中央サーバーはありません。この作業はすべてのクライアントによって均等に分担されます。共有するファイルを持つブランチ ノードは、まずファイルの内容を処理し、内容からハッシュ値のセットを計算します。この値のセットは、共有ネットワーク内のファイルを識別します。 Kad ネットワークは、まず各顧客に一意の ID 値を割り当て、次に異なる ID 値に対して XOR を実行して、2 人の顧客間の「距離」を取得します。Kad はバケットを維持します。「距離」が近いほど、バケット内のユーザーの数が多くなります。Kad は、バケット内のユーザーを定期的にクリーンアップして、その有効性を維持します。

ファイルとユーザーについては、eMule プロトコルには 2 つの構造があります。Kad を使用すると、ファイルとファイルに関連するユーザー情報を見つけることができます。また、冗長性の問題を考慮するために、Kad は自身の情報を「最も近い」一定数のユーザーにコピーします。そのため、オフラインになった後でもこの情報は失われません。 Kad 自体には nodes.dat ファイル (ノード ファイルとも呼ばれる) があり、Kad ネットワーク内の隣接ノードが格納されます。私たちは皆、これらのノードを介して Kad ネットワークに参加します。これは、Bt ダウンロードでルーターを介して DHT ネットワークに参加することと同じです。

注: eMule プロトコルの特定の実装では、使用される ID は 28 ビットです。たとえば、ユーザーの ID を見つけるには、XOR メソッドを使用して 2 つの ID に対して XOR 演算を実行します。2 つの ID のバイナリ XOR 値によって、それらの間の論理的な距離が決まります。たとえば、00 は 00 よりも 0 に近いです。次に、ユーザーが KAD に参加すると、まず既知のユーザーを通じて一連のユーザー ID、IP アドレス、ポートが検索されます。ユーザーが特定のユーザー A を見つけたい場合、まず、ユーザー B、ユーザー C、ユーザー D など、論理的に A に近い複数の既知のユーザーに問い合わせます。B、C、D は、自分が知っている近いユーザーの ID、IP アドレス、ポート番号をユーザーに伝えます。類推により、ユーザーは最終的に A を見つけます。したがって、検索数は logN のオーダーになります。ここで、N は検索する人の数を表します。

最も残念なことは、BT と eMule の DHT アルゴリズムが相互運用性がなく、互換性がないことです。

注: Kad ネットワークでは、システムに保存されるデータはペアで保存されます。 BT の DHT 実装では、キー値はトレント ファイルの info_hash 文字列であり、その値はトレント ファイルと密接に関連しています。

<<:  Bzip2アルゴリズムハードウェアアクセラレーション方式

>>:  eMule プロトコル スライス選択アルゴリズムの分析

ブログ    
ブログ    

推薦する

...

北京ユニサウンドオープンデー:フルスタックAIハードコアテクノロジーを公開

3月27日、2019 Unisound AIテクノロジーオープンデーの第一弾が北京で成功裏に開催され...

デジタルヒューマンのための大規模モデル

ビッグモデルはソフトウェア業界全体を変えるでしょう。その代表的な製品の一つがデジタルヒューマンです。...

AIが医療業界の情報セキュリティに及ぼす影響

このインタビューでは、Moss Adams のマネージング ディレクターである Troy Hawes...

実践的な Golang の基本データ構造とアルゴリズム、k-means クラスタリング アルゴリズム

起源最近読んだ本『はじめてのアルゴリズム』(石田康樹、宮崎修一)この一連のノートは、Golangの実...

「最もわかりにくい」Paxos アルゴリズムと、データベースの高可用性におけるその使用法をわかりやすい言葉で理解する

最近、Paxos アルゴリズムについてみんなが議論しています。私はオンラインで多くの記事を読みました...

機械学習の発展の歴史と啓蒙

[[188091]]近年、人工知能の目覚ましい発展、特にAlphaGoと韓国のチェスプレイヤー、イ・...

...

...

...

人工知能:創薬の厳しい時代に革命を起こすもの

業界の専門家は、人工知能(AI)の強力なサポートにより、医薬品の研究開発分野は大きな変化の波に見舞わ...

リザーブプールコンピューティングにおける新たなブレークスルー:ニューロン数が少なくなり、コンピューティング速度が最大100万倍に高速化

複雑なシステムを予測するには、より多くのニューロンを使用する必要がありますか?ネイチャー・コミュニケ...

科学ニュース!光速でのディープラーニングを実現、GPUに別れを告げる

GPU がディープラーニングを促進したのであれば、今日ではディープラーニングへの欲求はすでに GPU...