peer-to-peer systems
...ll serves its purpose as it allows the nodes in a network to communicate correctly. To solve the problem of delays or lack of speed of peer-to-peer systems when under heavy use, Capron [1] suggests a hybrid system. “Many networks are hybrids, containing elements of both client/server and peer-to-peer arrangements” [1]. A true peer-to-peer application, also called pure peer-to-peer implement only peering protocols that do not recognize the concepts of server and client. Pure peer-to-peer systems are rare. They usually rely on non-peer elements, such as domain name systems or DNS. There are three major types of P2P. The first is pure peer-to-peer wherein peers act as both clients and server, and the control is purely decentralized. The next type, hybrid P2P “has a central server that keeps information on peers and responds to requests for that information”, and finally, mixed peer-to-peer has both pure and hybrid characteristics [4]. In the real world, applications use several protocols and act as client, server and peer simultaneously, a hybrid system. Many P2P systems even use stronger peers, also called super-peers or super-nodes as servers, while client-peers are connected in a star-like fashion to a single super-peer [2]. This is why it is difficult to supply a purely peer-to-peer example. The applications to be discussed below are considered to have a peer-to-peer system implementation, but not in a strict sense. An example of distributed computing is SETI@home. It enables potentially millions of users to contribute CPU cycles to achieve a common goal. SETI stands for Search for Extra-Terrestrial Intelligence. The software’s goal is to seek other forms of life outside the planet earth. It does this by trying to detect direct radio evidence of other technological civilizations in the universe through the use of giant radio telescopes, and just recently, a network of computers connected to the Internet from all over the world [5]. Many computers are left idle while connected to the Internet. SETI@home proponents realized that they can be used to process data while they are not being used. A user simply downloads a program similar to a screen saver that downloads data from SETI@home, analyzes the data and returns it. If at any time the user needs the computer, the screen saver halts its processes so that the computer may return to its regular tasks. The way SETI@home works is that data from the Arecibo radio telescope in Puerto Rico is received. The project has three major components. SERENDIP is software which has continuous access to the Arecibo radio telescope. SETI works closely with SERENDIP for data collection. What SERENDIP does, is it divides signals from the telescope and converts it into a formatted file. The second component deals with data analysis, wherein different combinations of frequency and bandwidth are searched for strong signals. Finally, there is the component of distributed computation. The radio telescope data are sent to clients using server-based software. Security features have been incorporated into this software, and it also collects the results of computations [6]. Content-sharing applications include not only software from which users may access files, but distributed storage as well [3]. Napster, created by Shawn Fanning, was a popular file sharing application where users could access music, until it was brought down several years ago due to copyright violations. Napster is not pure P2P, but a type of hybrid P2P. It has several centralized directories which describe how files reside in Napster. Each peer or host registers with this directory when they log in or join the Napster network. These centralized directories have IP addresses, the directory of the files that the hosts have to share and data about each peer computer that is connected to it [4]. machine sends a request to the server. The server searches for the indicated file and returns a list of matches, including the information about the peer(s) from whom the files can be accessed. The user chooses which file they want to download and establishes a direct connection with the computer which has the selected file. The computer does this by sending its own IP address and filename of the file they want. If a connection is made, the computer where the file to be downloaded resides becomes the server, while the computer downloading the file becomes the client. Using the client/client protocol, “Napster allows file transfer that is independent of the server. It occurs between two client computers”. The server or host computer breaks the connection with the client when download is complete [4]. Given this scenario, a computer may be a client or a server or both at any time. Finally, there are also applications used mainly for collaboration. They allow communication from the user perspective [3]. Before, the Internet was deemed to be slow, filled with firewalls that strongly partition the Net into pieces and electronic mail being scaled vastly beyond its original design [7]. What is currently developing is peer-to-peer connections on the Internet which connects millions of users to each other. They “form groups and collaborate to become user-created search engines, virtual computers and file systems” [7]. The original Internet was actually designed to be a peer-to-peer system, with computers acting as media for communication and share resources as equals. This was in the late sixties in the United States [1]. “The challenge for this effort was to integrate different kinds of existing networks as well as future technologies with one common network architecture that would allow every host to be an equal player” [7]. The Internet enables a variety of complex systems that use peer-to-peer communication patterns in an interesting way. Over time though, it has become a client-server system, wherein users or consumer clients communicate with a privileged set of servers. Firewalls have been established due to security reasons. Nowadays, peer-to-peer applications are becoming common again, as if the Internet is reverting back to its original form. Hedlund and Minar present two examples of complex applications, Usenet and DNS. Usenet is the ancestor of more modern peer-to-peer applications such as Gnutella and Freenet. It is completely decentralized and what it does is it copies files between computers, resulting in a file-sharing application. Many peer-to-peer applications look at Usenet as a basis for their implementation. It was based however, on a facility called the Unix-to-Unix-copy protocol or UUCP. What UUCP does is it enables two machines to dial one another in order to exchange files. After they finish exchanging files, they disconnect automatically. Usenet’s basic model “provides a great deal of local control and relatively simple administration. A Usenet site joins the rest of the world by setting up a news exchange connection with at least one other news server on the Usenet network” [7]. Nowadays, exchange is usually provided by an internet service provider or ISP. For example, Yahoo! contacts news servers to exchange news at a regular schedule and uses the data for their Yahoo! News feature. A user would simply have to access this news through Yahoo! That is the difference between Usenet, the peer-to-peer system and a client-server system like Yahoo! The problem with Usenet may be the inability to filter the type of news a user might receive. Yahoo! for example, would have an automatic filtering feature to censor for example, articles with offensive or adult content. “The open, decentralized nature of Usenet can be harmful as well as beneficial” [7]. It has been an enormous success considering that it has survived since 1979, and like the Internet, it has become more than what it was meant to be. The second example of a complex peer-to-peer application is the Domain Name System or DNS. It is an example of “a system that blends peer-to-peer networking with a hierarchical model of information owner...