Gnutella is a widely-used platform for exchanging files. clu / Getty ImagesAt its height, Napster was arguably the most visited website ever. Within a year, it skyrocketed to 60 million monthly visitors before being shut down due to copyright infringement, only to return in 2003 as a legitimate music-download service.
Napster's explosive popularity was driven by its one-of-a-kind offering: free music accessible with minimal effort from an enormous database. Gone were the days of visiting music stores, paying for albums, or searching for a CD and a cassette to record it on. Almost every song imaginable was available at your fingertips.
The original Napster's primary flaw was its design, particularly the way its system was structured to distribute illegal content. When the courts determined that Napster facilitated copyright infringement, it was relatively straightforward for them to shut it down through a court order.
Despite the copyright violations associated with Napster, its users were unconcerned. Most of them migrated to a new file-sharing system called Gnutella. In this article, we’ll explore how Gnutella differs from the old Napster, allowing it to continue thriving despite a challenging legal landscape.
In 2003, a new parent company, Roxio, relaunched Napster. Now, it operates as a legitimate pay-for-music service with no issues of copyright infringement in its version 2.0.
Understanding Napster's Architecture

On the Web, as commonly set up, Web servers store data and handle requests for that data (refer to How Web Servers Work for more information). Web browsers let users connect to these servers and view the requested data. Large websites with heavy traffic may need to purchase and maintain numerous machines to handle the volume of user requests.
Napster was the pioneer of the peer-to-peer file sharing model. In the original version of Napster (before it relaunching in 2003 as a legitimate, pay-for-music platform), users would store the files they wanted to share (usually MP3 music files) on their hard drives and directly exchange them with others. The Napster software allowed this file sharing, turning each user’s machine into a mini server.
Here’s what happened when you logged into the old Napster to download a song:
- You launched the Napster software on your computer, transforming it into a small server capable of sharing files with other users.
- Your computer connected to Napster’s central servers, providing them with a list of the files you had available. This allowed the central servers to create a comprehensive directory of all the shared songs across Napster’s user base at that moment.
- You entered a search query for a song. For example, you searched for "Roxanne" by The Police. The central servers would then show all the machines that had that song stored.
- You chose a version of the song from the list.
- Your machine connected to the other user’s computer, and the song was downloaded directly from their device.
The creator of Napster had several reasons for this design choice:
- Napster eventually amassed billions of songs. There was no way for a single central server to accommodate enough disk space to store all the songs, nor would it have had the necessary bandwidth to manage the sheer volume of requests.
- Napster aimed to exploit a loophole in copyright law that permitted friends to share music among themselves. The underlying idea was that, "All these people are simply sharing songs with their friends from their own hard drives." While the courts disagreed with this reasoning, it allowed Napster to develop and grow into a massive service.
This method worked exceptionally well, taking full advantage of the Internet’s structure. By distributing the task of downloading files across millions of machines, Napster achieved what would have been impossible otherwise.
The central database for song titles was Napster’s critical weakness. When the court mandated that Napster cease its operations, the lack of a central database led to the collapse of the entire original Napster network.
After the original Napster shut down, around 100 million people worldwide were still eager to share more and more files. It was only a matter of time before another system emerged to fill the void.
Gnutella's Architecture
Currently, the leading platform for file-sharing is another peer-to-peer network called Gnutella, or simply the Gnutella network. There are two key similarities between Gnutella and the old Napster:
- Users store the files they wish to share on their hard drives, making them accessible to everyone else for downloading in a peer-to-peer manner.
- Users install and run a piece of Gnutella software to connect to the Gnutella network.
There are also two major distinctions between Gnutella and the original Napster:
- There is no central database that tracks all available files on the Gnutella network. Instead, every machine on the network communicates with others to share information about available files through a distributed query system.
- There are multiple client applications available to connect to the Gnutella network.
Due to these features, it would be challenging for a court order to bring down Gnutella. The court would need to figure out a way to block all traffic from the Gnutella network at the ISP and backbone levels of the Internet to prevent file sharing.
Gnutella Clients

Napster initially had a single piece of "client software" -- the program that users ran on their devices to connect to the Napster servers. In contrast, Gnutella offers a wide range of client software options. Some of the widely used Gnutella clients are:
- BearShare
- Gnucleus
- LimeWire
- Morpheus
- WinMX
- XoloX
How a Gnutella client locates a song
Given the absence of a central server that stores the names and locations of all the available files, how does Gnutella software find a song on someone else's machine? Here's a basic rundown of how it works:
- You enter the name of the song or file you want to search for.
- Your device already knows of at least one other Gnutella machine on the network, either because you entered the IP address manually, or the software already has an IP address of a Gnutella host pre-configured. Your device sends the song name you input to the known Gnutella machine(s).
- These machines then check their local hard drives to see if the requested file is available. If they find it, they send back the file name (and the machine's IP address) to the requesting device.
- Simultaneously, these machines forward the same request to other machines they are connected to, and the process continues.
- A request has a TTL (time to live) limit. It may propagate through six or seven levels before it ceases to spread. If each machine on the Gnutella network knows about four other machines, your request could reach up to 8,000 other machines on the network if it spreads through seven levels.
It's a remarkably simple yet clever method for quickly distributing a query across thousands of machines.
This method has a major advantage -- Gnutella operates continuously. As long as you can access even one other machine running Gnutella software, you can send queries throughout the network. No legal order can bring this system down, as there is no single machine in control. However, Gnutella does come with at least three significant drawbacks:
- There’s no certainty that the file you're looking for is on any of the 8,000 machines accessible to you.
- It might take some time for a full response to be returned. The complete set of answers, possibly spanning seven levels, might take over a minute to gather.
- Your machine is an active participant in this network. It not only answers requests but also routes responses and forwards them to others, contributing some of your bandwidth to support the entire system.
Apparently, these limitations are negligible, as users have downloaded hundreds of millions of copies of Gnutella clients.
XoloX Example: Searching

XoloX is a straightforward, relatively simple application designed to connect to the Gnutella network. While it lacks some of the advanced features of more complex clients, it gets the job done. The program is small in size (around 600 kilobytes), free from any "spyware" or bundled pop-up advertising, and is very user-friendly. Its simplicity makes it a great tool to illustrate how a typical Gnutella client operates.
With XoloX, there are three main tasks you can perform: search for files, transfer files to your computer, and view your downloaded files. The top of the XoloX window features three buttons that allow you to switch between these functions.
The image above displays a typical search screen. To begin, simply type the name (or keywords) of the file you're searching for. You can also specify the file type, such as audio or video, or select "All Types." Your XoloX client sends a request with your search query, and within 30 to 60 seconds, a results window will populate with results from thousands of other machines processing your request.
In the search results, you’ll notice a score. This score indicates how many machines are currently online and have the same file available. By selecting a file with a higher score, you increase your chances of obtaining the file you want.
XoloX Example: Downloading

To download a file, just double-click on it in the search window. This action sends the file name to the Transfer window. Once the filename appears in the transfer window, your XoloX client will establish a connection with the peer machine to retrieve the file. One of the great features of XoloX/Gnutella is that if multiple machines have the file, your client can simultaneously connect to several of them, speeding up the download process. In the image below, you can see that Filename1.avi is taking advantage of this feature, downloading at a rate of 69.2 kilobytes per second. XoloX estimates it will take 43 minutes to complete the download of over 100 megabytes.
Sometimes, when you choose a file to download, nothing happens. This could mean that XoloX cannot connect to the machine hosting the file, or that the machine is busy helping other users. To fix this, you can either wait for the machine to become available, select files with higher scores (which indicates a greater chance of finding an available machine), or remove a stalled file from the transfer window and replace it with another one from the search results.
After downloading files, you can find them in a designated XoloX directory and in the Files window within the XoloX interface. If you want, you can share these files with others. To do so, first go to the Preferences dialog and select the directories and file types you want to share.

You also have the option to manage how much outbound bandwidth XoloX uses when others download files from you.

This can help prevent others from using up all your available upstream bandwidth.
Is Gnutella Legal?
Gnutella itself is not illegal. Sharing files that are in the public domain is perfectly legal. However, when users start sharing copyrighted content like music and movies on Gnutella, it crosses into illegal territory. This issue is what led to the downfall of Napster. While the music industry has voiced concerns about Gnutella, there is no clear way to effectively control it at the moment.
One way to disrupt file-sharing on Gnutella is by attacking its architecture. Currently, two main tactics are being used to do this:
- Flooding the Gnutella network with a massive influx of fake search packets.
- Introducing corrupted files into Gnutella servers.
Gnutella's dedicated developers have faced similar challenges before, so it is likely that new software updates will be able to overcome these obstacles and maintain the flow of files.
Currently, there is ongoing debate about the actual financial impact of file-sharing. Is downloading a shared file considered theft, or does it serve as a form of free promotion and exposure, much like how radio airtime functions?
