私はC#コアとgRPCを使用して最初のP2Pアプリに取り組んでいますが、ノードがどのように互いを見つけてルーティングテーブルを構築するかという概念を理解するのが難しいと感じています。
私の設計では、ノードのみを使用し、リスナー/ディレクトリ/検出サーバーは使用しないようにします。
ピアの検索と接続のチェーンから始めることができるが、そのワークフローを理解できないいくつかの「既知のノード」のリストがあります。
質問:
1)各ノードにIDはどのように割り当てられますか?
2)ピア検出はどのように機能しますか?
- Known node is running and is the only node on the network.
- New node connects to known node and requests full peer list?
- Connect to each peer on the list?
3)各ノードはクライアントとサーバーなので、各ノード間に2つの接続が必要ですか?
あなたはクラブに入るために誰かを知る必要があります。
P2pソフトウェアをダウンロードすると、既知の安定したピアのリストが表示されます。それらの1つが稼働している限り、ピアの最新リストが表示されます。友達に接続文字列を配布することで、いつでも独自のp2pネットワークを開始できることを排除します。
負荷分散などのためにそれに追加できる多くの複雑さがありますが、これは基本的にピアがピアを見つける方法です。ソフトウェアジャンプがそれを開始し、その後は口コミです。
まあ、あなたがポートスキャンを回避しない限り。しかし、それは少し失礼です。