以前P2Pという言葉を考えるという文を書いた。 今回は一歩進めて、自分なりにP2Pを定義してみたいと思う。
P2Pはクライアントサーバ(C/S)との比較で語られることが多いが、 この文章ではC/Sの一形態としてP2Pを定義する。
この記事はP2Pの定義を考えてみるの影響を受けて書かれた。
C/Sには色々な意味があることは 「P2Pという言葉を考える」で書いた。 ここでは辞書的な意味でのC/Sを採用する。
接続を受け付ける機能をサーバと呼び、 接続する機能をクライアントと呼ぶ。
1つのまとまりをノードと呼ぶ。 典型的には1台のコンピュータだが、 1台のPCの中に複数のノードを作ることもできるし、 複数のPCで1つのノードを作ることもできる。
1つのノードの中にクライアントとサーバがあるものをサーバントノードと呼ぶ。 クライアントだけを持つノードをクライアントノード、 サーバだけを持つノードをサーバノードと呼ぶ。
サーバントノードを必要とするネットワークをP2Pと呼ぶ。
P2Pを定義した。 この定義は「1つのPCでWebサーバを動かしながら、 別のウェブサイトを見ていたとしたら、それはP2Pなのか」という頓知のような問いに 「それはP2Pではない」という判断を下せる。 またWinMXやWinnyでいうところのポート0のノードが存在しても、 そのネットワークをP2Pと呼ぶことができる。
ノードの定義に曖昧性が残るが、 実装に依ってしまうのでうまくいかない。