Gnutellaのソースを表示
←
Gnutella
移動先:
案内
、
検索
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
要求した操作を行うことは許可されていません。
このページのソースの閲覧やコピーができます。
'''Gnutella'''('''グヌーテラ'''、'''ニューテラ''')は[[Peer to Peer|P2P]][[プロトコル]]および[[ファイル共有]][[クライアント]]。 == 概要 == [[ナップスター]]等のP2Pクライアントの場合は、中央[[サーバ]]が存在し、ファイルの[[メタデータ]]の管理や検索サービスを提供することにより、P2Pネットワークが機能している。それに対し、 グヌーテラはサーバに依存せず、純粋に[[ピア]]間の通信のみでファイルの送受信等の機能を実現している。 P2Pのしくみの分類中、このようなピア間の通信のみによって機能するものを[[ピュアP2P]]、ナップスターのようにサーバの仲介を必要とするものを、[[ハイブリッドP2P]]と呼んでいる。 その他には、[[Kazaa Lite|KaZaA]] や [[Skype]]に使われている[[Peer to Peer#スーパーノード型P2P|スーパーノード型ハイブリッドP2P]]がある。 == 特徴 == ナップスターに代表される[[第一世代P2P]](ハイブリッドP2P)は、中央サーバに依存する為、ネットワークへの[[トラフィック]]は少ないが、耐障害性が低く、サーバがダウンしたらネットワークが形成できないという弱点があった。それに対してグヌーテラに代表される[[第二世代P2P]](ピュアP2P)は、各クライアントがサーバを兼ねる([[サーバント]])為、耐障害性が高い。 製作者の「核戦争でも生き残れるように設計されたもの(''Gnutella is designed to survive nuclear war'')」や、「万一、ニューヨークに核爆弾が投下されたとしても、(それ自体はたいへんなことだが)ニューヨーク以外の『グヌーテラ友達』によってグヌーテラネットは維持されるだろう」といった言葉が、グヌーテラネットワークの特徴をよく表している。 == グヌーテラのしくみ == グヌーテラネットワーク上で交わされているメッセージは、PING、PONG、PUSH、QUERY、QUERY_HITの以上である。 === 接続 === 中央サーバが存在しないグヌーテラにおいて、最初に接続するときに何処に問い合わせるのか?という問題が出てくる。 グヌーテラ第一世代では、ノード情報を掲示板などで入手する方法が採られていたが、グヌーテラ第二世代になって、GWC(GWebCache)というブートストラップサーバーにより各ノードと接続する方法がとられた。 接続においては、グヌーテラサーバントはまずPINGという接続要求を出す。それに対して、接続相手はPONGという信号を返して、[[ハンドシェイク]]を行い接続が完了する。 === 検索 === 検索はグヌーテラネットワークで行っており、ファイルを求めるサーバントは、QUERYをグヌーテラネットワークに送信し、ヒットしたクエリがQUERY_HITとして検索結果に表示される。 === 転送 === グヌーテラでの、ファイルの転送は[[HTTP]]プロトコルで行われている。 ファイルの転送は、QUERY_HIT識別子に含まれる、[[IPアドレス]]や[[ポート番号]]などによってファイルの所有者にHTTPでの転送命令を出す。 また、ファイル所有者が[[ファイアウォール]]下にいるサーバントの場合は、PUSH識別子を出し、相手サーバントがHTTPでの転送命令を出す。 == 開発の経緯 == [[2000年]]、[[AOL]]社の一部門である[[Nullsoft]]で、当時社員だった [[ジャスティン・フランケル|Justin Frankel]]と[[Tom Pepper]]の二人が、最初のグヌーテラクライアントを開発した。 2000年3月14日、二人はNullsoftのサーバー上にプログラムをダウンロードできる形でアップロードした。この出来事は[[スラッシュドット]]で告知されたため、その日の内に数千人がソフトをダウンロードした。ソースコードについては、後ほど[[GNU General Public License|GPL]]ライセンスの元で提供する予定だった。 翌日、AOLは法的問題を理由にプログラムの提供を中止し、さらにNullsoft部門にプロジェクトを中止させた。しかしこの措置によっても、グヌーテラを止めることはできなかった。 数日後には、[[リバースエンジニアリング]]によってプロトコルは解析され、それを元にグヌーテラ互換の[[オープンソース]]クローンが登場した。現在でも、様々なグループが グヌーテラ 互換クライアントの開発を続けている。 === グヌーテラ第一世代 === シャットダウンから間もなくして、[[Brian Mayland]]がNullsoftのプログラムを入手して、グヌーテラプロトコルの動作原理を理解するために[[リバースエンジニアリング]]した。彼の仕事のおかげでテキストベースの[[UNIX]]プログラムを作った[[Josh Pieper]]や、より使いやすいGUIをもったプログラムを作ろうとした[[Gene Kan]]や[[Spencer Kimball]]のような人々によってソフトウェア開発がなされることになった。 === グヌーテラ第二世代 === ユーザの裾野が広がるにつれ、システムの重大な問題が取り沙汰されはじめた。ネットワークはPINGリクエストで溢れかえり、同時に非常に多くの検索クエリーで高負荷になった。より高速な[[ハブ (ネットワーク機器)|ハブ]]としての役割を果たすコンピュータに接続した低速の[[モデム]]といった形でネットワークの[[トポロジー]]は非効率的だった。第一世代のソフトウェアの深刻なバグによってパケットがネットワーク上を不明確にさまよっていた。ネットワークは”本来は少数のユーザのために設計されたもので”100人単位から10,000 単位のユーザに膨張しトラブルに見まわれた。「ただ乗り」や「何も提供していないのにファイルを取り出すだけの人々」によってもユーザが探し物をするのを難しくした。 もう一度、情熱的なコミュニティーが救済に乗り出した。[[Bob Schmidt]]が初めてのホストキャッシングシステムを開発した。プログラマー達はGnutella 0.56のコードを修正し、[[パケット]]が適切に運ばれるようにTTLのバグを取り除こうとした。そして、[[Jorge Gonzales]]はネットワークをダメにする[[スパマー]]たちからネットワークを守る行動に出た。 この時点で、物事は個人の開発者が全てをまかなうにはあまりにも複雑になっていた。彼らはコードを書き、報道やユーザやお金の工面をしなければならなかった。 こういった事情で、早急に商業的な努力が介入し、「救済に乗り出す」必要が出てきた。[[Clip2]]はgnutellahosts.comを開発し、より良いホストキャッシュの実装し、いくらかナップスターのようなトポロジーをグヌーテラネットワークに組み入れて合体させるようなやり方で動く小さな[[サーバー]]リフレクターを開発した。 == グヌーテラ互換サーバント == {| class="wikitable" border="1" ! 名称 || プラットホーム || ライセンス |- | [[:en:Acquisitionx|Acquisition]] || [[OS X|Mac OS X]] || [[シェアウェア]] |- | Acqlite || [[OS X|Mac OS X]] || [[GNU General Public License|GNU GPL]] |- | [[:en:BearShare|BearShare]] || [[Microsoft Windows]] || シェアウェア [[:en:Closed source]] |- | [[:en:Phex|Phex]] || [[Java]] || [[GNU General Public License|GNU GPL]] |- | [[Cabos]] || [[Java]] || [[GNU General Public License|GNU GPL]] |- | CocoGnut || [[RISC OS]] || [[フリーウェア]] |- | [[:en:Gnucleus|Gnucleus]] || [[Microsoft Windows]] || [[GNU General Public License|GNU GPL]], [[GNU Lesser General Public License|GNU LGPL]] |- | [[:en:gtk-gnutella|GTK-Gnutella]] || [[UNIX]] || [[GNU General Public License|GNU GPL]] |- | [[LimeWire]] || [[Java]] || [[GNU General Public License|GNU GPL]] |- | [[:en:mlDonkey|mlDonkey]] || || |- | [[Morpheus]] || [[Microsoft Windows]] || [[:en:Closed source]] |- | [[:en:Mutella|Mutella]] || [[UNIX]] || [[GNU General Public License|GNU GPL]] |- | [[:en:Poisoned|Poisoned]] || [[OS X|Mac OS X]] || [[GNU General Public License|GNU GPL]] |- | [[:en:Qtella|Qtella]] || [[Linux]] || [[GNU General Public License|GNU GPL]] |- | [[Shareaza]] || [[Microsoft Windows]] || [[GNU General Public License|GNU GPL]] |- | [[:en:Symella|Symella]] || [[Symbian OS]] || [[GNU General Public License|GNU GPL]] |- | [[:en:XNap|XNap]] || [[Java]] || [[GNU General Public License|GNU GPL]] |- | XFactor || [[OS X|Mac OS X]] || [[GNU General Public License|GNU GPL]] |} == 関連項目 == * [[Cabos]] * [[Freenet]] * [[LimeWire]] * [[Peer to Peer]] * [[Perfect Dark]] * [[Profes]] * [[Share (ソフトウェア)|Share]] * [[WinMX]] * [[Winny]] * [[ヌテッラ]] - [[北米]]や[[欧州]]で人気のある[[スプレッド]](パン等に塗る食品)。Gnutellaの[[語源]]とされるものの一つ( [[GNU]] + Nutella )。 == 外部リンク == * [http://www.jnutella.org/ jnutella](日本語) * [http://twoget.sourceforge.jp/ Gnutella Wiki](日本語) * [http://www.atmarkit.co.jp/fwin2k/experiments/gnutella_for_admin/gnutella_for_admin_0.html @IT : ネットワーク管理者のためのGnutella入門](日本語) * [http://gtk-gnutella.sourceforge.net/ja/?page=news GTK-Gnutella](日本語) * [http://www.the-gdf.org/index.php?title=Main_Page Gnutella Wiki](英語) * [http://rfc-gnutella.sourceforge.net/index.html Gnutella Protocol Development](英語) * [http://www.limewire.com/developer/ LIMEWIRE DEVELOPER RESOURCES](英語) ''Gnutella互換サーバント'' * [http://www.360share.com/ 360Share] * [http://sourceforge.net/projects/acqlite/ Acqlite] * [http://www.acquisitionx.com/ Acquisition] * [http://www.unitethecows.com/ AquaLime] * [http://www.bearflix.com/ BearFlix] * [http://www.bearshare.com/ BearShare] * [http://cabos.sourceforge.jp/ Cabos] * [http://epicea.philix.net/ Epicea] * [http://www.mp3downloading.com/etomipro/help_guide/help_guide.html eTomiPro] * [http://www.gofoxy.net/tw/download.jsp Foxy] * [http://www.freewirep2p.com/download.html#inter FreeWire] * [http://www.frostwire.com/ FrostWire] * [http://gift.sourceforge.net/ giFT-Gnutella] * [http://www.r66.7-dj.com/~ace/index2.html GnuAce] * [http://gpu.sourceforge.net/ GPU] * [http://gtk-gnutella.sourceforge.net/ja/?page=news GTK-Gnutella] * [http://www.gnucleus.com/GnucDNA/ GnucDNA] * [http://www.gnucleus.com/ Gnucleus] * [http://www.imesh.com/ iMesh] * [http://www.kceasy.com/ Kceasy] * [http://www.infocentral.jp/daunrodo/lemonwire/65239.htm LemonWire] * [http://www.limewire.com/japanese/content/home.shtml LimeWire] * [http://www.gnutellaforums.com/showthread.php?t=10142 LimeWire CVS jum] * [http://mldonkey.org/ MLDonkey] * [http://morpheus.com/ Morpheus] * [http://mutella.sourceforge.net/ Mutella] * [http://cn.mxie.com/ MXIE] * [http://www.mynapster.com/ MyNapster] * [http://www.neonapster.com/ NeoNapster] * [http://www.phex.org/mambo/ Phex] * [http://shareaza.sourceforge.net/ Shareaza] * [http://www.revolutionarystuff.com/swapper/ Swapper.NET] * [http://www.trustyfiles.com/ TrustyFiles] * [http://www.vagaa.com/ Vagaa] * [http://xnap.sourceforge.net/ XNap] * [http://www.xolox.nl/ xolox] * [http://www.zultrax.com/ Zultrax] [[Category:P2P]] [[Category:ネットワークソフト]]
Gnutella
に戻る。
案内メニュー
個人用ツール
ログイン
名前空間
ページ
議論
変種
表示
閲覧
ソースを表示
履歴表示
その他
検索
案内
メインページ
コミュニティ・ポータル
最近の出来事
新しいページ
最近の更新
おまかせ表示
sandbox
commonsupload
ヘルプ
ヘルプ
井戸端
notice
bugreportspage
sitesupport
ウィキペディアに関するお問い合わせ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報