Gnutella
出典: フリー百科事典『ウィキペディア(Wikipedia)』
Gnutella(グヌーテラ)はP2Pプロトコルおよびファイル共有クライアント。
目次 |
[編集] 概要
ナップスター等のP2Pクライアントの場合は、中央サーバが存在し、ファイルのメタデータの管理や検索サービスを提供することにより、P2Pネットワークが機能している。それに対し、グヌーテラはサーバに依存せず、純粋にピア間の通信のみでファイルの送受信等の機能を実現している。
P2Pのしくみの分類中、このようなピア間の通信のみによって機能するものをピュアP2P、ナップスターのようにサーバの仲介を必要とするものを、ハイブリッドP2Pと呼んでいる。
その他には、KaZaA や Skypeに使われているスーパーノード型ハイブリッドP2Pがある。
[編集] 特徴
ナップスターに代表されるP2P第一世代(ハイブリッドP2P)は、中央サーバに依存する為、ネットワークへのトラフィックは少ないが、耐障害性に弱く、サーバがダウンしたらネットワークが形成できないという弱点があった。
それに対して、グヌーテラに代表されるP2P第二世代(ピュアP2P)は、各クライアントがサーバを兼ねる為(サーバント)、耐障害性に強く、製作者によると「核戦争でも生き残れるように設計されたもの(Gnutella is designed to survive nuclear war)」と言われている。 また、「万一、ニューヨークに核爆弾が投下されたとしても、(それ自体はたいへんなことだが)ニューヨーク以外の『Gnutella友達』によってGnutellaNetは維持されるだろう」この言葉が、グヌーテラネットワークの特徴をよく表している。
[編集] グヌーテラのしくみ
中央サーバが存在しないグヌーテラにおいて、最初に接続するときに何処に問い合わせるのか?という問題が出てくる。
グヌーテラ第一世代では、ノード情報を掲示板などで入手する方法が採られていたが、グヌーテラ第二世代になって、GWC(GWebCache)というブートストラップサーバーにより各ノードと接続する方法がとられた。
接続においては、グヌーテラサーバントはまず、pingという接続要求を出す。それに対して、接続相手はpongという信号を返して、ハンドシェイクを行い接続が完了する。
[編集] 開発の経緯
2000年、AOL社の一部門であるNullsoftで、当時社員だった Justin Frankel と Tom Pepper の二人が、最初の Gnutella クライアントを開発した。
2000年3月14日、二人は Nullsoft のサーバー上にプログラムをダウンロードできる形でアップロードした。この出来事はスラッシュドットで告知されたため、その日の内に数千人がソフトをダウンロードした。ソースコードについては、後ほどGPLライセンスの元で提供する予定だった。
翌日、AOL は法的問題を理由にプログラムの提供を中止し、さらにNullsoft部門にプロジェクトを中止させた。しかしこの措置によっても、Gnutellaを止めることはできなかった。
数日後には、リバースエンジニアリングによってプロトコルは解析され、それを元にGnutella互換のオープンソースクローンが登場した。現在でも、様々なグループが Gnutella 互換クライアントの開発を続けている。
[編集] グヌーテラ第一世代
シャットダウンから間もなくして、Brian MaylandがNullsoft のプログラムを入手して、Gnutellaプロトコルの動作原理を理解するためにリバースエンジニアリングした。彼の仕事のおかげでテキストベースのUNIXプログラムを作ったJosh Pieperやより使いやすいGUIをもったプログラムを作ろうとしたGene KanやSpencer Kimballのような人々によってソフトウェア開発がなされることになった。
[編集] グヌーテラ第二世代
ユーザの裾野が広がるにつれ、システムの重大な問題が取り沙汰されはじめた。ネットワークはping リクエストで溢れかえり、同時に非常に多くの検索クエリーで高負荷になった。より高速なハブとしての役割を果たすコンピュータに接続した低速のモデムといったかんじでネットワークのトポロジーは非効率的だった。第一世代のソフトウェアの深刻なバグによってパケットがネットワーク上を不明確にさまよっていた。ネットワークは”本来は少数のユーザのために設計されたもので”100人単位から10,000 単位のユーザに膨張しトラブルに見まわれた。ただ乗り、何も提供していないのにファイルを取り出すだけの人々、によってもユーザが探し物をするのを難しくした。
もう一度、情熱的なコミュニティーが救済に乗り出した。Bob Schmidtが初めてのホストキャッシングシステムを開発した。プログラマー達はGnutella 0.56のコードを修正し、パケットが適切に運ばれるようにTTLバグを取り除こうとした。そして、Jorge Gonzalesはネットワークをダメにするスパマーらからネットワークを守る行動に出た。
この時点で、物事は個人の開発者が全てをまかなうにはあまりにも複雑になっていた。彼らはコードを書き、報道やユーザやお金の工面をしなければならなかった。 こういった事情で、早急に商業的な努力が介入し、「救済に乗り出す」必要が出てきた。Clip2はgnutellahosts.comを開発し、より良いホストキャッシュの実装し、いくらかNapsterのようなトポロジーをGnutellaネットワークに組み入れて合体させるようなやり方で動く小さなサーバReflectorを開発した。
[編集] ソフトウェア
[編集] 外部リンク
- jnutella(日本語)
- Gnutella Wiki(日本語)
- @IT : ネットワーク管理者のためのGnutella入門(日本語)
- GTK-Gnutella(日本語)
- Gnutella Wiki(英語)
- Gnutella Protocol Development(英語)
- LIMEWIRE DEVELOPER RESOURCES(英語)
-Gnutella互換サーバント-
- 360Share
- Acqlite
- Acquisition
- AquaLime
- BearFlix
- BearShare
- Cabos
- Epicea
- eTomiPro
- FilePile P2P
- Foxy
- FreeWire
- FrostWire
- giFT-Gnutella
- GnuAce
- GPU
- GTK-Gnutella
- GnucDNA
- Gnucleus
- iMesh
- Kceasy
- LemonWire
- LimeWire
- LimeWire CVS jum
- LimeWire (666) with Bittorrent
- MLDonkey
- Morpheus
- Mutella
- MXIE
- MyNapster
- NeoNapster
- Phex
- Shareaza
- Swapper.NET
- TrustyFiles
- Vagaa
- XNap
- xolox
- Zultrax