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 プロトコル スライス選択アルゴリズムの分析

ブログ    
ブログ    

推薦する

...

人間の心臓細胞から作られたロボット魚は本物の魚よりも速く泳ぐ。ハーバード大学の新しい研究がサイエンス誌に掲載される。

心臓ペースメーカーの正確なメカニズムはわかっていませんが、この物理的プロセスを再現する「心臓」を私た...

人工知能は諸刃の剣です。EUは利益を促進し、害を避けるための規制を導入しました。

近年、交通と環境に対する要求が継続的に高まっており、わが国の新エネルギー自動車は急速な発展を遂げてい...

...

...

Pythonでシンプルだが強力な顔認識システムを書く

face_recognition は、強力でシンプル、使いやすい顔認識オープンソース プロジェクトで...

...

自動機械学習ガイド: 4 つの成熟モデル

[51CTO.com クイック翻訳] 人工知能と機械学習の概念は、データサイエンスコミュニティで人気...

...

2022年に注目すべき5つのAI活用法

AI インフラストラクチャの継続的な革新と開発により、今日の仕事のやり方は変化しました。人工知能は...

ボストン・ダイナミクスの工場で働くロボット犬が話題に

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

シンプルで使いやすいPythonの顔認識アルゴリズムをいくつかまとめます

こんにちは、みんな。今日は、シンプルで使いやすい顔認識アルゴリズムをいくつかまとめます。顔認識はコン...

分散ID生成スノーフレークアルゴリズム

一意の ID はデータの一意性を識別します。分散システムで一意の ID を生成する方法は多数あります...