Peer-to-Peer Networking

Home/Documents/Development/Introduction to ANet/Peer-to-Peer Networking
 Project Closed
 Site Index
 User Docs
 Introduction to ANet
 What is ANet?
 Peer-to-Peer Networking
 Distributed Networking
 Static Data
 Anonymous Two-Way Data Transfers
 Gateways and Clusters
 The Future
 High-Level Design
 Low-Level Design
 Protocol Specifications
 Task List
 Development Roadmap
 Other Docs
 Mailing Lists
 Contacting Us


by Benad

What is Peer-to-Peer Networking?

A Peer-to-Peer network is any network that provides an abstraction of the IP addresses of computers that want to exchange data (1). So, the term "Peer-to-Peer" is more about how the different computers communicate with each other within a network than about the network structure(2).

The abstraction of the IP addresses can be made by identifying the users by a number or name that is not related to the IP address [1] of the computer that is used. For example, your name in a chat room (IRC) identifies you, and other users in the chat room can write messages to you through the server without having to know your IP address.

Similarly, your ICQ [2] number remains the same, whatever is your IP address, or even the computer that you are using. The ICQ server is doing all the abstraction needed. Thus other ICQ users can know if you are online knowing only your ICQ number, since it is the ICQ server that will do the translation between the ICQ number and the IP address.

So... What is so great about it?

Having a network using some kind of Peer-to-Peer mechanism does not imply by itself any kind of special mechanism or technology. Also, it doesn't imply any kind of anonymity. At any rate, there's nothing special about it.

The reason why some people invented a term for that is that it is the only kind of network communication at the complete opposite of what we call the "Client/Server" approach.

...And what is Client/Server?

A Client/Server mechanism is when a large number of computers connect through a network to a single server. The difference here is that the primary goal of a Client/Server mechanism is to exchange data between the clients and the server only, not to exchange data between the different clients themselves.

One example of the Client/Server mechanism is HTTP [3], or what we commonly call the "World Wide Web". The data you exchange is always between you and the "Web Server". You cannot communicate with someone else on the internet that is using only a browser (the client).

In this situation, there is no point to hide the IP address of either the client or the server. The servers might hide their IP address behind a Domain Name, for example "", but that domain name should remain the same.

The basic difference

What makes Peer-to-Peer so different of Client/Server approach is about what is the provider of the information. In Peer-to-Peer networks, anyone can equally provide information to the other computers. In Client/Server, the server is mostly the only one providing the information to the clients, and clients can only provide a limited number of information to the server, and thus indirectly to the other clients.

But then, anyone can become a server on the internet and provide information without the need for any kind of Peer-to-Peer mechanism, no? Well, no. It is becoming more and more technically and financially difficult for home users of the internet to make their own computer a server. This is due to many factors.

Static IP addresses will become more rare. This is because we will soon reach the maximum number of different IP addresses that the current Internet Protocol (IPv4 [1]) can allow. As a result, the Internet Service Providers (ISP) reserve to themselves the right to decide the addresses assigned to each computer, and they do so based on the number of computers using their service at a given time. In short, dynamic IP addresses are easier to manage.

Also, ISP will tend to make the possibility of becoming a server using their service as difficult as possible, because they are the same companies that will try to sell you the service of hosting your server on their machines. Some ISP (for example Sprint in the US) started to prohibit users of their service to host any kind of server.

What is and is not Peer-to-Peer

Here are some examples of protocols that are Peer-to-Peer and others that are not.

Peer-to-Peer protocols. Clients are the only information providers, and knowing the IP addresses of the other clients is not needed.

Client/Server protocols that seem to be, or are wrongfully described as Peer-to-Peer. Remember that to be Peer-to-Peer, you need both an abstraction of IP addresses and allow each computers to equally be information providers.


(1) Obviously, anything as "in", "hot" or "bloated" as Peer-to-Peer Networking brings tons of false experts in that new field. And those so-called experts don't really know what is really Peer-to-Peer, so everything that looks like Peer-to-Peer Networking becomes an example of what is Peer-to-Peer Networking. Result? No one agrees on what is the definition of "Peer-to-Peer", so the "official" definitions are extremely vague. An example is Clay Shirky's own definition of "Peer-to-Peer" [12], and it's laughable. He somehow found a way to mix TCP, Peer-to-Peer and Distributed Networking inside the same definition. "The game Doom is peer-to-peer.", "Napster, [...] is not peer-to-peer in the strictest sense", and so on. I don't care if I'm the only one on this planet to have this definition of "Peer-to-Peer", but at least it is simple, intuitive and precise. So this is why I'll be using my definition of "Peer-to-Peer" from now on.

(2) Other "experts" in the field of "Peer-to-Peer" view it as only what I call Distributed Networking. This is why I explicitly say that "Peer-to-Peer" doesn't include at all the network structure.

(3) This is why I don't consider "Doom" to be Peer-to-Peer (see (1) and [12]).


About the references...

[1] University of Southern California , "Internet Protocol", section 3.2: "Addressing". External link. Cached.
[2] ICQ Inc. Web Site. External link.
[3] Network Working Group, "Hypertext Transfer Protocol -- HTTP/1.1". External link. Cached.
[4] Network Working Group, "Internet Relay Chat: Architecture". External link. Cached.
[5] Jacob Palme, "How the Usenet News Protocols Work". External link. Cached.
[6] Jonathan B. Postel, "Simple Mail Transfer Protocol". External link. Cached.
[7] Napster Inc. Web Site. External link.
[8] Semi-Official Gnutella Web Site. External link.
[9] Freenet Web Site. External link.
[10] Network Working Group, "File Transfer Protocol (FTP)". External link. Cached.
[11] Hotline Communications Ltd. Web Site. External link.
[12] Clay Shirky, "What Is P2P ... And What Isn't". External link. Cached.

Last update for this document: October 29, 2001, at 14:19:40 PST