gtk-gnutella logo
現在のバージョン: 1.2.3

FAQ

一般

ソースからのビルド

Gnutella 接続

検索

ダウンロード

アップロード

GTK+ 2.x


一般

それはそうとして Gnutella って何ですか?

Gnutella はピアからピアへの情報交換を行う分散型ネットワークです。このネットワークを使うことで、今のところはどんな種類のファイルでも公表したりダウンロードすることができます。最近の Gnutella プロトコルに関する公式文書は GDF wiki にあります。より詳しい情報を得るには あるいは infoAnarchy wiki にある Gnutella の定義を御覧下さい。

「GTKG」って何ですか?

私達はよく gtk-gnutella を GTKG または gtkg と言います (なぜなら短いからです)。GTK は gtk-gnutella に使用されているグラフィカル・ツールキットの GTK+ から来ています。

たくさんの帯域幅を使い切ってしまいます!

あなたが遅い回線 (モデム) の利用者なら、今のところ以下の事柄のどれか一つか二つを試してみることができます:

ウルトラピアとリーフピアって何ですか?

バージョン 0.92 以降、gtk-gnutella にはウルトラピアおよびリーフピアが実装されています。これは Gnutella ネットワークにおいてサーバントをリーフピアとウルトラピアに分けます。リーフピアはただウルトラピアに接続するだけなのに対し、ウルトラピアは多くのリーフピアと他の少しのウルトラピアに接続します (丁度良い接続件数はどれ位ですか? を御覧下さい)。

ウルトラピアはファイアウォール内にあってはいけません、また長期の稼働時間 (二時間以上) が見込まれます。Gnet に寄与するだけ十分な余剰帯域幅があることも期待されています。ウルトラピアは接続しているリーフピアからのクエリーを転送し、リーフピアは接続しているウルトラピアに QRP テーブルをアップロードします。この QRP テーブルにはリーフに共有されているファイルに一致するキーワードのハッシュ値が含まれています。あるウルトラピアがクエリー経路設定テーブルにあるヒットを受け取ると、そのクエリーを対応するリーフピアに中継します。この結果、共有およびダウンロードのための帯域幅を解放しつつ、それぞれのリーフピアに対して非常に低い Gnet トラフィックが発生します。ウルトラピアはファイアウォール内にあるリーフピアに対して PUSH プロキシとしても振る舞えます。

なぜ gtk-gnutella は実際は違う時でも私のマシンがファイアウォール内にあると言ってくるのですか?

gtk-gnutella は外部からあなたに到達できるかどうかを判別するために、内側に入って来る接続を受信する必要があります。その時までは、設定された待ち受け TCP ポートを塞いでしまうファイアウォールがあるものと見なされます。この検出を早くしたいのでしたら、ウェブブラウザー、telnet またはそれに似たものを使用して外側からその待ち受けポートに接続して下さい。この接続が拒否されたり破棄されるなら、ポートを塞ぐファイアウォール、あるいは誤って設定された NAT, それに類似するものが原因になって、多分あなたは実際に到達不能になっています。一部の ISP は標準の Gnutella ポート (6346) を塞いでいますので、異なる待ち受け TCP ポートを試してみるとよいかもしれません。併せて ファイアウォールのポートを転送する必要がありますか? も御覧下さい。

ソースからのビルド

Configure の最中に色々聞かれるのですが、どうすれば止めさせられますか?

標準の設定を利用するには以下のやり方で Configure スクリプトを実行できます。そうすると autoconf で作成した以前の configure スクリプトが昔やったように振る舞います。

$ ./Configure -ders

コマンド行でコンパイル・オプションをセットすることもできます。ここにある例では gtk-gnutella は以下のように設定されます。

$ ./Configure -ders -O -D gtkversion=1 -D remotectrl=y -Dccflags="-march=pentium -mmmx" -Doptimize="-g -O0"

Gnutella 接続

丁度良い接続件数はどれ位ですか?

リーフモードでは 3 基のウルトラピアが、ウルトラピアモードでは 32/40 (最小/最大) 基のウルトラピアと 100 基のリーフピアになります。実際の数は利用可能な帯域幅によるはずです。「圧縮転送を優先する」を有効にしている場合は使用される帯域幅はもっと少なくなるでしょう。Gnet 接続にすべての帯域幅を使い切ってしまうのはよくありません。特に非対称ケーブル/DSL では外部への大量のトラフィックを発生させてしまうことで (TCP/IP の問題)、内へ入って来るトラフィックが簡単に枯渇してしまいます。Gnet 接続には外への帯域幅のおおよそ半分を使用して下さい。

バージョン 0.95 で「高出次数 (High OutDegree)」が用いられるようになりましたので、他のウルトラピアに対して 32/40 件の接続を確保すべきでしょう。利用するリーフ接続の件数はあなたの帯域幅および CPU の速度によります。ウルトラピアは最低 20 基のリーフピアに接続すべきですが、100 基以上に接続していることが非常に望まれます。GUI の左下の方にある帯域幅のオドメーターを観察して、CPU の使用率を追い続けるためにコマンド top を使用して下さい。帯域幅およびこの目的のために費してもよいと思うシステム・リソースの最大値に達するまでリーフ接続の件数を上げていって下さい。

ファイル->環境設定->帯域幅で gtk-gnutella が使う帯域幅をさらに微調整できるでしょう。

ファイアウォールのポートを転送する必要はありますか?

gtk-gnutella を動作させるためにいずれかのポートを転送する必要はありませんが、これを行えば断然よくなります。あなたがファイアウォールの内側にいると見なされる場合、"PUSH" を必要とする検索結果はいずれも表示されません。と言うのも、いずれにせよこれらのファイルはダウンロードできないからです。
あなたに直接接続できない時であっても、他の人は PUSH リクエストを利用することであなたのピアからファイルをダウンロードすることができます。
ファイル->環境設定->ネットワークにある待受ポートで gtk-gnutella の待ち受けポートを設定できます。

どのようにポート転送の設定をするのですか?

http://www.portforward.com/routers.htm に大半の有名なルーターの注意書きがあります。ポートの転送を確認するには http://www.canyouseeme.org/ を試してみて下さい。

gtk-gnutella は UDP を利用しますか?

はい、バージョン 0.95 の gtk-gnutella から TCP に加えて UDP も利用できます。

「[FC]」は何を意味するんですか?

FC は「Flow Control (フロー制御)」を意味します。一般的に、あなたに接続しているサーバントがフロー制御しないことを確認した方がよいでしょう。情報欄にある文字列の終わり (このウィンドウの下にスクロールバーを表示させるために、ウィンドウの右端の向こうまでドラッグする必要があるかもしれません) に [FC] の表示が後に続いていないか見て下さい。またはフラッグ欄で状態が FC になっているかを見て下さい。経験的に言うと、一時にフロー制御しているピアが一基以上ある場合は Gnet に提供するだけ十分な外側への帯域幅を確保できません、つまりネットワークに危害を加えています: 接続件数を減らすか、オプション圧縮転送を優先するを有効にするか、あるいは外側への制限帯域幅を上げるかのどれかを行って下さい。

なぜアップロードしている時に Gnet 接続が途切れていってしまうのですか?

帯域幅の制限を掛けてみて下さい。これでも駄目なら恐らくプロバイダが Gnutella トラフィックを絞っています。gtk-gnutella のネットワーク設定で Gnutella のポートを変更してみて下さい。

フラッグ欄にあるこの英字の意味は何ですか?

ここで接続の設定の一部とその種類を見られます。プロキシ経由での PUSH は 0.92.1c とそれ以降のバージョンで実装されています。

  012345678AB (オフセット)
  NIrwqxZPFhT
  ||||||||||+ TLS トンネル接続であることを示します
  |||||||||+- Hops Flow が発生しているか (h)、あるいは全クエリーがフロー制御されています (f)
  ||||||||+-- フロー制御 (F)、またはキューに未処理のデータ (d) があることを示します
  |||||||+--- こちらが PUSH プロキシである (P) か、あちらが PUSH プロキシである (p) かを示します
  ||||||+---- Rx (受信), Tx (送信) または両方 (Z) が圧縮されているかどうかを示します
  |||||+----- 遠隔ウルトラピアに Last-Hop QRT を送信したか (X)、それを送信している (x) かを示します
  ||||+------ QRT を送信/受信したか、あるいはそれを送信/受信している (q) ことを示します
  |||+------- ピアが writable (書込可能) かどうかを示します
  ||+-------- ピアが readable (読込可能) かどうかを示します
  |+--------- 接続の種類です: (Incoming, Outgoing, Ponging)
  +---------- ピアモードです: ウルトラ (Ultra)、リーフ (Leaf) あるいはレガシー (別名 Normal)

エージェント名の先頭につく「!」の意味は何ですか?

これはエージェント名が恐らく偽物であることを示しますが、両サイドの不正なシステム時計によって引き起こされた誤検出の可能性もあります。

「有害なバージョンが禁止されました、アップグレードが必要です」というステータス文の意味は何ですか?

時折、サーバントにバグがあったり Gnet に対して有害な振る舞いをしてしまう事が明らかになります。例えば gtk-gnutella 0.92b には GWebCache システムを頻繁にアクセスしてしまう (hammering) 桁外れなクエリーを生成するバグがあります。このような差し止めは例外です、通常は特定のバージョンが制約されてサーバントの実行者がその差し止めに関して知らされます。

「バージョンが古くなっています、アップグレードして下さい」というステータス文の意味は何ですか?

一年以上前のバージョンの gtk-gnutella は使用が禁止されます、というのも、これらは急速に進化する Gnutella ネットワークの健全性とその規模の拡大にとって大切な機能がないからです。ちなみに開発版は 90 日後に差し止められます。

なぜ HTTP プロキシが働かないのですか?

Gnutella の接続では通常の GET 方式が働きません、このため HTTP プロキシが CONNECT 方式をサポートしている必要があります。これは HTTP プロトコルを拡張したもので主に SQUID プロキシがサポートしています。あなたのプロバイダがセキュリティ上の問題とするかもしれないので、しばしば使えなくされることもあります。今のところプロキシのサポート - SOCKS も含めて - はあまりよいものではありません。開発者達はプロキシを使いませんが、もしあなたがこれを何とかできると思うなら、パッチは歓迎します。

タイムアウトまでの時間を長くするにはどうすればいいですか?

インターネット接続の待ち時間が長くてお困りなら、タイムアウトする時間を長くするとよいかもしれません。ファイル->環境設定->インターフェイス上級者モードを有効にして下さい。ファイル->環境設定->Gnutella ネット により多くの設定項目が表示されるようになります。

自動モードはどのようにウルトラモードとリーフモードを決めているのですか?

ウルトラモードになるためには、以下の条件が満たされている必要があります:

  1. 外側への利用可能な帯域幅が 8192 バイト/秒以上ある必要があります。
  2. 帯域幅の管理を行っているなら、リーフピアは外へ出て行くすべての HTTP 帯域幅を (必要に応じて) 取り込めるように設定されていなくてはいけません。
  3. 外へ出て行く Gnet の帯域幅を制限しているなら、(ウルトラピアやレガシーピアへの) Gnet 接続毎に最低でも 256バイト/秒の帯域幅がある必要があります。
  4. 全体として言えば、リーフ毎に 32バイト/秒プラス Gnet 接続毎に 256バイト/秒の帯域幅が利用できなければいけません。

検索

どうすればもっと多くの検索結果を得られますか?

あなたが得る検索結果の数は他の人があなたに接続可能かどうかという事 (ポート転送の項を御覧下さい) と他のホストへの接続件数にかなりのところ依存します。

どうすれば SHA1 が無いファイルを検索結果から除外できますか?

SHA1 のない検索結果上でマウスの右ボタンをクリックしてメニューから「検索結果を破棄->同じ URN:SHA1 で」を選択して下さい。これでこの SHA1 - この場合は「なし」です - を持つすべての検索結果が検索結果表示ペインから破棄されるようになります。スパムの多くが表示されなくなるでしょう。

検索エントリーボックスはどこへ行ったのですか?

GTK1 版では検索はサイドバーにある 検索: ボックスに入力します。 GTK2 版では上部にあります。

「受動」検索って何ですか?

受動 検索は gtk-gnutella を通過するすべての検索結果を返してきます。これらの検索結果を条件検索に掛けると受動検索は役に立つかもしれません。

ウルトラモードにあるなら、あなた自身の検索に加えて、すでに多くの検索結果があなたのピアを通り過ぎています。あなたは余分な Gnet トラフィックを発生させることなく、これを検索に利用することができます。例えば 200 基の リーフピアと接続している私のウルトラピアで、受動検索を開き名前 eminem にヒットする検索結果のみを表示するようフィルターを設定したとします。一時間になるかならないかの内に約 1500 件ほどの検索結果を得ました。検索内容がより人気のあるものであればある程、より待てば待つ程、このテクニックが有益なものになる事は明らかです。

リーフモードの場合、gtk-gnutella を通過していくことになる唯一の検索結果はあなた自身の検索になりますので、上記のテクニックは役に立たないでしょう。しかし、リーフモードでのみ役に立つ受動検索の使用法が別にあります。例えば、受動検索を開始してそのフィルターで mp3 ファイルのみを表示するようにすると、開いているすべての検索リスト/タブからのすべての mp3 ファイルが、便利にも一つの検索ウィンドウに集められるようになります。異なるフィルターを備えた受動検索をもっと開くことで、それぞれに違う種類のファイルを表示できるようになります。

なぜ文字化けしている検索結果があるのですか?

最近の Gnutella ネットワークにおけるファイル名の標準的なエンコーディング (エンコード方式) は UTF-8 です。全ての検索クエリーおよび検索結果はこれでエンコードされるべきです。残念なことですが、ファイル名や検索クエリーのような文字データを UTF-8 に変換せず、その代わりに任意の文字エンコード方式を使用する昔からのソフトウェアがまだ数多くあります。gtk-gnutella は使用されているエンコーディングを検出するよう試みますが、完全なものにはなり得ません。UTF-8 に変換できない文字がある場合は、下線 (アンダースコアー) で置き換えるかもしれません。

ダウンロード

「リクエストされた [SHA1|名前 & サイズ] を無視します」というステータス文の意味は何ですか?

これは gtk-gnutella のデータベースにそのファイルが完了したものとして記録されていることを意味します。このデータベースは通常 ~/.gtk-gnutella/done.sha1 および ~/.gtk-gnutella/done.namesize にあります。今のところ GUI でこのデータベースにあるエントリーを削除したり変更したりする方法はありませんが、gtk-gnutella が走っていない時にこのファイルをテキストエディターで編集できます。これらのファイルに何か追加したり削除するには、他のエントリーと同じようにして下さい。

「サーバーに URN がありません」というステータス文の意味は何ですか?

これは gtk-gnutella がホストから新しいファイルをダウンロードしようとしているのに、そのホストが当該ファイルの SHA1 ハッシュを提供しないことを意味します。(まだ部分的にもダウンロードされていない) 新しいファイルだと、ホストにあるファイルが本当に望むものであるかを検証するためのオーバーラップ・チェックができません。そのような場合は遠隔ホストが提供する SHA1 に頼ることになるのですが、もし SHA1 が与えられないとダウンロードしたいファイルおよび遠隔サーバーにあるファイルが実際に同じものであるかを保証する術がなくなってしまいます。
これらのメッセージにうんざりしているなら、ファイル->環境設定->ダウンロード最初のチャンクを大目に見るを有効にすることができます。

なぜ同じファイルが何回もダウンロードされるのですか?

取得範囲欄を確認して下さい。これは多元ダウンロード (Swarming) と呼ばれるものです。可能であれば gtk-gnutella はファイルをチャンクで取得しようと試み、同時並行的に複数のホストからダウンロードします。ちなみに、取得範囲欄での表示形式は「リクエストしているサイズ @ 当該ファイルにおける位置 (オフセット)」になっています。

「多元ダウンロード (Swarming)」って何ですか?

多元ダウンロードを説明すると、それは一つのファイルを複数のホストから同時並行的にダウンロードすることです。gtk-gnutella はダウンロードメッシュを利用しながら、また送られてきた結果を監視することで、待機状態になっているファイルのための新たな送信元を自動的に探すよう試みます。

「チャンク」って何ですか?

チャンクは、言い換えるとファイルの一部分です。gtk-gnutella が 多元ダウンロード (Swarming) モードで動作している時には、ファイルを完全にダウンロードし終えるまでダウンロードするファイルの複数のチャンクを取得するようになります。取得範囲欄は現在どのチャンクをダウンロードしているかを表示します。

「ダウンロードメッシュ」って何ですか?

ダウンロードメッシュをサポートするホストからファイルをダウンロードすると、(いずれかを知っている場合) 要求しているファイルのさらなる送信元を伝えてきます。これらはその後 多元ダウンロード (Swarming) に使用されます。

「PUSH リクエスト」って何ですか?

PUSH リクエストというのは (ファイアウォール内にあるために) 直接あなたが接続できないホストからのダウンロードを可能にする機能です。 つまり、あなたはこれらのホストには接続できませんが、これらのホストからは多分あなたに接続できるのです。その遠隔ホストがあなたのホストに接続するよう伝えるために PUSH リクエストをそれに向けて送信します。こうすることであなたはその遠隔ホストからファイルをダウンロードできるようになります。
PUSH リクエストを利用しながらファイルをダウンロードしていて、そのファイルの検索結果を元々返してきたホストとのコンタクトを保てなくなると、PUSH 経路が失われてしまい、あなたはもうそのファイルをダウンロードできなくなります。従って PUSH 経路はかなり壊れやすいのです。ファイアウォールの内側にいる場合は (ポート転送の項を御覧下さい) PUSH リクエストを利用することはできません。

なぜファイル名に .OK が付くのですか?

多分あなたはダウンロードされるファイル、ダウンロード中および破損したファイルのために異なるフォルダを設定していませんね。

どうしてもダウンロードできないファイルがあります!

ステータスバーにサングラスを掛けた黄色のスマイリーアイコンが表示されていないなら、これを変えるよう試みるべきでしょう。ファイアウォール に関する部分を御覧下さい。

そうではなく、gtk-gnutella がそのファイルに対してほんの少しの送信元しか表示しないなら (ダウンロード・ペインの「数」欄を御覧下さい)、これは二つの可能性があります:

そのファイルを再び検索してみてより一般的な他のバージョンがあるかどうかを確認できます。通常「数」欄が表示するファイルの数がよい指標です。この数が多いほどそのファイルを素早く取得できる可能性が増します。

ダウンロードペインで、文字色が黒ではなく灰色になる場合は何を意味するんですか?

これはファイルを PUSH 経路で受け取ったことを意味します。

ファイル名エンコーディングって何ですか?

gtk-gnutella はファイル名の標準のエンコード方式として UTF-8 を使用します。もしロケールの設定が UTF-8 を使用しないのでしたら、他のアプリケーションはこれらのファイル名を正しく表示しないか、最悪の場合、アクセスそのものに問題を抱えるかもしれません。環境変数 G_FILENAME_ENCODING を使用することで、このエンコード方式を変更することが可能です。これは GTK+ や GLib を利用する殆んどのアプリケーションに影響を及ぼします。検索結果のファイル名エンコーディングは、エンコード方式欄で確認できます。検索結果のファイル内容 (コーデック等) とは関係がありませんので注意して下さい。

あなたのシステムが UTF-8 を使用しないのでしたら、

G_FILENAME_ENCODING="UTF-8,@locale,EUC-JP" または G_FILENAME_ENCODING="@locale,UTF-8,EUC-JP"

のどちらかを使用することを勧めます。

リストにある最初の項目はファイルを保存するのに使用されるエンコード方式です。後に続く項目はディスクにある既に存在するファイル名に使用されます、これらのファイル名は Gnutella サーバントが表示したり情報交換を行うために gtk-gnutella 内部で UTF-8 に変換されます (ディスク上のファイル名が強制変換されてしまう訳ではありません)。西ヨーロッパにお住いでファイル名に非 ASCII 文字を含むファイルおよび ISO-8859-1 でエンコードされるファイルを共有するのでしたら、上のリストに ISO-8859-1 を加えるのが推奨されます。日本語ファイル名を使用するなら、恐らく上の設定で充分だと思います。その他の地域にお住いの方は、適切な他のエンコーディングを設定して下さい。

大半のケースにおいて、特殊な指定方法「@locale」がこれをカバーすると思います。これは現在お使いのロケールで使用されるエンコード方式を表し、ファイル名をエンコードするには丁度良いでしょう。上にあるように複数のファイル名エンコーディングを次候補としてリストできます。ファイル名を UTF-8 に変換する際には、その中から最初に成功したものが使用されることになります。このエンコーディングは並べられた順に試されて行き、変換不能な文字は下線 (アンダースコアー) で置き換えられます。これはつまり、もしあなたが西ヨーロッパにお住いで、殆んど全ての文字がアラビア語や日本語のファイルをダウンロードする場合、ASCII または ISO-8859-1 へのファイル名変換でほぼ、あるいは全ての情報がファイル名から削ぎ落とされてしまう事を意味します。ですから、あくまでも UTF-8 を使うのがベストなのです。

フロントエンドとして GTK+ 1.2 または GTK+ 2.x を使用しているかどうかに関わらず、gtk-gnutella はバージョン 0.96 以降 G_FILENAME_ENCODING をサポートします。

アップロード

「正規値」って何ですか?

これはあるファイルに対してアップロードされた合計バイト数をそのファイルのサイズで割った値です。

GTK+ 2.x

GTK2 版の gtk-gnutella がとても遅いんですが。

GTK+ 2.x には複雑かつ強力なフォント描画機能が備わっていますし、将来のバージョンはより最適化されるという期待もあります。この性能に耐えられないのであれば、代わりに GTK+ 1.2 を使用することを考慮した方がよいでしょう。しかしながら、ウィンドウをできるだけ小さくしたり、ただペインを切替えるだけでしたら、体感速度はたいして変わりません。

Users Love Us Community Choice SF Favourite Community Leader Open Source Excellence SourceForge.net Logo RSS Feed Available Open Hub metrics Coverity Scan Build Status gtk-gnutella at GitHub
Copyright © 2000-2014 Yann Grossel, Raphaël Manfredi および手伝って 下さった数多く の方々。