Clients, servers, peers
Peer-to-peer systems (P2P) are the result of the merger of two distinct computing traditions: the scientific and the corporate. Understanding the two paths that merged to form P2P illuminates the place of P2P in the larger world of computing. Thus peer-to-peer computing when placed in a historical context is both innovative and consistent with historical patterns. This larger framework assists in clarifying the characteristics of P2P systems and identifying the issues that all such systems must address by design. Recall that the core innovation of P2P is that the systems enable Wintel (Windows/Intel) desktop computers to function as full participants on the Internet, and the fundamental design requirement is coordination.
Massively Parallel Computing
In addition to sharing storage P2P systems can also share processing power. Examples of systems that share processing power are Kazaa and SETI@home. There are mechanisms other than P2P systems to share processing power. Such systems run only on UNIX variants, depend on domain names, are client-server, or are designed for use only within a single administrative domain. Met computing and clustering are two approaches to sharing processing power. Despite the difference in platform, organization, and security, the naming and organization questions are similar in clusters and peer systems.
As the sheer amount of digitized information increases, the need for distributed storage and search increases as well. Some P2P systems enable sharing of material on distributed machines. These systems include Kazak, Publics, Free Haven, and Gnutella.
The Web enables publication and sharing of disk space. The design goal of the Web was to enable sharing of documents across platforms and machines within the high-energy physics community. When accessing a Web page a user requests material on the server. The Web enables sharing, but does not implement searching and depends on DNS for naming. As originally designed the Web was a P2P technology.
LimeWire and Morpheus
LimeWire and Morpheus are implementations of the Gnutella protocol. Currently, LimeWire is the most popular as a Macintosh servlet while Morpheus dominates the Wintel world. Morpheus is also available for the Macintosh platform. LimeWire is written in Java and is available for all platforms.
Distributed.net is a volunteer cooperative association of individuals interested in supporting distributed computing for scientific and social gain. Distributed.net is a not-for-profit that addresses computational challenges for the public good.
There are significant research issues with respect to digital networked information, including problems of naming, searching, organizing, and trusting information. Because peer-to-peer systems required downloading and installing code as well as providing others with access to the user’s machine, the problem of trust is particularly acute. The vast majority of users of peer-to-peer systems are individuals who lack the expertise to examine code even when the source code can be downloaded and read.