分散ハッシュ テーブルについて詳しく解説

分散ハッシュ テーブル(分散ハッシュ テーブルDHT ) は、特定の P2P ネットワークなどの分散システムでの情報の識別と取得を可能にするテクノロジーです。ハッシュ テーブル全体はネットワークのすべての要素に分散されたこれらすべての構成要素で仮想的に構成されており、それぞれがその一部を持っています。

分散ハッシュ テーブルは、特にChordプロトコル、P2P CAN プロトコル、 TapestryKademlia (eMule で使用)、 Ares Galaxyで使用されます。このシステムは、Azureus、Bitcomet、さらには µTorrent (マイクロ トレントと発音) などのBitTorrentプロトコルの最近の多くのクライアントでも使用されています。 DHT を使用した最初の BitTorrentクライアントはAzureus で、次に公式 BitTorrent クライアントが続き、これらは 2 つの異なるバージョンでした。その後、正式バージョンは Mainline DHT と呼ばれるようになりました。現在、ほとんどのクライアントがメインライン DHT バージョンをサポートしています。

原理

多数のユーザー (500 万人) が自分のコンピュータ上で P2P (ピアツーピア)ソフトウェアを起動したと仮定します。全員がいくつかのファイル (MPEG 形式の映画、画像、ディスクなど) を共有します。

たとえば、ユーザー (Luc) は、音楽アルバム「Les idees santés de Serge Dassault 」(クリエイティブ コモンズ ライセンスで利用可能) を所有しています。

別のユーザー (ピエール) がこのアルバムをダウンロードしたいとします。彼の P2P ソフトウェアはどのようにして Luc のコンピュータを見つけることができるのでしょうか?

ピエールのソフトウェアは、おそらく 500 万台のコンピュータに、たまたまこのアルバムがあるかどうかを尋ねることができるでしょう。すると、Luc のソフトウェアは「私はそれを持っているので、転送を開始できます。」と応答します。

ただし、 500 万台のコンピュータにこのアルバムがあるかどうかを尋ねるのは非常に時間がかかります。「このアルバムを探していますが、持っていますか?」という質問が常に何百万もあり、「いいえ」という答えが何百万も出てくるからです。 、 ごめん!”

すべてのユーザーが共有するファイル名をアーカイブする大きなディレクトリがあれば、この質問は解決されます。答えを得るには、この「大きなディレクトリ」(=ハッシュ テーブル) に音楽アルバム「Les idees santés de Serge Dassault」を問い合わせるだけで十分です。 : 「Luc のコンピュータ (および Mathieu、Paul などのコンピュータ) で利用可能です。」

これが、第一世代の P2P ネットワークの仕組みです。 「大きなディレクトリ」として機能する中央サーバーがありました。例: NapsterAudiogalaxy 、Edonkey、Kazaa

このソリューションは脆弱であるため、ますます放棄されています。中央サーバーがダウンした場合はどうすればよいですか?それとも引火しますか?それとも警察に押収されたのでしょうか?ネットワークが機能しなくなり、共有ファイルを検索できなくなります。

そこで、P2P ソフトウェア プログラマーはアイデアを思いつきました。「大きなディレクトリ」は 1 台のコンピュータ上ではなく、数百台のコンピュータ上にあるべきだということです。そして彼らは、各ユーザーが大きなディレクトリの小さな部分を担当するような方法でソフトウェアを作ればいいだけだと自分たちに言いました。 500 万人のユーザーはそれぞれ、分散ハッシュ テーブルと呼ばれる小さな部分を担当します。

たとえば、ユーザー Jean-Claude は A で始まるすべてのファイルを担当し、Toto は B で始まるすべてのファイルを担当します。新しいユーザーがネットワークに接続すると、ソフトウェアは最初にどのファイルを共有できるかを通知します。たとえば、彼が「ブルデュー」という映画を持っている場合、彼はユーザー Toto (B で始まるファイルの責任者) に次のように言います。「私は映画『ブルデュー』を持っています。人々がそれを望むなら、それは家にあります。」したがって、検索は非常に高速になります。 「Bourdieu」で検索すると、「B」の文字の担当者に直接問い合わせます。

現実はもう少し複雑です。「B」で始まる単語に対して 1 人の人間が責任を負うべきではありません。コンピュータの電源を切ると、ディレクトリの一部が失われるからです。したがって、ディレクトリに冗長性を導入する必要があり、複数のコンピュータが同時に同じ単語を担当します。さらに、何億もの共有ファイルがあるため、ディレクトリを分割する原則はアルファベットの文字ではなく、ファイル タイトルの単語のハッシュ テーブルに従っています。

最後に、コンピューターは単語をアーカイブするすべてのコンピューターを認識する必要はありません。通常、約 100 台のコンピュータを認識します。ユーザーが「Bourdieu」で検索を行っても、B で始まるファイルをアーカイブするコンピュータがわからない場合、

  • 最も近いコンピュータ (たとえば、C で始まるファイルをアーカイブするコンピュータ) に「B で始まる単語を処理するコンピュータを知っていますか?」と尋ねます。
  • もう 1 人は、「近所の人たちの中で、B を処理するコンピュータを知っています。BA、BO、BU で始まるファイルを処理するコンピュータさえ知っています。だから、あなたは、B で始まるファイルを知っている人に聞いたほうが良いでしょう」と答えます。たまたま探している映画があれば BO を使ってください。」それから「BO」の担当者に尋ねると、「はい、私はあなたが欲しいフィルムを持っているコンピュータを知っています。」と言うでしょう。あるいは、知らない場合は、「あなたの映画は知りませんが、BOU で始まるファイルを扱うコンピュータは知っています。だから聞いてください。」と答えるでしょう。
分散ハッシュ テーブルについて詳しく解説
  1. Разпределена хештаблица – bulgare
  2. Taules de hash distribuïdes – catalan
  3. Verteilte Hashtabelle – allemand
  4. Distributed hash table – anglais
  5. Tabla de hash distribuida – espagnol
  6. جدول درهم‌سازی توزیع‌شده – persan

分散ハッシュ テーブルについて詳しく解説・関連動画

サイエンス・ハブ

知識の扉を開け、世界を変える。