The limitations of client/server systems become evident in an Internet-scale distributed environment. P2P systems offer an alternative to traditional client/server systems: Every node acts both as a client and a server and "pays" its participation by providing access to its computing resources. Systems such as Napster and Gnutella have proven their practical applicability. In this tutorial we position the P2P paradigm in the design space of distributed information systems, present underlying models and concepts, and show the structure, protocols, and algorithms of current systems. Then we elaborate on the novel requirements for P2P algorithms (resource discovery, complexity, and scalability) and present future research areas.
展开▼