Link to home
Start Free TrialLog in
Avatar of barbourwill
barbourwill

asked on

Project:::Peer to Peer IRC/file distribution

I was just wondering if any one had any techinical information about application level p2p networks such as kazaa,gnutella etc.

The plan is to make my own modded version for use either over the internet or LAN. however, i'm slightly unsure about successful p2p protocols which would enable my project to work with a large number of users logged on simultaneously.

I will use 2 different classes of nodes on the network, supernodes and nodes (as in kazaa).

More *specific* question..."how would i propagate a search query amongst supernodes that would not use up loads of bandwidth and cpu time?"

Another *specific question*.."how would message routing work amongst supernodes"

I know its quite an open ended and vague question, but i would appreciate it if anyone could point me in the right direction.

cheers

will

Avatar of barbourwill
barbourwill

ASKER

also if anyone wants to help me code it :)

...well its a challenge...

ne1 interested??
Avatar of Mohammed Nasman
you can check out my helper functions and classes for communication and file transfer in a video survailance app
http://lee.nover.has.his.evilside.org/isapi/pas2html.dll/pas2html?File=/delphi/MiscFiles/vn_common
yeah but i need more technical info on how the protocols actually work.
the idea is the same with all of these programs
a client connect to a server to find a specific file
the server sends the info on the results
the results contain the info of the users ip and the file info
so your client then connects to the other client and requests the file from it
it then sends the file to your client
if you checked out my link then you saw that everytime I send something I first send a header that describes what I wanna do
then the other side returns the same header with the result value
yeah, i get all that but what i mean is...

4 nodes connect to a supernode:
The supernode is connected to 5 other supernodes(which in turn are connected to many others, and all have mindless nodes connected to them).

                             [s] [s] [s]
                               \  |  /  
                       [s]------[ S ]------[s]
                             
                             /  |  |  \
                            [N][N][N][N]

When a mindless node [N] searches for a file, the request is passed on to the immediate supernode. How does the supernode [ S ], propagate this search message to relavant supernodes?

Would it broadcast a message to all connected supernodes (which in turn broadcast it to their connected supernodes)?

This surely would use up loads of bandwidth, especially with hundreds of search requests going on simultaneously.So i need an efficient method of propagating
search messages amongst supernodes.


thanks for your help

will
the diagram didnt work quite as i expected!

the central supernode [ S ] has 4 child nodes [N] connected to it.  The supernode [ S ] is connected to 5 other supernodes [s].
ASKER CERTIFIED SOLUTION
Avatar of Lee_Nover
Lee_Nover

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Lee,

I probably could avoid the repetion of messages by assigning each message with an ID number, so if a node sees the same message, it disregards it.


thanks for the help

and i suppose ill give ya the money.

will
thanks for the help
yes that would work :)
gnutella uses ttl to determine which packets to disregard ... as described in that article

I don't have any docs on Multicasting but it should be similar