Blog読んだ本の要約、感想など。他にも日々思ったことをつれづれと書き連ねます。G-Tools☆☆☆☆☆いわずと知れた有名ファイル共有ソフトの開発者によるWinnyの技術論。本書は6章で構成されていて、1章ではWinnyのバックグラウンドであるP2Pについての簡単な説明がなされています。その中でファイル共有ソフトを第1世代~第3世代までで分類していて、第1世代をNapstarを代表とする中央にサーバを置いて情報の流通を管理する世代としています。第2世代は中央サーバはなくなりP2Pに近づいたものの、ネットワークに検索依頼情報が溢れてしまって破綻したGnutellaを引き合いに出しています。第3世代として中継を利用したシステムを特徴とするシステムを挙げ、Winnyをここに分類しています。2章ではWinnyの基本的なコンセプトとなる中継のアイデアの元になったFreenetを紹介し、ファイルデータをネット上に分散させることによって完全に秘匿性を守る可能性を開いたことを述べています。ネット上にデータ自体を分散させるのは効率的にはまだ改善の余地があることを述べ、Winnyではファイル自体をまず分散させるのではなく、それよりもサイズの小さいインデックス情報としてキーを流通させ、そのキーをもとにファイルの情報を得てファイルの持ち主のノードにダウンロードを要求し、その過程でファイルが分散してネットワーク上に広がっていくアイデアを述べています。このアイデアの元としてプロキシサーバを挙げています。3章からはより具体的なWinnyのアイデアについて述べられていて、Winnyの構成ネットワークの特徴として、回線速度能力によるノードの階層化が取り入れられていて、より高速な回線能力を有するノードはそれだけ中継能力が高いとして上位の階層に属し、キーの拡散は常に上位のノードに広がるようになっていて、下位のノードは上位のノードに検索メッセージを投げることによってキー流通の効率化を図っている説明がなされています。キーもノードをわたり行く過程でキーのファイルアドレスを書き換えることで効率の良いファイルの分散を目指していることの説明もあります。嗜好が近いノード同士が検索接続が増えるような工夫についてや、多重ダウンロードについても簡単に説明があります。4章ではさらに込み入った実装の話に入り、具体的にどのような指標を用いて接続先を選ぶのか、ノードの嗜好の相関度の計算方法、効率よくキー情報が流通するためにどのようなキーの拡散、検索ルールが作られているのか、自動ダウンロードの仕組み、またキャッシュファイルの構造についてより細かく説明がなされています。5章では開発にあたってどのような試行錯誤がなされていたのかを述べていて、最初の構想段階ではシミュレーションを行いながら設定を考えていたことや、バージョン情報の更新に付随する互換性について頭を悩ませたこと、有名になってきた頃から始まった攻撃に対処したこと、特に暗号化について苦労したことが説明されています。Winnyがクローズなのはフリーライドを防ぐための対処であったことも書かれていました。最後には今後のP2Pソフトの発展には匿名性が重要であることを述べています。本書はあまりWinnyやP2Pを知らなくても理解できるほどわかりやすい説明でした。実際自分も本書を読むまではファイル共有ソフトは使ったことがありませんでした。したバックグラウンドの技術を知ればこうしたソフトをもっと使いこなせるように思います。3章くらいまで読めば基本的なアイデアを知ることができると思います。いったP2Pだとよく囚人のジレンマ的な話が出てくるように思います。著者も全体の最適化を考える際にいつも各個人が己の要望を最大限に実行した場合を念頭においているようでした。したことから匿名性の重要さもさることながら、各個人の行動がネットワーク全体の最適化につながるようなアプリケーションの設計を考えることも大切なんだなあと感じました。このWinnyは理想的な完全分散型のP2Pを志向していたようにも思うのですが、(あまり知らないのですが)他のWinMXなどのファイル共有ソフトは中央集中的なシステムも利用しているようで、Winnyの開発がストップしていることもあり、今後P2Pは完全な分散システムではなく、中央集権的な要素ともうまく共存しながら発展していくのかもしれません。http://flaw.blog80.fc2.com。