Peer-to-Peer is a book about an emerging idea. That idea is that the traditional model of participating in the Internet, in which a small computer operated by an everyday user (a "client") asks for and receives information from a big computer administered by a corporation or other large entity (a "server"), is beginning to give some ground to a new (new to the fringes of the Internet, anyway) model called peer-to-peer networking. In peer-to-peer networking, all participants in a network are approximately equal. Furthermore, the participants are usually ordinary computers run by everyday people. The ICQ chat service and the Napster music-sharing community are examples of what this book is about.
The chief advantage of peer-to-peer networks is that large numbers of people share the burden of providing computing resources (processor time and disk space), administration effort, creativity, and--in more than a few cases--legal liability. Furthermore, it's relatively easy to be anonymous in such an environment, and it's harder for opponents of your peer-to-peer service to bring it down. The primary disadvantage of peer-to-peer systems, as anyone will attest who's had an MP3 download prematurely terminated when a dialup user went offline will attest, is the tendency of computers at the edge of the network to fade in and out of availability. Accountability for the actions of network participants is a potential problem, too.
This is a book about the idea of equipping ordinary Internet users' computers with mechanisms that enable them to connect, more or less automatically and without human attention, to other everyday Internet users' machines. By forming networks of computers at the so-called "edge" of the Internet, it's possible to offer valuable services without the burden of building and administering large, centralized computer systems of the sort that host traditional Web sites. Napster is the most successful example to date, though nerds will note that it's not a completely peer-to-peer system because users register their file libraries with a central server when they log on to the service.
Don't approach this book expecting to learn how to build the next Napster system. It's not a how-to book. It's not even much of a why-to book. Rather, it's a book that aims to get its readers thinking about what happens when information systems shift away from the client-server model and toward the peer-to-peer model (that's one of the book's points, by the way, that this is not a one-or-the-other architectural decision).
Mostly, Peer-to-Peer makes its point by letting experts in peer-to-peer take turns in the spotlight. Any other approach would be kind of ironic, wouldn't it? In any case, David Anderson explains how SETI@home puts space buffs' idle computing cycles to use in analyzing radio noise from outer space. Gene Kan explains how Gnutella (a truly serverless environment) works. The architects of Publius explain how distributed computing is especially resistant to censorship and denial-of-service attacks. Other contributors discuss peer-to-peer chat software, anonymous remailing services, and other applications of peer-to-peer design.
There's no one from Napster represented as an author in this collection of essays, but Clay Shirky presents an essay called "Listening to Napster." In that essay, Shirky gives an opinion on why Napster has succeeded: It focused on providing something consumers wanted, and bypassed Internet conventions (like the Domain Naming System) because they weren't the best way to provide the service. This is not an earth-shattering revelation, but it's true, and it's something developers of any new service (Internet-based or otherwise) need to keep in mind.
Some of the technical proposals presented here will get readers thinking. An example: Require that senders of e-mail solve a moderately complex math problem before recipients' mailboxes will accept their mail. The problem would be no big deal for a mailer to solve if he or she were sending messages one at a time, but the processor load would really add up for spammers who blast tens of thousands of unwanted emails onto the Internet in a single session. Another idea: mechanizing the concept of reputation so people know whose thoughts and whose creative works (like software) are worth using or believing.
More business-oriented readers might want to read more about the more subtle ways of incorporating peer-to-peer components into business models. Lots of traditional Web services--Amazon.com is an example--are supplementing their client-server activities with others that have peer-to-peer characteristics. Amazon.com, for example, lets operators of small Web sites promote goods and rely on the centralized resources for billing and fulfillment. There's no distributed software (other than a few links), but the company takes advantage of creativity and marketing efforts outside of its official core. Coverage of that sort of "soft" distributed computing might be a good supplement for the second edition of this book.
Peer-to-Peer is a thought-provoking book that will help its readers understand an exciting, still-emerging application architecture for the Internet. --David Wall
Topics covered: Peer-to-peer applications that run at the edges of the Internet, usually on home computers run by ordinary people. Much of this book comprises case studies on SETI@home, Gnutella, Freenet, Jabber, and other peer-to-peer services. Later chapters address technical issues, such as accountability, security, efficient use of limited bandwidth, and data cataloging. [via]