Winnyの技術
読んだ本
Winnyの技術 | 金子 勇, アスキー書籍編集部
2005年の本。Winnyの開発者である金子勇さんが自ら執筆したWinnyの解説本。
もう中古でしか買えない
達人出版からPDF版だけ販売されている
メモ
P2Pとは
=ファイル共有のことではない
対等な動作をするコンピューターによる主従関係のないシステムモデル
クライアント/サーバ方式の真逆
P2P型のシステムの特徴
クラサバ方式比べて負荷が集中するサーバがないので利用者の急増に耐えられる
一部のノードが落ちてもサービス自体は継続できる
データがノードに分散してるのでデータの一元管理が苦手
システム監視や管理がしにくい
ファイル共有ソフトの世代ごとの特徴
https://scrapbox.io/files/63a6934d531b03001e3a1196.png
第一世代: Napster(1999年1月~)/OpenNap/WinMX
第二世代: Gnutella(2000年3月~)/KaZaA(後のSkypeの開発者が作った)
第三世代: Freenet(1999年。匿名出版システムの設計例として。論文。)/Winny1(2002年5月~)
ファイルの転送の間に多数のノードが挟まる + キャッシュを設ける(キャッシュを返してるのか元データを返してるのかわからなくなる) => 匿名性の担保
Winnyの開発コンセプト(プロキシを内蔵したP2P共有ファイルソフト)
匿名性
情報を直接やり取りするのではなく、間接的にやり取りすることこそが匿名技術の本質
ファイル共有効率
プロキシサーバーを多段で中継させて匿名性を高め、さらにキャッシュ機構を追加することでファイル共有の効率を上げる
ネイティブプログラム(バイナリ配布=利用者の管理負担軽減の目的)
Winny2では大規模BBS機能を追加(BBSブラウザを備えたファイル共有ソフト。既存のWinny1+2ch的な?)
そこで著作物の放流を予告する投稿をした人が逮捕。著者も著作権法違反幇助の疑いで逮捕(2004/5)
P50にWinny2で実際にファイルを検索したりDLしたりする画面の画像が見られる。貴重だ...
キーワードにマッチした情報を自動で収集し続けてくれるDL Bot的な機能があり便利そう。
高速回線と低速回線のノードで分けて高速側にキーやファイルを集める形になってて頭良い(上流と下流)
ISDNとかADSLが普通に出てきて時代を感じる...
似ている傾向のファイルを持つノードを集めるようにする(クラスタリング)
検索ワードを使って嗜好でクラスタリング
求めるファイルを持つノードが近くに配置される(物理的な距離は関係ない)のでDLの時に経由するノードが減り効率が良くなる
ダウンロードと配布が同時に起きるのでよく検索されるものはより多くのノードに分散されてキャッシュされる。検索効率が上がる。
以降、実装やP2Pアプリケーション開発のTips的な話題に関する話が続く。タスク・ノード・クエリ・キーを管理するプログラムが同時並行で稼働してる。
アプリケーションのテストのために2ちゃんねるで参加者を募集。彼らが多大な貢献を果たしている。
悪意のあるノード対策
ゴミファイルを大量にばら撒くやつ
クラスタから省く
捏造したファイルをばら撒く
検索したユーザーが捏造警告フラグをつけられるようにし、危険っぽいファイルは民意でわかるようになる
ダウンロード数 = アップロード数になるように保つ
タダ乗りが増えるとネットワークの効率が落ちる
アクセスコントロール
アップロード者/BBSのスレ立て人だけがファイルの削除等の管理をできたらよかったなぁと書いてあった。この機能があれば問題も大きく広がらなかったのだろうか...
その他
WinnyのソースコードをGitHubにアップしてる人がいた。金子氏とは無関係の人。
当時の様子を日記に書いてる人がいた