Autodiscover in P2P Applications

I want to create a P2P application on the Internet. What is the best or if none of them exists well enough to automatically detect other nodes in a decentralized network?

+4
source share
3 answers

Grothoff and GauthierDickey from the GNUnet project (anonymous censored file sharing network), studied on the issue of booting a p2p network without any central hosting.

They found that for the Gnutella (Limewire) network, the random ip lookup required on average 2,500 connection attempts was trying to find a peer-to-peer network.

The article proposes a method that reduced the required connection attempts to 817 for Gnutella and 51 for the E2DK network.

This is achieved by creating a statistical p2p user profile for each DNS organization, this small (about 100 KB) discovery database must be created in advance and sent with the p2p client.

+7
source

This is the holy grail of P2P. There really is no magic solution - there is no way that a node can detect other nodes without having a well-known point to act as a link (well, you can do this on a local network using broadcast transmission, but not on the Internet) P2P files tend to work because well-known websites distribute โ€œstarting pointsโ€ for discovery, and then further discovery (I would expect) may come from letting the nodes know about other nodes that they know about.

A good place to start your research would be Distributed Hash Tables .

As for security, this topic will be in the literature somewhere, I have to think - again I would recommend Wikipedia. Nonspecific solutions are trivial: if you cannot communicate with the IP / port, do not save it in your list, and if node regularly provides non-existent pointers, consider prioritizing or removing it entirely from your list.

For evil sites, it depends on your use case, but let them say that you are doing file sharing. If you are requesting a file section, check with a few nodes what the hash of the file should be, and then request the hash. If an evil node gives you a piece that has a different hash, you can again de-prioritize or forget that node.

Distributed processing systems work somewhat differently: they tend to ask several unconnected nodes to do the same job, and then they use a voting system (possibly using hashing again) to determine if evil is available. If the node provides consistently bad results, the administrator contacts or the IP address is removed from the list of known nodes.

+3
source

ok, for two peers to find each other, they both need to know a common, say, mediator to exchange IP addresses once. You can use anything for this first handshake, having the ability to WRITE and READ from this "channel". ie: DNS (your well-known domains), email, IRC, Twitter, Facebook, dropbox, etc.

0
source

All Articles