Page 2 of 3
The Napster solution
Napster (1999) was a pioneering P2P file sharing system and it was built with one idea in mind – to freely share music clips. Individual people stored audio files, typically MP3 files, on their own hard disks and then shared them directly with other people.
The Napster client made it possible to find and download music that other people offered and to share music on your own hard disk at the same time. The problem of locating a file and suitable server was solved by the setting up of a central Napster server.
When you started the Napster client it connected to the central server and told it what files were available on your machine. When you typed in a query for a piece of music the Napster server listed all the machines that stored the file. You picked a machine and then your PC connected to it and downloaded the music directly.
The Napster P2P
Surely this is illegal?
Napster was designed to take advantage of a loophole in copyright law. This allows friends to share music with friends and Napster attempted to extend the concept of friendship to include being friends by virtue of being a Napster user.
Surely this isn't P2P because it still makes use of a central server?
It is P2P because the central server only holds the catalogue of what is available the file storage and file transfers are very much P2P. However the existence of a central server is a weakness and it eventually led to the downfall of Napster.
A Judge finally ruled that Napster's users were not friends and Napster was guilty of encouraging people to pirate music files. The Napster site was closed down (2001) and so did the entire P2P system. When Napster re-launched itself it was as a pay-for-music site and others took up the challenge of creating P2P networks that were more difficult to eliminate.
The central catalog architecture is also used by the eDonkey network.
The Gnuttella way
Designed by a group of programmers working for AOL and posted on their website for free download the Gnuttella network soon became a success. Even when AOL took the offending software off its servers Gnutella continued to work and grow because it didn't suffer from the same flaw that Napster did.
Gnutella did away with central servers altogether by keeping the catalogue on the peers. If you search for a file using Gnuttella it passes the name to one other Gnuttella client – it knows the IP address of this machine either because you typed it in or because it was written into the client software. The machine you contact checks to see if it has the file if not it passes the request on to a number of other machines. If any machine has the file it sends a data packet containing the address of the machine that has the file.
The request is also passed on to other machines and it "fans out" across the Gnuttella network potentially reaching a huge number of clients. If each node contacts just three other nodes then after propagating the request 10 times over 8000 machines have been queried. The search is generally limited to a given depth by specifying a TTL or Time To Live parameter on the query.
Gnuttella's search pattern
The big advantage of the Gnuttella approach is that there is no central server for any function. All you need to get started and keep working is the IP address of one machine on the Gnuttella network. Addresses of other machines are propagated through the network along with queries. From the clients' point of view the only disadvantage of the approach is that their machines are being used as part of the catalogue and this takes some of their Internet bandwidth.
However a little thought reveals that a bigger problem with this method of searching is that the time it takes to do a search of a reasonable proportion of the files stored on the network increases with the size of the network.
As the Gnutella network grew users noticed a slow down and a new design was created, Gnutella2, in an attempt to overcome the problem of a distributed catalogue. The solution was to designate some of the peers as "super nodes" which divided the network up into smaller sub-networks.
The Gnutella 2 solution.
Soon after the open source Gnutella 2 or G2 was established the same idea was tried by the FastTrack network better known as Kazaa, which is in fact the name of its browser. FastTrack introduced other innovations such as begin able to pause and restart a download but it isn't open source and it charges a licence fee to any company wanting to produce a client. FastTrack was a commercial P2P system and it made money mainly by advertising.