If you search for a file (say, you enter a keyword), your client will contact one hub cluster after an other and each hub having hits for this keyword will forward you the IPs with the respective hits.
Then your client combines this data and sorts the files by their hashes. If there is the same hash for two files, they are assumed being identical and your client displays 2 sources for this particular file in the search window.
Once you start a download, all known sources for the file are contacted and from each source can be downloaded different parts of that file. These parts are verified after downloading them and once you have all parts, your download is completed. It doesn't matter whether you got all the parts from one single source or whether you got them all from different sources.
As for clients running the GnucDNA core: the core handles all networking. The application itself provides eventual additional features as well as the graphical GUI.
Yes, there is cooperation between all pears in the swarm. Some of them are called Hubs (// to UPs on gnutella) and they do the coordination. Hubs arrange themselves into Hub groups, so-called clusters. Like this, in order to search the entire network, a client doesn't need to send his search query to all Hubs, but only to all Hub clusters, which reduces the overall load needed to search the entire network. The search itself is completely controlled by the searching client, which means it decides which Hub clusters to connect and when to stop searching etc.
__________________ </td><td><a href="http://crawler.trillinux.org"><img align="right" style="border:0" src="http://crawler.trillinux.org/img/netsize.png" alt="Network size"></a></td></table> |