トレントの「ピース」の仕組みを解説

Pocket

まず、トレントとは、なにか

「トレント(Torrent)」とは、ファイルをみんなで分け合ってダウンロードする仕組みです。

もっと詳しく言えば、

ビットトレント(BitTorrent)というピアツーピア(P2P)ファイル共有プロトコルを利用してデータを分散ダウンロード・アップロードする仕組みです。

ピアはユーザーという意味なので、ユーザー同士のファイル共有ということです。

不正利用が多いですが、基本的には合法的に使用されています。

トレントはファイルを一括でダウンロードしているわけではない

ここが重要ですね。

トレント(Torrent)の仕組みでは、ファイルはピース(piece)という固定サイズの小さなデータ単位に分割され、その単位でデータのやり取りが行われています。

例えば、ダウンロードしたいデータがあり、それがピース1、ピース2、ピース3から構成されているとします。そのファイルをダウンロードしたいときは、ピースを1~3まで集める必要があるということです。

集めるのはトレントソフトが勝手にやってくれます。

トレントファイルのピースサイズや各ピースのハッシュ値は作成者が決めており、この分割情報(ピースサイズや順番など)はトレントファイル(.torrent)に含まれています。

ピースのサイズ(通常は64KB、128KB、256KBなど、固定サイズ)と各ピースのハッシュ値(SHA-1などのアルゴリズムを使用)が記録されています。

結果として、同じトレントファイルの使用者は、全てのピアで同じピース構造を共有します。

100%にならない原因はピースが足りていないから

シード数 5(10)

ピア数    8(16)

この数字の意味は、

   確認出来ている完全なファイルを持っている人が10人

   のうち接続している人(アップロード元)が5人

   16人がダウンロード中で

   8人はあなたをアップロード元としている

ということです。

つまり、ダウンロードが100%にならないときの要因としては、ファイルのピースが集まっていないことが原因であり、その原因自体にシーダーがいないことが挙げられます。

昔のファイルなどはありがちですね。

昔は作者がトレントで配布してくれていたけど今はサイトも残っておらず、シーダーもいないみたいな。

ちなみにシーダーがいなくても、ピア同士でもファイルが100%になることがあります。

例えば、ピース1、ピース2、ピース3から構成されるファイルがあるとします。

これを、Aさんからピース1と2をもらって、Bさんからピース3をもらえれば、めでたくファイルが100%になります。

ただ結局は、構成されるファイルのピースを持っている人を自分が見つけられないと一生データが完成することはありません。

ここで疑問 「ピースの差し止めは出来るのか」

Q. 100%持っている人が、持っているピースのうち、ピース1とピース2は配布して、ピース3だけアップロードしないようにしたりすることは技術的に出来るのか?

A. 出来ちゃう。

トレントクライアントの挙動を調整することで、特定のピースのみをアップロードするように制限することができます。ただし、通常のクライアントソフトではそのような細かい制御ができるようには設計されていません。

要するに、クライアントソフトを改造して、特定のピースだけをアップロード対象にする、またはアップロード対象にしないような制御を実装することが出来てしまうのです。

例えば、アップロード時に「特定のピース番号を除外する」ようなルールを追加するとか。

あとは、「アップロード元が特定のピースを持っていないように偽装する」とか。

元々トレントのプロトコルでは、ピアが「どのピースを持っているか」という情報を他のピアに伝える機能があります。この情報を偽装すれば、「特定のピースを持っていない」と他のピアに知らせることで、実質的にそのピースのアップロードを回避できます。

他にも帯域幅や速度に制限をかけてみたり

一部のクライアントでは、特定のピースに対する優先順位やアップロード制限を設定できることがあります。これを利用して、ピース3の優先度を最低に設定し、ほとんどアップロードされないようにも出来ますね。

色々ありますね。

なぜ特定のピースを除外する人がいるのか

なんでこんなことをする必要があるかと言えば、色々考えられますがざっと思いつくのは3点。

①データ管理やセキュリティの目的: 特定のピースに重要なデータが含まれている場合、意図的にアップロードを避けることでデータの露出を防ぐ。

②プロトコルの研究: トレントの動作を調査・研究するために、特定ピースのアップロードを制限してネットワークへの影響を観察する。

③トラッカーへの負荷制御: 特定のピースを他のユーザーに任せる形で、アップロードの効率を調整する。

もちろん愉快犯などもいると思いますが、主には上記でしょう。

もしかしたら著作権のあるファイルを、その著作権の管理者がピースを1部分偽装して、完全にはダウンロード出来ないようにした上で配布をする。そしてダウンロードしようとした人を特定してみる、とか。

ただし、トレントの基本理念は「対等な共有」

特定のピースをアップロードしない行為は他のピアに不利益を与えます。

また、クライアントの改造や特定ピースの偽装などは、プロトコルやコミュニティの倫理規範に反する行為と見なされることがあります。

なのでちゃんと倫理的な観点やネットワーク全体の健全性を考慮しなければならないということです。

ちなみにトレント使用中は自分のIPアドレスがダダ漏れ

トレントの使用中は、ダウンロード・アップロードしているユーザーのIPアドレスが全て公開されています。

IPが分かる仕組みについては、トレントクライアントからリストを取得することで、IPアドレス、ポート番号、クライアントの種類などの情報がわかります。

リストの取得方法としては、こんな感じ。

①トラッカー(中央サーバー)に問い合わせることで、同じトレントを共有しているピアのIPリストを取得する。

②トラッカーを使わずに、分散型ネットワーク(DHT)を利用して他のピアを見つける。

③すでに接続しているピア同士で、新しいピアの情報を交換する。(PEX)

もちろんVPNを使ったりプロキシを通せばIPを隠すこともできますが、もちろんVPNはVPNの接続先にIPアドレスが把握されていますし、プロキシ経由でもDNSリークでIPアドレスが漏れる可能性があります。

要は変なファイルはトレントでは取り扱わない方が良いということですね。

総括

トレントはピース単位でデータを分割・転送し、各ピースのハッシュ値を用いて整合性を確認しながらファイルをダウンロードします。

ピースが全て揃わなければダウンロードは完了しませんので、ダウンロード出来るかどうかは結局シーダーがいるかどうか、接続してくれるかどうかにかかってます。

特定のピースが配布されないとダウンロードが完了しません。悪意ある操作で特定ピースを隠すことも可能なので、注意が必要です。

それではまた。

コメントをどうぞ