関連サイト
本書の詳細ページが用意されています。
内容紹介
本書は読者対象として、Winnyの動作や仕組みに関心のある方と、P2P技術に興味があるソフトウェア技術者を想定しています。
1~3章では、Winnyの技術背景となっているP2P型システムについての基礎知識を説明し、ファイル共有ソフトの歴史を紹介したうえで、Winnyの基本的な動作と設計コンセプトをわかりやすく解説しました。Winnyの動作や仕組みに関心のある方はこちらをご覧ください。
4~5章ではP2P技術に興味がある開発者向けに、さらに詳細な実装を解説し、実際にP2Pソフトウェアを開発してみてわかった注意事項やヒント、今後P2Pソフトウェアを開発される方へのメモをまとめました。
Winnyは、ファイル共有ソフトとしてWinny Version 1が公開されたあと、P2P型の大規模掲示板を目指したWinny Version 2へと開発が続いていくわけですが、本書はWinny Version 1に焦点を絞って解説し、Winny Version 2に関しては展望のみにとどめることにします。また、Winnyの利用方法やビジネス面、および法的な面は、別の場で議論されるべきことなので、本書では扱いません。
Winnyは、ファイル共有ソフトの歴史の流れの途中にあるにすぎません。Winnyやほかのファイル共有ソフトによって確認された技術を基にして、これからさらに新しい技術が生み出されていくはずです。Winnyの技術詳細を公開することにより、P2P技術がより発展することを期待して本書を記します。
(「はじめに」より抜粋)
書誌情報
- 著者: 金子勇
- 発行日: 2013-07-26
- 最終更新日: 2013-07-26
- バージョン: 1.0.0
- ページ数: 217ページ
- 対応フォーマット: PDF
- 出版社: KADOKAWA/アスキー・メディアワークス
対象読者
WinnyやP2P型のネットワーク・アプリケーションに興味のある方
著者について
金子勇
昭和45年7月生まれ。茨城大学大学院にて博士(工学)の学位を取得。
情報システム科学専攻。専門はシミュレーション環境、OS、可視化など。
ネットワークは専門外であったが、原子力研究所勤務時代に複数のスーパーコンピュータをネットワークで接続し、その計算結果を可視化する研究にかかわった。その後、フリーソフトとして公開していたCGソフトの商用化、IPAの未踏ソフト事業などに参加したのち、東京大学で特任助手として実践的プログラミングの指導に従事した。
趣味は暇プロ。何かアイデアを思いつくと、プログラムという形で表現し、検証してきた。小さいころからプログラミングを趣味とし、数々のプログラムを作成していまにいたる。
日常ではトラックボールを愛用し、キーボードを抱えたまま就寝、起きてまたキーボードに向かう。そのため電動式の起き上がりベッドを常用しているが、これは東急ハンズで買ったものであり、よく噂されているような介護用ベッドではない。
目次
まえがき
1章 P2Pの基礎知識
- 1.1 私的解説:P2Pとは何か?
- クライアント/サーバとは対照的なP2P
- P2P型システムの特徴
- P2Pで何ができるのか?
- P2Pソフトいろいろ
- 1.2 P2Pファイル共有ソフト
- P2Pファイル共有ソフトの技術ポイント
- 1.3 ファイル共有ソフトの歴史
- 第一世代ファイル共有ソフト
- 第二世代ファイル共有ソフト
- 第三世代ファイル共有ソフト
- 1.4 まとめ
2章 Winny紹介
- 2.1 Winnyの開発コンセプト
- Freenetの匿名性はどのように実現されているか
- 匿名機構としてのプロクシー技術
- キャッシュ機構としてのプロクシーサーバ
- プロクシー技術をファイル共有ソフトに応用する
- FreenetとWinnyの設計コンセプトを比較する
- 開発の過程をたどる
- 基盤技術としてのP2Pファイル共有システム
- Winny 1からWinny 2へ
- 2.2 まとめ
- [ユーザーの目から見たWinny]
3章 Winnyの仕組み
- 3.1 Winnyネットワークの概観
- 3.2 ファイルの公開からダウンロードまで
- ファイルの公開
- ファイルの検索
- ファイルの転送
- ダウンロードしたファイルは公開される
- さらに別のノードがダウンロードする
- 3.3 中継
- 3.4 大規模なP2Pネットワークに耐える
- 上流と下流
- クラスタリング
- 3.5 Winnyのその他の要素
- アップロードフォルダ~キャッシュフォルダ~ダウンロードフォルダ
- キャッシュファイル
- ファイルの分割と多重ダウンロード
- ノードの発見――「最初の一歩」問題
- 3.6 Winnyネットワーク再考
- オーバーレイネットワークという側面
- Winnyネットワークという系
- 3.7 まとめ
4章 実 装
- 4.1 プログラムの概観
- 4.2 ノード管理
- 他のノード情報の提供
- 検索リンクの接続
- ノード情報
- 接続形態
- ノードのバージョン情報
- クラスタリングとノード間の相関度
- クラスタリングと検索リンクの接続相手の選択
- 4.3 クエリ管理
- 拡散クエリ
- 検索クエリ
- 増殖しないクエリ
- 4.4 キー管理
- キーの拡散
- 中継と拡散
- キャッシュファイル
- キャッシュブロック
- キャッシュファイルの構造
- キャッシュブロックの保有状況とキーの状態
- キーの上書きルール
- キーの寿命と削除
- 4.5 ファイルの転送
- 転送リンクの制御
- 同時ダウンロード数と同時アップロード数の制御
- アップロード要求が集中したときのリンク切断
- 多重ダウンロード
- ファイルIDとハッシュ値
- 4.6 タスク管理とWindowsスレッド
- ダウンロードタスク
- アップロードタスク
- キャッシュファイル変換タスク
- フォルダチェックタスク
- ハッシュチェックタスク
- 4.7 自動ダウンロード機構
- 自動ダウンロードの仕組み
- ダウンロード条件のチェック頻度を制限する
- 4.8 無視フィルタ機構
- 4.9 まとめ
5章 P2Pソフトの開発手法
- 5.1 P2Pアプリケーションのテスト
- シミュレーションを利用する
- P2Pネットワークの形成と維持
- バージョンアップと旧ネットワークの廃棄
- 5.2 シミュレーションの活用と限界
- 設計時のシミュレーション
- シミュレーションの限界
- 5.3 匿名性と転送効率の両立
- 5.4 Winnyと暗号技術
- ノード間通信の暗号化
- 初期ノード情報の暗号化
- キャッシュファイルの暗号化
- プログラム本体の暗号化
- 5.5 システム妨害に対抗する
- Winnyネットワークへの攻撃
- Winnyプログラムへの攻撃
- なぜWinnyはオープンシステムでなかったのか
- 5.6 長期的な設計における成功と失敗
- 長期的設計――クラスタリングの場合
- クラスタリングの変遷
- 長期的設計――キャッシュシステムの場合
- キャッシュシステムの変遷
- 長期的設計――ハッシュ値の場合
- 5.7 Winny 1開発のあとで
- 5.8 まとめ
6章 残された課題と可能性
- 6.1 BBS機能とアクセスコントロール
- 6.2 デジタル認証とアクセスコントロール
- 6.3 Winny 2とファイル共有機能
- 6.4 ファイル共有ソフトの応用を考える
- あとがきに代えて