Bittorrent はどのように動作しますか?

bittorrent

ファイル共有のbittorrentの方法をもっと知りたいです。私は技術的に高度なユーザー (プログラマー) ですので、技術的に高度な資料は問題ありませんが、簡潔で要点を押さえたものでなければなりません。ビトレントの全体的なアーキテクチャを説明している良いリソースブック/ウェブが必要です

細かいことには興味がなく、全体的なアーキテクチャや、種や仲間などの専門用語だけです

Any suggestions?

  35  explorest  2011-02-13


ベストアンサー

ビトレントの仕組みの概要

  • あなたには仲間と追跡者がいる任意の時点で一緒にいるすべてのピアが「群」です。通常の状況は、1人か数人のピアが完全なファイルセットを持っていて、それを他のピアが利用できるようにしたい場合です

  • ピアは .torrent ファイルを取得します。このファイルには、A) ファイルセットの SHA-1 ハッシュ、B) トラッカーの URL、C) ファイルが分割されたピースの数、および各ピースの SHA-1 ハッシュが含まれています。ピースのサイズは、トレント自体によって決定されます

  • 次にピアは、トレントで指定された URL を使用してトラッカーに接続します。トラッカーはピアのリストで応答します。トラッカーはポート 80 または 443 を介して HTTP を通信します

  • ピアは、トラッカーからの情報を使って別のピアを選択し、そのピアに直接連絡して交換セッションをセットアップし、ピースを取得しようとします。交換セッションはピアによって直接行われ、トラッカーは転送に関与しないことに注意してください。トラッカーは情報を提供するだけです

  • ピアがピースを持つと、それを SHA-1 ハッシュと照合して検証し、ファイルに書き込みます。その後、別のピアを選択する際に、そのピースを提供することができます。それ以降の交換セッションでは、ピースの「取引」が行われます。私は、ピアは一般的に、あなたが他にピースを持っていない場合にのみ、最初のピースを提供すると考えています

  • ピアは、更新されたピアのリストを取得するために、トラッカーを頻繁に再確認します。複数のピースを持っている場合は、ピアはある交換が終わるのを待ってから別の交換を開始する必要がないので、ピースをたくさん持っていると転送速度が格段に速くなります。これが、トレントの開始時間が遅くても、ピアがピースを取得するとすぐに速度が上がる理由です

  • ピアがすべてのピースを持っているとき、ファイル全体がファイルセットのSHA-1ハッシュに対して検証されます。その後、それはシーダになり、今は何もしていませんが、ファイルセットがより高度に利用可能であることを支援しています。すべてのピースを持っていないピアはリーチャーです

  • トレントに種がない場合、それは死んでいます。しかし、ファイルの完全なコピーがすべてのピアによって保持されているすべての作品の間に存在する場合、最終的には自分たちの間で完全なコピーを得るために取引されることになります

  • SHA-1 ハッシュは、トラッカーとピアがどのファイルが群がることになっているかを「知る」方法です。トレント内のファイル名はデータの識別には使用されません。.torrent ファイルのハッシュと照合できないものは捨てられます。不良ピースを送信し続けるピアは、他のピアにスナッブされ、最終的にスウォーム内の誰にも接続できなくなります

  • ピース サイズが小さいほど、トレントはより強固なものになりますが、.torrent ファイル内のピースのハッシュをリストアップする必要があるため、.torrent ファイルが大きくなる可能性があります

  • BitTorrent で何かを公開する場合、ファイルを利用可能にしたい場合は、ファイルをシードするのが最善です。ほとんどの BitTorrent ソフトウェアはアルゴリズムを実装しているため、他のピアがあなたを支援してくれます。このようにして、BitTorrent は物事を公開し、帯域幅コストを節約するのに役立ちます

29  LawrenceC  2011-04-25


ここのテーマについての素晴らしい論文

http://davidhales.name/posters/patarin-hales-delis-poster6.pdf (注:実際には.pdfのファイルで、Acrobat Readerで閲覧できます)

誰かが作った中身の画像ファイルです

patarin-hales-delis-poster6

18  Moab  2011-02-13


YouTube には、段ボールの切り抜きを使って視覚的に説明している 素敵な動画があります。高度な技術的な説明ではありませんが、BitTorrent の背後にある考え方をわかりやすく説明しています

how bittorrent works on youtube

8  nhinkle  2011-04-25


ピアメッセージプロトコルの概要

クライアントは、TCP または uTP (UDP 経由) の 2 つのプロトコルを使用してピアと情報を共有することができます。このデータは、the bittorrent プロトコル仕様、セクション ピア メッセージに従います

プログラム的には、2 つのクライアント間で接続を開始する必要があります。接続が設定されると (TCP または uTP を介して)、トラッカーまたは DHT を介してリモート ピアの情報 (ip&port) を取得したクライアントによって bittorrent ハンドシェイクが開始されます。このハンドシェイクには、この接続の対象となるトレントを識別する info_hash が含まれています

まず、Torrentのデータがプロトコルを通じてどのように切り捨てられるのかを見てみましょう。ピースとは、ネットワークを介して共有するデータの一部のことです。ブロックと混同しないように、ピースの一部をパケットに包んだものがブロックです。ブロックはパケットを通してピースを共有するための粒度であり、ピースはピアを通してTorrentを共有するための粒度です

接続が開始されると、両方のクライアント(ローカルクライアント、ここではLCと呼ぶことにしますが、リモートクライアント、RCと呼ぶことにします)が詰まっていて、興味を示さない状態になります。choked とは、「あなたのメッセージには答えません。したがって、Unchocked は「あなたのメッセージには答えます」という意味になります。Interestedは、もちろん「あなたが持っている作品をいくつか欲しい」という意味です。したがって、2つのピア間の接続の状態は、これらの4つの状態で定義することができます。LC_chocked?, LC_interested?, RC_chocked?, RC_interested?私が(un)chockedまたは(un)interestedであることをRCに警告するために、私は彼に(un)interestedと(un)chockedのメッセージを送信しなければなりません、そして、相互に

互いにどの駒を持っているかを知らせるために、ハンドシェイクの直後にビットフィールドメッセージを送信することができます。その名が示すように、各ビットが1に設定されたビット文字列で、クライアントがこの特殊な駒を持っている場合は1に、そうでない場合は0に設定されます

そのため、もしLCがチョークされていて興味を持っていて、RCが彼をアンチョークした場合、彼はビットフィールドメッセージのおかげでLCが持っていることを知っている1つのピースに属するブロックを要求するためにリクエストメッセージを送ることができます

あるピアがピース全体を受信したとき、そのピアはピースメッセージを送信して、すべてのリモートピアに通知し、そのピアが保持している関連するビットフィールドを更新するようにすることができます

これは非常に基本的な概要であり、もちろん、チョークアルゴリズムなどのように、すべての詳細がここで提供されているわけではありません。より多くの詳細が必要な場合は、私が上に投稿した2つのリンクをコメント欄で確認してください(新しいユーザーとして、私は1つの投稿内に2つ以上のリンクを持つことはできません)

2  Jules Sam. Randolph  2014-10-25


タイトルとURLをコピーしました