ホームページ » の仕方 » BitTorrentクライアントはどのようにしてそのピアを最初に発見するのでしょうか。

    BitTorrentクライアントはどのようにしてそのピアを最初に発見するのでしょうか。

    あなたのtorrentクライアントがファイルの断片を共有して集めるために群れに加わったとき、それはどのようにしてそれがすべての同輩がどこにいるかを正確に知っていますか?私たちがBitTorrentプロトコルを支えるメカニズムの中で突っ込んで読み進めてください。.

    本日の質疑応答セッションは、コミュニティ主導のQ&A Webサイトのグループである、Stack Exchangeの下位区分であるSuperUserの好意により提供されます。.

    質問

    SuperUserの読者Steve V.は、BitTorrentプロトコル内のDistributed Hash Table(DHT)システムについて非常に具体的な質問をしました。

    私はすでにこのSuperUserの回答とこのWikipediaの記事を読んだことがありますが、どちらも私にとって頭が折れるほど技術的すぎるものです。.

    私はトラッカーの概念を理解しています。クライアントは、一群のピアのリストを管理する中央サーバーに接続します。.

    私は、ピア交換の概念も理解しています。すでに群がっているクライアント同士は、ピアの完全なリストを互いに送信します。新しいピアが発見された場合、それらはリストに追加されます。.

    私の質問は、DHTはどのように機能するのですか?あれは, トラッカーも、少なくとも1人のメンバーの知識がなくても、新しいクライアントがどのようにしてスウォームに参加できるのか。?

    (注:簡単な説明が一番です。)

    彼の質問は、今度はBitTorrentシステムのさまざまな機能についての非常に詳細な回答を促しました。今それを見てみましょう.

    答え

    SuperUserの寄稿者Allquixoticは、詳細な説明を提供しています。

    トラッカーも、少なくとも1人のメンバーの知識がなくても、新しいクライアントがどのようにしてスウォームに参加できるのでしょうか。?

    できません。それは無理だ。*

    * (あなたのノードがない限り ローカルエリアネットワーク DHTのノードになっています。この場合、Avahiなどのブロードキャストメカニズムを使用してこのピアを「発見」し、それらからブートストラップすることができます。しかし、どうでしたか 彼ら 自分自身をブートストラップ?結局、あなたは公衆インターネットに接続する必要がある状況に遭遇するでしょう。そして公衆インターネットはユニキャストのみであり、マルチキャストではありませんので、事前に決められたピアのリストを使用しています。)

    参考文献

    BitTorrent DHTはKademliaとして知られるプロトコルを介して実装されています。これは分散ハッシュテーブルの理論的概念の特別な場合です。.

    博覧会

    Kademliaプロトコルでは、ネットワークに参加するときに、ブートストラップ手順を実行します。これには、必ず知っておく必要があります。, あらかじめ, DHTネットワークにすでに参加している少なくとも1つのノードのIPアドレスとポート。あなたが接続するトラッカーは、例えば、それ自体がDHTノードかもしれません。 1つのDHTノードに接続したら、次にDHTから情報をダウンロードします。これにより、より多くのノードへの接続情報が提供されます。そして、その「グラフ」構造をナビゲートしてより多くのノードへの接続を取得できます。他のノードへの接続性とペイロードデータ(ダウンロードのかたまり).

    あなたの実際の質問は大胆に思います - 知らないうちにKademlia DHTネットワークに参加する方法についてです。 どれか他のメンバー - は誤った仮定に基づいています.

    太字であなたの質問に対する簡単な答えは, あなたはしません. DHTメタデータを含む可能性のある1つのホストについての情報がまったくわからなければ、動けなくなります - 始めることすらできません。つまり、DHT情報をブロードキャストするためにオープンポートを使用して、公衆インターネット上でIPを発見しようとするのは強引な試みである可能性があります。ただし、BTクライアントは、DHTメタデータを提供するだけの安定したDHTノードに解決される特定の静的IPまたはDNSにハードコードされている可能性があります。.

    基本的に、DHTは参加メカニズムと同じくらい分散しているだけで、参加メカニズムはかなり脆弱なので(インターネット全体で「ブロードキャスト」する方法はありません!) ユニキャストDHTデータを取得するために事前に割り当てられた個々のホストへの 本当に 分散しています。厳密な意味ではない.

    このシナリオを想像してみてください。P2Pを止めさせたい人が出て、攻撃を仕掛ける すべて ブートストラップに使用される一般的に使用される安定したDHTノード。彼らは彼らの攻撃を上演したら、彼らはそれを弾き出す すべて 一度にすべてのノード. ワム;すべてのブートストラップDHTノードが1つにまとめてダウンしています。それで?あなたはに接続できない 集中トラッカー それらからピアの伝統的なリストをダウンロードすること。彼らがトラッカーも攻撃するのであれば, 本当に クリークまで言い換えれば、KademliaとBTネットワーク全体は、インターネット自体の制限によって制約されています。つまり、90%を超えないようにするには、攻撃に成功したりオフラインにしたりする必要があるコンピュータの数が限られています。ネットワークへの接続からのユーザーの数.

    「疑似集中型」ブートストラップノードがすべて削除されると、DHTの内部ノードはブートストラップされません。 DHTの外側にいる人は、内部ノードについては知りません。, 無駄です。彼らはDHTに新しいノードを持ち込むことはできません。そのため、各内部ノードが時間の経過とともにDHTから切断されると、コンピュータをシャットダウンしたり、更新プログラムを再起動したりするなどしてネットワークが崩壊する可能性があります。.

    もちろん、これを回避するために、誰かがあらかじめ決められた安定したDHTノードまたはDNSアドレスの新しいリストを使ってパッチを適用したBitTorrentクライアントを配備し、代わりにこの新しいリストを使うようにP2Pコミュニティに宣伝することができます。しかしこれは、攻撃者(ノードを食べる人)がこれらのリストを自分自身で徐々にダウンロードし、勇敢な新しいブートストラッピングノードをターゲットにしてからオフラインにするという「モグラ抜け」の状況になります。.

    元の質問に対する答えを知っただけでなく、BitTorrentシステムの性質とその脆弱性についてもかなり多くのことを学びました.


    説明に追加するものがありますか?コメントの中で消してください。他の技術に精通したStack Exchangeユーザーからの回答をもっと読みたいですか?こちらのディスカッションスレッドをチェックしてください。.