eDonkeyはインターネット上でデータを交換する為に使用される、所謂「ピア・ツー・ピア」クライアントです。あるクライアントが他のユーザからファイルを手に入れ、それをまたその他のユーザに配布することができます。
eDonkeyやその他のP2Pクライアントの共通の祖先はmp3共有ツールのNapsterです。NapsterはeDonkeyより数年古い程度ですが、技術的には一世代前のものになります。Napsterは2つのピア接続の同期を取るのに中央サーバを使用しましたが、eDonkeyはその中央サーバと同様の機能を持ったサーバを数百持っています(丁度今でも268サーバがオンラインになっています)。それらeDonkeyのサーバ群は個人ユーザによって管理されています。サーバソフトは小さいアプリケーションで、百を超えるユーザのサービスにそのインターネット接続帯域幅の数キロバイトしか使用せず、それらのハードウェアの性能を限界まで引き出します(実際に私は「非力な」Celeron 366 DL/UL 256/56 ケーブル接続 で500ユーザを超えるサーバを実行しています)。この強固な分散ネットワークを背景に、eDonkeyはいくつかの理由から情報の自由な流れを制限しようとする、ハリウッドのプロデューサーやRIAAによる甚だしい司法的な攻撃にさえ耐えることができます。
eDonkey上でファイルを配布する時、あなたが実際に接続しているサーバはそのファイルの「証明書」(ハッシュ)を受信し、サーバ内のリストに記述します。同じファイルが複数のユーザによって共有されていた場合、サーバはこれを識別し、このファイルを他のユーザがダウンロードする時は、このファイルの所有者全てから同時にダウンロードすることができます。ダウンロード手順としては、まずオリジナルファイルを表す「.part」ファイルが作成されます。これはオリジナルファイルと同じ大きさになります。このオリジナルファイルを一定の割合(9MB)で分割し、それぞれダウンロードしていきます。この分割した部分ファイルのことを「チャンク」と言い、これを全てダウンロードすれば.partファイルは元の名前にリネームされ、ダウンロードフォルダに移動されてダウンロードが完了します。。この方法では異なるユーザから「チャンク」をダウンロードすることができ、あたかもシングルユーザからダウンロードしているかのように高速に同じファイルを受信することができます...
クライアントZがファイル1の全体を所有しています。「abcdefgh」は「チャンク」を記号化したものです。ファイルはクライアントYがクライアントZから「チャンクf」をダウンロードする為に分割されます。クライアントXとYはチャンクgとaを交換しています。クライアントWは現在ファイルの部品をひとつも持っていませんが、すぐに「チャンクg」の受信が完了し、他のクライアントに向けて共有するようになります。この方法はファイルの配布を高速にします。
もし特定のファイルを検索したい場合は、検索機能を使用できます(あなたのクライアントは実際に接続しているサーバにファイル名を送信します。サーバはリストを参照し、目的のファイルが利用可能なら、特定のファイル属性をクライアントに返信し、このファイルの所有者であるクライアントの「ID群」を知らせます)。プロトコルのより詳細な説明はこちらにあります。
あなたは探しているファイル名を(1)のフィールドに入力してSearchボタンを押します。数秒後サーバはそのリスト内の検索を終え、その結果を(2)で表示されるように返信してきます。サーバ名(とウェルカムメッセージ)そしてユーザ数と共有ファイル数は(3)で見ることができます(サーバに接続されていることが前提条件です。さもなければどんな検索要求も送信できず、あなたのクライアントは他にどんなクライアントも見つけることができません)。サーバが適切なファイルを見つけられなかった場合は、「no search results found(検索結果無し)」(5)を返信します。この場合にはあなたの「serverlist」内の他のサーバを「Extend Search(拡張検索)」(6)しなければなりません。そうすれば(6)で「Extending To:*nyxus*」と表示されているように、検索要求があなたの「serverlist」内の次のサーバに送信されます。
これはネットワークがどのように動作するかの概念図です。この図でクライアントがサーバや他のクライアントとどのように通信するかを見ることができます。この図にない接続はサーバ間通信です。
サーバリストとはあなたのeDonkeyディレクトリ内にある「server.met」と呼ばれるファイルです。このファイルはeDonkeyサーバの名前とIPを含んでいます。server.metは接続するサーバを見つけたり、実際に接続しているサーバに検索要求を送信したり、必要なら拡張検索要求を他のサーバに送信したりする為に必要となります。インターネットには利用可能ないくつかの常に更新されるサーバーリストがあります。これらの内のひとつをこのサイトの「serverlist」セクションで見つけることができます。これはocbMauriceによって記述されています。これとは別に、jaroslavによってプログラムされた「SLUG」(Server List Update Gadget)と呼ばれるものがあります。あいにく、SLUG-Projectは2002年5月に閉鎖されました。
大部分のサーバはあなたのような一般ユーザによって運営されています。そしてその内の大半がダイナミックIPアドレスのADSLによってインターネットに接続されています。これはIP(ユーザの「インターネット上の位置」を特定するアドレスであり、誰でもIPを持っています)が24時間毎に変更されることを意味します。例えば、もしあなたがサーバリスト内にIP=213.45.65.71のサーバを持っていたとしても、(殆どの場合)次の日になれば完全に異なるものになっているでしょう。あなたのクライアントがserver.met内にあるIPだけしか知らなければ、特定のサーバを見つけることはできなくなります。結論:定期的にあなたのサーバリストを更新しなければなりません。これは上で説明したサーバリスト更新リンクを適切にクリックすることによって手動で行うか、「Tool」セクションで入手できるオートアップローダーを起動することによってこれら「更新済みサーバリスト」から自動的にserver.metを得ることができます。
現在、あなたはeDonkeyが何であるか、配布がどのように行われるか、検索要求がどのように送信されるか、サーバがどのように動作するかといった基礎知識を持っています。しかし、あなたはまだネットワークを維持する為にファイルをアップロードするという考えを知りません。これはeDonkey(そしてファイル共有の概念)の基本原理です:全ての人ができるだけ多くを提供し、全ての人がその全てを獲得できるのです! これはあなたが実際にできるのと同じように、他のクライアントがあなたのハードディスクからダウンロードするということを意味します。ファイルの共有は絶対に必要で、ネットワークから最大の恩知を得る為に全ての人がファイルを共有しなければならないのです! もしハードディスクの空き容量を埋めることにどん欲な人や、アップロード帯域幅を本来利用可能なレベルよりも低く制限するような人がいれば、ネットワーク全体が損失を受けることになるでしょう。利用可能なダウンロード速度は全てのアップロードの合計だけしかないのです。もしあなたがアップロードをしないと、自分で自分の首を絞める羽目になります。
eDonkeyには他のファイル共有ツールが持っていない素晴らしい機能があります。あなたはeDonkeyリンクをhtmlサイトから追加することができます。これはあなたがインターネットのどこかでファイルへのリンクを提供できることを意味し、リンクをクリックすればeDonkeyが起動され、その特定のファイルを所有しているクライアントを検索します。例:Suse.Linux.7.3.Professional.cd1.ShareReactor.bin ・・・ このリンクをクリックすることであなたのクライアントは「Suse Linux Professional 7.3 CD1」をダウンロードします。この機能は配布方法に大きな可能性を与えます。多数のウェブサイトが既にeD2Kリンクを利用しています(例:「sharereactor」)。またこれはサーバの負荷を軽減することにもなります。なぜなら、過負荷がかかった検索要求がサーバダウンを招くからです。eD2Kリンクを作成することは簡単で、eDonkey内でファイルを検索し、あなたの要求を満たす検索結果のアイテム上で右クリックして「Copy link to Clipboard(クリップボードにリンクをコピー)」を選択します。それからリンクを追加したいhtmlファイルを開き、Ctrl+Vを押して貼り付けます。リンクは既に正しいHTMLタグを持って表示されます。また、あなたのハードディスク上のファイルへのリンクのリストを作成するツールもあります。これはed2k_listと呼ばれています(smurfUKによって記述されました)。
あなたがOperaユーザなら、残念ながらデフォルト設定ではこの機能を利用することができません。しかしこの問題の為の裏技があります:Operaを終了させ、Operaのメインフォルダにある「opera.ini」(又は「opera6.ini」)を開き、以下のコードを「[User Prefs]」の下に貼り付けて下さい:
TrustedExternalURLProtocols=ed2k
変更を保存した後、opera.iniを閉じます。これで世界一高速なブラウザもeDonkeyリンクの準備ができました(^_-)。