p2pソフトを作りたいです

51891d87 白帽子 2010-03-15 19:17
>>cffeb8d1
まつもとゆきひろさんのROMAの解説を参考に考えてみるよ。
分散Key-Valueストアで作るなら、情報の管理、冗長化と中継を
上手にやらないとダメだよな。

まず管理情報とデータ本体をどう管理するかだ。

単純に分散KeyValueストアを形成させると、
完全一致検索か条件自動取得しかできない。
これだと、アップローダーと変わらなくなってしまう。
4167fd10 白帽子 2010-03-15 19:34
部分一致検索しやすくするためには、ファイルキーを流せばいいのだが、
効率よくファイルキーを拡散させるためにノードの並べ方がしっかりしてないと
ダメだと思う。
まずはトポロジーを決めよう。

円状ならROMAやChordを参考につくる。隣のノードにファイルキー・検索クエリを転送するのを繰り返させるのだ。
一定時間たつか、自分に戻ってくれば終了する。

階層付きメッシュならWinnyを参考に検索ネットワークを実装しなくてはならない。

メッシュなら効率は悪いけどShareを参考に
クラスタからとにかくファイルキーを集めて
自分のノードだけでインデックスを
作らなければならない。
7dd609b7 白帽子 2010-03-16 19:29
分散KeyValueストアで作ろう。決定。
トポロジーは、ファイルシステムネットワークも検索ネットワークも
環状に決定。

上流・下流の考え方を導入し、ファイルキー・クエリ・データの流れが
おおむね一定方向に流れるようにする。

さて、まずは検索システムを設計しよう。

検索するとき、ユーザーに何を入力させようか?
ファイルIDとパスワードならアップローダー的なシステムになる。
ヘッダーファイルとパスワードならBitTorrent風になる。
それとも、キーワードで検索させるShare風にする?

これを決めないとプロトコルもアルゴリズムも決定できない。
1d1f8b72 白帽子 2010-03-17 07:05
スレを占有しちまった。反省。
ae6298b8 anonymous 2010-03-17 08:15
>>7dd609b7

Share風でよろしく。
91e273e5 anonymous 2010-03-17 09:01
もともと書き込み少ないからちょっと動けば占有状態になるだけやん。
72f800b4 白帽子 2010-03-17 15:53
アップローダー的な使い方のほうが、分散Key-Valueストアに向いていると
思うんだ。
希望が多ければ、分散Key-Valueストア本体とは別のキーワード検索用ネットワーク
を実装すべきだとも思ってる。

Share風にするなら、
1、ファイルシステム部分と検索部分を同じネットワークにし、
  下流からのPULLでキーを循環させ、自ノード内から検索する。
  もしくは検索クエリーを循環させて自分の所に戻ってくるまで待つ。
2、ShareやWinnyと同じようなメッシュ状の検索ネットワークを
  別で形成させ、似たような処理でキー拡散・検索を行う。
3、perfect darkのDKTをまねて、検索用分散Key-Valueストアと
  共有用分散Key-Valueストアに分ける。
  指定されたタグをもとにキーの登録先・検索先を決める。

1でいいかなと個人的には思うんだが。

とりあえず、もっと希望を取りたいです。
43a032b8 白帽子 2010-03-17 15:54
とりあえず、書いておこう。
SourceForge.net: kai:
http://sourceforge.net/apps/mediawiki/kai/index.php?title=Main_Page
1aea0f6f anonymous 2010-03-19 13:13
分散データベースの「Cassandra」がApacheのトップレベルプロジェクトに
http://sourceforge.jp/magazine/10/02/24/0432216
942a293a anonymous 2010-03-21 08:33
darknet風の匿名ネットワークを少しでも簡単にできないかと考えていたんだけど、
ひょっとしてVPNを数珠繋ぎっぽく繋げたらそれだけで完成する?
20695b88 942a293a 2010-03-21 16:15
>>942a293a
tincってVPNが希望に近く、メッシュネットワークも形成できるんだけど、送信元のアドレスが出ちゃうな。
デバッグモードでログ取って、ちょいと照らし合わせれば分かる、くらいなんだけど。
さすがにこれをdarknet風匿名というのは詐欺になっちゃうよな。残念。
eb644d9f 白帽子 2010-03-21 19:31
>>20695b88
オープンソースなのかな?
ググってくる。
ab508b36 anonymous 2010-03-24 13:53
漏れも作りたいなぁ…
15bf837d anonymous 2010-03-24 17:34
作ったぐらいで捕まったりはせんだろう。
どんどんやっちゃえば。まだ金子裁判は決着ついてないけどさ。
05164f87 anonymous 2010-03-26 14:37
>>15bf837d
金子どうなるんだろ…
無罪だと嬉しいな。なんとなく。
説明書にも「違法なことには使うな」的な事書いてあったような覚えがあるし、
別に開発者は悪くないと思うが。。。
白帽子氏に期待。
44236277 anonymous 2010-03-26 18:45
DHTを使ってもなんとか匿名でファイル交換できないものかと考え中。
匿名DHTについてはTomoさんが述べてるけど、それとは別に出来合いのDHTソフトをつかってやれないものかと。
違法/不法な使用を目指す訳じゃないから強固さはいらない。ユーザー間で匿名であればいい(ISPからだと丸分かり、でも別に困らないし)。

経路はオニオンルーティング風にすればいいとして、ファイルの発見または告知をどうするかだな。
あ、DHTのコマンドをカプセル化してオニオンルーティングさせればいいかも。
新月同様「だれがその情報をもっているのか」は自明になるけど、これはしかたない。
DHT over DHTでも作って上のDHTはオニオンルーティングさせるという手もなくはないかな。つまりはTorのhidden server上でDHT動かすような。

うん。これはオニオンルーティングとhidden serverを整理すべきかな。
bfb654a0 anonymous 2010-03-26 19:10
オニオンルーティング
・前提
経路情報(ノードリストとか)、中継ノードの公開鍵 を持っていること(または取得可能なこと)
・経路情報より中継するノードを(ランダムに?)選びそれらの公開鍵で「カプセル化したデータ+次の中継ノードアドレス」を暗号化する

例)
A, B, Cを中継ノードのアドレス、a, b, cをそれぞれの公開鍵、a(), b(), c()をそれぞれの公開鍵で括弧の中を暗号化した状態とすると
a(b(c(Data),C),B)
というデータをAノードに送ることで、最終的にCノードへDataが届く。
Aノードは復号すると
b(c(Data),C)というAノードでは復号できない暗号データとBというアドレスが判明する。
またAノードからはこのデータが「私」から送られてきたことが分かるが、それが中継の結果なのかそうでないのかは分からない。
(TTLのような手法で中継を制御するとTTLが大きい、小さいである程度目星がついてしまう)。
Bノードは復号すると
c(Data)というBノードでは復号できない暗号データとCというアドレスが判明する。
またBノードからはこのデータがAノードから送られてきたことが分かるが、それが中継の結果なのかそうでないのかは分からない。

あれ? これって返信する場合はどうするんだろう?
返信用のアドレスもオニオンにすればいいのかな?

c(b(a(dummy, 「私」), A), B)

みたいな暗号化データをDataと一緒に届ければいいのかな。
b341a05e anonymous 2010-03-26 19:29
hidden serverじゃなくてhidden serviceだった。
でもって解説が見当たらない。他言語であるのかもしれないけど、公式外まで探すのは無理。
テキトーにこうすればできそうっての考えてみるか。一応ソースコードも当たって(読めないけど)。
a36d2edd b341a05e 2010-03-27 13:13
>>b341a05e
データそのものはオニオンで渡せばいいとして、問題はその要求を何処にやればいいかということかな。
ネットワークが安定しているならあらかじめ暗号化済みの経路情報をインデックスサーバなりスーパーノードなりに預ければいいか?
インデックスに hoge.onion=a(b(c(dummy),C),B),A みたいなのを登録しておくと。

うーん、いまいち。
e740bd2b anonymous 2010-03-27 13:35
よく考えたらファイルの発見ってリストを特定の誰かへPushするか不特定の誰でもPullできるかしかなさそうな……?
f042b180 anonymous 2010-03-27 13:51
>>e740bd2b
新月のように不特定にPush、それが連鎖して擬似ブロードキャスト、というのもありか。
となると残りは特定の誰かしかPullできない……Darknetかプライベートネットだな、これは。
be53c903 白帽子 2010-03-29 17:54
期待させてすまない。面白くてちょびちょび研究してるだけだから
P2P作れないかもしれないけどまったり待っててくれ。
CREAのソースコード軽く読んだがよくわからん。
コア部分どうなってるんだ?

いまだにきちんとしたプログラムが書けないから、
PythonとLuaとC♯を勉強しながら、しばらくソースコード解読やってみるよ。
ca7ad46c anonymous 2010-03-29 21:21
ポート開くところすら満足にいかなかったProfesって悪しき先例もあるしな。
330f1aee 白帽子 2010-03-30 17:58
皆さん僕が考えていたこととほとんど同じw
参考にします。
d7d8774f 白帽子 2010-03-30 18:04
C♯って使いやすいのか?人にもよるだろうけど。
記述が冗長で新しい仕組みがいっぱいに見える。
型付き言語だとこうなってしまうのかな?
eb557309 anonymous 2010-03-30 21:04
>>d7d8774f

俺にとってC#は使いやすい。少なくとも、C++などと比較すれば、ずっとすっきりとしてい
る。仕様は大きくなってきているが、それが可能にしている仕組みをクラスライブラリな
どとして自分で実装するよりも、用意されている物を使ったほうが簡単だ。
0907b477 白帽子 2010-03-31 07:44
>>eb557309
今度うちのKNOPPIXノートパソコンに
MONOとか.NET互換環境インストールして
やってみるわ。
弟のパソコンにはもうVSExpress入れてあるし。
7feec66a anonymous 2010-03-31 12:06
C++は、正直なとこ初心者には辛いだろうな。
標準添付されてるものがあんまりなくて、機能的に貧弱だし、
Windowsのコードを書こうとすると、相当な部分を自動生成してくれるとはいえ
結果的に物凄い分量のコードを相手にしなきゃならん。

エキスパートはVCで道具を作ってVBから呼び出すって話だから、
かゆい所に手が届いて速いのはVCなんだろうけどな。

d10d42c8 anonymous 2010-03-31 12:09
P2Pソフト専用の言語を作れば良いんじゃね?

とCしか触ってない俺が言ってみる
e822ad4c 白帽子 2010-03-31 14:45
>>d10d42c8
というよりライブラリがしっかりしてないとなー。
汎用性を保ちながらP2P寄りの処理を簡単に書けるようなライブラリが…。
まず、継承して拡張できるような汎用性のある部分を書いて、
ライブラリにまとめるしかないかもしれん。
たとえば通信部とか、データ型とか、ストレージ部分とか。
455fcf6d 白帽子 2010-03-31 16:47
ん?

P2P Programming Framework - Python
http://cs.berry.edu/~nhamid/p2p/framework-python.html
e08162b1 anonymous 2010-03-31 20:14
>>455fcf6d

プライベートIP限定でファイル共有するプログラム書いてみたら?
テスト段階でグローバルIPまで拡張する必要ないだろうし。
835b91a2 anonymous 2010-04-01 05:19
PAR2って正直どうなの?
レビュー求む
65ca812d 白帽子 2010-04-01 07:51
>>e08162b1
トポロジーはとりあえずメッシュでいい?
数十ノードなら単純にノード同士を繋げばいいんだろうな。

まずPythonのソケットライブラリかXMLRPCライブラリの
使い方を調べないとどうにもならん。
デコレータ構文についても知りたいし。
29a850a7 白帽子 2010-04-01 18:13
そうか[[質問スレッド/82a539d3]]のようにしてもいいわけか。なるほど。
03551e6c anonymous 2010-04-01 18:32
PAR入れてやれば落とせる確率が上がる。
99%まで落とせる可能性が高まるってことだから、
rarのリカバリレコードと組み合わせればかなりイケるはず。
4c4f9fc8 anonymous 2010-04-02 00:13
>>03551e6c
PAR(パリティ)じゃなくて、PAR2(パリティ2)な。
中身はリードソロモン符号
頑張って演算すればごっそり抜け落ちたデータも補完できるスグレモノ
http://www.wdic.org/w/TECH/%E3%83%AA%E3%83%BC%E3%83%89%E3%82%BD%E3%83%AD%E3%83%A2%E3%83%B3%E7%AC%A6%E5%8F%B7
例えばCDはCIRCといって、クロスインターリーブされたリードソロモン符号で
読み取りエラーを補完している。
2feb0195 白帽子 2010-04-20 12:34
http://tmp7.2ch.net/test/read.cgi/download/1210081869/

286 :[名無し]さん(bin+cue).rar:2008/05/10(土) 03:36:20 ID:2v14HdNF0
    これも貼っとこう

    ■PDを使用していると送受信速度がゼロになってしまう方へ
    WinnyやShareと違い、PDは隣接ノードと接続し続けるをことはせず、情報のやりとりがある度に直接ノードに接続しに行くので、
    受信側から見ると色んなPCからアタックを受けていると勘違いを起こすことがあります。
    そのため『NICが蟹製』の場合やファイヤー・ウォールを『Zone Alarm』にしている場合は、
    送受信速度がゼロになってしまう事がある様です。
    上記の場合は、別の製品に替える必要性があるかもしれません。
    またIE等のブラウザの動作に影響が出る場合は、最大同時接続数(ハーフ・オープン)の制限解除を行う必要があります。

    ■通信速度が上がらない(Unityは十分溜まっているのにDL出来ない)時の対策について
    ※DL(UL)速度は接続先のUL(DL)速度に左右される場合があります。
    ①ルーター等を再起動して下さい。
    ②ルーター側のDMZ設定を有効にして下さい。
    ③BIOT等の同時接続数制限の解除が出来るフリーソフトを使ってTCP/IPの最大接続数を100以上にして下さい。
    ④会長公認最新ヘルプ・ファイルを使用して『Max User Port』と『Tcp Timed Wait Delay』を変更して下さい。

え、perfect darkって常時接続じゃないの?
c5dab428 学校の課題研究で八イブリッドP2P作ることになった 2010-04-24 15:03
e1e8c972 白帽子 2010-04-24 15:06
>>c5dab428
間違えた失敗
7adb69de anonymous 2010-05-16 19:36
age
6afa2fb7 白帽子 pRqBriWgNGG 2010-05-16 22:04
設計変更。
ピュアP2Pよりだが、たまにサーバーも使うことにした。
あと、これはLAN用です。
08a5df53 anonymous 2010-05-24 22:27
>>9c513784
お、めずらしいモノを見つけてきたねぇ。
1836a511 白帽子 pRqBriWgNGG 2010-05-25 00:27
>>08a5df53
Monoでテストしてみるか。
ちなみにperfect darkで見つけてきた。ClamWinによればウィルスはないとのこと。

perfect darkのdkt+dht+du面白い。理解できなくてもソースコードを見てみたい。
アーカイブのパスワードをなんとかクラック出来ないものか。
233a80ae anonymous 2010-05-25 00:29
>>08a5df53
何それ見えないkwsk
69a6a443 anonymous 2010-05-25 00:33
>>233a80ae
>[9c513784]  白帽子  pRqBriWgNGG 2010-05-24 21:27  1274704032.iso  (9024KB) [返信]
>    Profes一式を発見 
a298349d 白帽子 2010-05-25 12:04
思ったんだが、新月 with Profesってのはどうだろうか?
ProfesはGPLに基づくオープンソースなプログラムだから、
Profes開発スレでも立てて、シンゲツァーの何人かで
開発続行してみるのもありだと思う。

数MBぐらいまでの小さなファイルは新月の添付ファイル機能で、
大きなファイルはProfesでって感じだ。

な、なんか可能性が広がる気が・・・wktk
c5e6a698 anonymous 2010-05-25 12:17
>>a298349d
俺もテストに参加してたが、
Profesの作者は結局ファイアウォールを越えられなかったぞ。
ポート開放してもつながらなかったもん。
ちゃんと通信できるように改造できるのか?

今の奴なら普通、モデム直下にパソコン1台とかありえんだろ。
特にダークサイドなP2Pやる奴は普通、
メインマシンとP2P専用機(24H稼働)を用意するもんだ。
ec4a3cae 白帽子 2010-05-25 12:34
>>c5e6a698
ん?てことはNAT対策がダメダメ?
Winnyのように、実際の通信でわかったグローバルIPアドレスと
Winnyプロトコルヘッダに記載された自己申告のプライベートIPアドレスの違いを検出して、
「NATノード」として扱うように出来てないってことか?
ならばキーのIPアドレス書き換え(対NATノード)を実装しなければならんのか。
b46994bc 白帽子 2010-05-25 12:39
ProfesをPythonで再実装・・・?

Top of this page. | <<last 0 1 2 3 4 5 old>>

limit: 1536KB

(p2pソフトを作りたいです/254/0.0MB)

Powered by shinGETsu.