ネットワークガイド
eMuleのリリース v.42.1から2つの異なるネットワークがサポートされるようになりました - それはeD2kネットワークを基礎とするクラシックサーバーと、Kademliaを基礎とするより少ないトポロジの全く新しいサーバーです。
本質的には両方のネットワークが同じ機能を持っています。それらの両方はダウンロードするファイルや他のユーザを検索する為に、それぞれ異なる方法を採用しています。
基礎
ファイル識別
全てのファイルにはハッシュ値が与えられます。このハッシュは一意にファイルを特定するための数字と文字の組み合わせです。
大部分のファイル名はファイルに関連づけられているかもしれませんが、ファイルのハッシュ値については全く関係がありません。
これはたとえそれぞれのユーザがどのようなファイル名をつけたとしても、全てのソースから特定のファイルを検索できることを意味します。
さらに、ファイルは9.28MBのデータ部品として分割され、各部分にそれぞれハッシュ値が与えられます。
例えば600MBのファイルは65個の部品に分割されることになります。そしてネットワーク内で使用するために、ファイルハッシュはこれらの部分ハッシュから作成されます。
他のクライアントを特定
ファイルハッシュと同じように、ネットワーク内のそれぞれのユーザは一意で永続的なユーザハッシュを持っています。
このユーザ登録名は公開/秘密鍵認証によって強固に保証され、その誤用を防ぎます。
データのダウンロード
eMuleでは実際のダウンロードが選択したネットワークによって影響されないことを理解しておくことが重要です。
ネットワーク形態はファイルの検索と、ファイルのソースであるクライアントを検索することだけに関係があります。
ソースが見つかればあなたのクライアントはそのソースと連絡を取ります。
対象となったソースはその特定のダウンロード用にキュー位置を予約します。
一定の待ち時間の後に一番目のキュー位置になった時、データを受信するための権利があなたに与えられます。
eD2kに基づくクラシックサーバー
ネットワークに接続
このネットワークの肝はeD2kサーバーです。それぞれのクライアントはネットワークに参加する為にサーバーへ接続しなくてはいけません。
あなたのクライアントがサーバーへ接続する時、他のクライアントが自由にあなたのクライアントに接続することが出来るかどうかを確認します。
もし自由に接続できるなら、サーバーはいわゆるhigh IDをあなたのクライアントに割り当てます。
もし通信が何らかの形で妨害されている場合は、サーバーはLowIDをあなたのクライアントに割り当てます。
IDが割り当てられた後、eMuleは全ての共有ファイルのリストをサーバへ送信します。
サーバはあなたが送信したファイル名とハッシュ値をそのデータベースへ追加します。
ファイルの検索
一旦ネットワークに接続すれば、ファイル名に存在するキーワードを検索することができるようになります。
検索にはローカル又はグローバルのどちらかの場合があります。ローカル検索(あなたが接続したサーバのみを検索)の場合は、検索は高速になりますが、その検索結果は少なくなるでしょう。
グローバル検索(ネットワーク中の全てのサーバを検索)の場合は、検索に時間がかかりますが、より多くの結果を得ることができるでしょう。
各サーバーはそのローカルデータベース内のキーワードを調べ、キーワードに一致した全てのファイル名を(ハッシュ値と共に)返します。
ファイルのソースを検索
eMuleの検索機能や多数のウェブサイトで提供される特殊なeD2kリンク形式によってダウンロードを追加することができます。
一旦ダウンロードリスト内に追加されれば、eMuleはまず始めに(接続している)ローカルサーバーにその特定のダウンロード用のソースを問い合わせ、その後ネットワーク内の他のサーバーに問い合わせます。
サーバーはそのデータベース内に格納されているファイルのハッシュ値を調べ、それを持っていることが判明したクライアントを返します。
ソースとはハッシュに一致したファイルの完全な部品(9.28MB)を、少なくともひとつダウンロードした他のクライアントのことです。
Kademliaサーバー無しネットワーク
ネットワークに接続
このネットワークに接続するために唯一必要なものが、既に接続済みのeMuleクライアントのIPとポートです。
これはブートストラップと呼ばれます。
一旦クライアントがネットワーク内に入れば、クライアントは自由にコンタクトすることが出来るかどうかを確認するために他のクライアントに問い合わせします。
この方法はサーバー上でのHighID/LowIDチェックと非常によく似ています。もし自由にコンタクト出来るなら、あなたにはID(HighIDと同じ)と "オープン" ステータスが与えられます。
自由にコンタクトできない場合は "ファイアーウォール" ステータスが割り当てられます。
バージョン v0.44aから、Kademliaネットワークはファイアーウォールされたユーザーのために "友達" というステータスをサポートしました。
"友達"とは "オープン" 状態にあり、接続のための中継点として機能してくれる他のKademliaクライアントのことです。
勿論、"友達"は他のクライアントであるためファイアーウォールされたユーザーが管理することは出来ません。
Kademliaでの検索
このネットワークではあなたが検索する対象は重要ではありません。ファイル名やダウンロード用のソース、他のユーザ等の検索は全て同じように動作します。
クライアントや彼らが共有しているファイルを管理しているサーバーが存在しないため、ネットワークに参加しているそれぞれのクライアントによってその作業が行われます - 要するにあらゆるクライアントが各々小さなサーバーになるという訳です。
全てのクライアントが一意なハッシュ値によって特定されることから、Kademliaの概念とはこのハッシュに基づく特定の"責任関係"を関連づけることだと考えることができます。
Kademliaネットワーク内の各クライアントは特定のキーワードやソース用のサーバーとして動作します。
クライアントのハッシュは特定のキーワードかソースを決定します。
したがって全ての種類の検索の目標は、現在の検索項目に対する責任関係を持っているクライアントを見つけることです。
これは対象までの最短距離を他のクライアントに尋ねることにより、目標のクライアントへ到達可能な距離を割り出すことで達成されます。
概要
両方のネットワークは同じこと(ファイルやソースの検索)を達成するためにそれぞれ全く異なる概念を持っています。
Kademliaネットワークの第一目標はサーバーから独立して、スケーラビリティ(拡張性)を改善することにあります。
サーバー形式ではある一定の数だけしかユーザーを扱うことが出来ず、大きなサーバーが落ちたときにはネットワークは著しくハンディキャップを背負うことになります。
Kademliaはユーザの数やその接続特性に依存して自分自身を構成し、可能な最良の性能を得るために自分自身を調整します。したがってこれは大規模なネットワーク損失に対する備えとなります。
Last Update: 2004-09-12, Monk
12.09.2004 8:00