WinnyとShare

Shareのトラフィックも順調に増えているようですし、ちょっと比較などしてみようかと思います。そのうち気が向いたら本サイトにもまとめるかもしれません。
なお、Shareについてはそんなに真面目に追っているわけではないので、間違っている点があれば、トラックバックなりコメントなり頂ければと思います。

インフラの変化による設計思想の違い

とてもよく似た目的を持ちつつも開発思想が大きく異なるこの二つのファイル共有アプリケーションですが、その理由を考えるのに、この3年間でのインターネットインフラの変化に触れないわけにはいきません。
Winnyが出てきた2002年上旬、まだADSLYahoo! BBの貢献もあり300万加入者に届くかどうか、FTTHに至ってはわずか5万加入者と、いわゆるブロードバンド比率はたったの2割前後でした。事実上、好条件ですら上り側が1Mbpsまでしか出ないADSLがネットワーク全体を牽引していく位置にあった事になります。
そこから3年が経過し、FTTH加入者が150万を超えました。ADSLはリンク上限速度が上がった事を抜きにしても1200万加入者まで膨れあがり、上り速度も、現在では3Mbps〜5Mbpsにまで引き上げられました。もはや「ブロードバンド回線」が基本となったインターネットを前提にShareは開発されました。
ISPの立場からするとあまり冗談になっていないご時世ですが、「じゃぶじゃぶ使える」ようになり、特に上りの帯域について利用者の意識も含め、気にせず使えるようになったというのがShareのあちこちに現れているように思います。

P2Pネットワーク

WinnyとShareのネットワークでもっとも異なる点は、ダウンロードに用いるTCPコネクションの接続方法です。
Winnyでは、ある要求者は周囲からかき集めたキーを元に、そこに書かれた保持者に対して接続しにいきます。この動作がWinnyの中継転送の肝にもなっています。また、複数の接続先候補を持った場合には、要求者の希望する条件に基づくダウン優先度に応じて、例えばより参照量が多いものから取りに行きます。
それに対し、Shareの場合はファイルの保持者から要求者に対して接続するというやり方を選びました。おそらく、ダウン要求のみを検索ネットワーク上で送っているのかもしれません。実現方法はともかく、ダウンロード処理の主導権を目的のファイルの保持者が握ることで、待ち行列を実現しています。
この違いから、Winnyでは要求者、Shareでは保持者の意志が優先されるわけですが、当然ファイルを欲しがっているのは要求者です。一回のダウンロードというミクロな視点で見ればShareの方が無駄な接続試行も無く効率的です。また、本当に欲しいファイルだけが欲しい、という視点から見てみるとWinnyの方が無駄が少ないと言う見方もできます。

キャッシュの配布

まず、おそらくShareの最大の特徴として認識されている強制拡散ですが、効果としてWinnyの中継転送と似ているというだけで、それを実現するメカニズムとして見るべき点はあまり無さそうに思えたので割愛します。
まず、キャッシュの扱いとして一番違う点を最初に上げておくと、Winnyでは不完全なキャッシュを自分が持っているだけでは、他の人にその保持情報を伝えません。ただし、また別のノードが完全なキャッシュを持っているという情報を得た場合には、ダウンロードで自分を中継させるようにし向けます。
この方法の利点は、部分的にしか持っていないキャッシュが補完されるようになっている事です。また、Winnyネットワークのどこにも完全キャッシュを持っていないにも関わらず検索では見つかってしまう、と言う事を避ける事ができます。
一方、部分的なキャッシュしか持っていないノードからも可能な限りかき集めるというのがShareの手法で、上記の優先度の違いも重なって、Winnyに比べてきわめて断片キャッシュが増えやすいという性質を伴っています。また、ファイルサイズの増大に伴い、近隣のノードだけでは断片を全部集められないというケースが増えると、なかなか集めきれない死蔵キャッシュで溢れてしまう事になります。
つまり、Winnyは効率よく「完全キャッシュ」を配布することを目的としていて、Shareは「少しでも入手できるキャッシュ量」を増やす事を目的としています。ネットワークの帯域幅や、キャッシュに必要なHDD容量の面から、どちらが無駄が少ないかは自明ですね。
Winnyが効率が良いなんて書いてしまうと、ISPさんから苦情が来そうですが、Shareとの比較では、と言う事になります。

あとは、Shareでは2GBの制限が撤廃されたため、そもそもファイルサイズ自体が増えている事も一応書いておきます。

ただし、これも重要な環境の変化として、HDDの高容量・低価格化というのを提示しておきます。系全体でのキャッシュ保持量の増加を考えると、完全キャッシュにこだわる必要が無くなった、とも言えるわけです。

短くまとめると

ちょっとだらだら長くなってしまったので、短くまとめます。

  • Winnyはファイルを要求・取得する側にとって、無駄の少ない作りになっています。
  • Shareはファイルを公開するという目的をもう二歩くらい推し進めています。
  • この違いはどちらが良い、というのもではなく、この2年半の環境(通信インフラ、記憶容量)の変化によってカバーされています。