by Pete Capra 14:50, 21 Oct 2004 (EST)
Created by Justin Frankel and Top Pepper from Nullsoft in March 2000, Gnutella, was the first known working example of Pure P2P File-Sharing. Nullsoft, a division of AOL, had commissioned Frankel and Pepper to create the file sharing client, but after a merger with Time Warner, Nullsoft realised the legal implications of the program and removed all links to the file off their website. Gnutella had been available to download for only one day, but that was enough time for it downloaded by other developers and reverse engineered so that other clients could be developed to use the Gnutella network.
Gnutella named because the programmers ate too much Nutella in the development process (and Nullsoft had plans to release it under a GNU licence), was a break through because it was decentralised (Pure P2P), something that no other network had been capable of before. “What Gnutella does that's different is you connect to each other. You form a web of servers. Four people can connect to each other, they can connect to four others, and it spreads out to a huge tree.� (Pepper, T. 2000). Gnutella operated by connecting to other known Gnutella clients. When a search was executed, the query would be sent to all clients connected to that client (node), those nodes would in turn send the query onto the nodes that it was connected to. At any time, a single client or node would be connected to 5 other nodes. This meant that in one step 5 other nodes would be queried, in two steps 25 nodes would be queried, in three steps 125 nodes and so on. So in theory, in fourteen steps, over 6.1 billion nodes could be queried (and more than enough results for the search would be generated). Once a result was found this would be returned to the original node and a direct connection to transfer the file could be established.
However, this concept came with several flaws. The first flaw was that after a client had just logged on to the network, it did not know which other nodes it could connect to. This problem was solved by providing a list of nodes that were pre-programmed into the software – this list could be used if no other nodes were known. Once a query had been performed the client would receive several replies, and therefore, have other nodes to connect to.
Another problem encountered was that if a query was sent to a slow client (low bandwidth user) then a query would take a long time to execute. Again, this problem was solved by redesigning the network. Two types of users were created: Ultrapeers and Leaves. Figure 1.1 illustrates how users interacted as Ultrapeers and Leaves.

Figure 1.1 Ultrapeers and Leaves
Other features such as Dynamic Querying and Download Meshing were built into Gnutella, but one of the most successful features was the introduction of file swarming. This provided the functionality for small parts of files to be transferred across the network and therefore allowing clients to download the same file off several different nodes at the same time, creating a significant increase in download times. This feature was later copied by other P2P networks such as FastTrack and NEOnet. Recently an updated version of Gnutella was released – Gnutella2 or G2. G2 boasts the capabilities to connect to multiple networks at the same time.
Gnutella.Com (2004) “Gnutella� retrieved October 9, 2004 from http://www.gnutella.com
NodeWorks (2003) “GNU For You� retrieved October 17, 2004 from http://pedia.nodeworks.com/G/GN/GNU/GnuFU/
News.Com (2000) “AOL’s Nullsoft creates software for swapping MP3s� retrieved October 16, 2004 from http://news.com.com/2100-1023-237974.html?legacy=cnet
Slyck (2003) “Slyck’s guide to Gnutella� retrieved October 15, 2004 from http://www.slyck.com/gnutella.php
Wikipedia (2003) “Gnutella� retrieved October 16, 2004 from http://en.wikipedia.org/wiki/Gnutella
P2P File Sharing Networks
Napster
Morpheus
BearShare
Kazaa
Pete Capra 11:33, 21 Oct 2004 (EST)