P2Pファイル交換ソフトを作ってみる(1)

恥ずかしながら、真面目にソケットを叩いてネットワークプログラミングを行ったことは、生涯で1度しかありません。普段は、通信用ライブラリを使って楽をしていました。いま、修論の合間を縫いながら、P2Pファイル交換ソフトを書こうとしているのですが、プロトコルを考えるに当たって問題点が発生しています。(真面目にプロトコルについて勉強したわけではないので、これ以降の記述で間違ってたらごめんなさい。)
作ろうとしているのは、誰でも接続できる、プッシュ可能はP2Pファイル交換ソフトだ。MSNメッセンジャーのファイル送信機能を想像してもらえればOK。当分の使用用途は、簡単なFTPの代用だ。
自分が複数台のマシンを使用しており、しかもネットワーク上で離れた場所に点在しているとき、ファイルの共有を行おうとしたらどういった手段があるのか。思いつく限りのリストアップをすると、

などが考えられる。もっとも、良い手段が思いつかない想像力のない自分が泣けてくるけど。(なんか、わざわざ自分で作る必要がないように思えてきたけど、作ることに意味がある。ただたんに、作りたいんだよ!!)
で、次回は、具体的な設計について。
ということで、日記のネタが少ないので、無理やりネタを仕込んでみました。いまからP2Pソフトの流れを作っておけば、Winny本が出たときにネタにしやすいでしょ。