Peer-to-peer (P2P) systems are a new paradigm of communication systems in which all computers are treated as equals, or peers, in the network. Individual computers may share hard drives, CD-ROM drives, other storage devices, files, etc. with the other computers on the network. This is different from a client/server set-up in which most of the computers (clients) tend to share resources provided by one main computer (the server). P2P systems have several advantages, as follows and more. The system model

is inherently distributed. There is no need for huge servers and enormous indexing. Single point of failures are eliminated due to the absence of dependencies on any specific server. Sharing of available content does not require a publication step such as creating a Web page or uploading to a server. Anonymizing the communication between the requester and provider is easier. The systems can be implemented with localized security considerations and it is flexible enough to modify them.