I forward each message I receive as appropriate, unless I have already seen the message. If I have seen the message, that means I have already forwarded it, so everyone I forwarded it to has already seen it, and so on. So I just forget about the duplicate and save everyone the trouble. The GnutellaNet has no hierarchy. Every server is equal.
Every server is also a client.
Each Gnutella server only knows about the servers that it is directly connected to. This provides amazing anonymity. Unfortunately, the combination of having no hierarchy and the lack of a definitive source for a server list means that the network is not easily described. Connecting to a server After making the initial connection to the server, you must handshake. Currently, the handshake is very simple.