Though it has received a great deal of press recently, peer-to-peer file sharing is not at all a new idea. Peer-to-peer file sharing has been a feature of desktop operating systems since System 7 on the Macintosh and since Windows for Workgroups on the Windows platform. In each of these systems, a computer may participate in a network of peers -- called a "zone" or "workgroup" -- and exchange files with the other computers in the network.

The Macintosh peer-to-peer file sharing protocol is called AppleShare, which is confusingly also the name of the Macintosh file server application (which pre-dates the peer-to-peer version). The Windows protocol is known as SMB to its friends, and by vague names such as "Microsoft Networking" to everyone else. Both can be run on GNU/Linux and other Unix-like systems; AppleShare through netatalk and SMB through samba.


One of the chief problems of a peer-to-peer system is that each peer must somehow discover the other peers in the network. In both Apple's and Microsoft's original systems, discovery took place via broadcast traffic. This has two limitations: it is wasteful of bandwidth, and is not feasible for use on networks larger than a small LAN. Among modern, popular Internet-based peer-to-peer systems, the Gnutella model resembles this method, but substitutes relayed information for broadcast announcements. Still, this does not entirely solve the scalability problem.

Later versions of Microsoft's SMB addressed the broadcast problem in several (somewhat mutually incompatible) ways: master browser capability, WINS, and Windows NT Domains. Each of these abandons the pure peer-to-peer system in favor of a greater or lesser degree of centralization. Napster's semi-peer-to-peer system structurally resembles the NT Domains system, in which a central server provides not only discovery of peers but also authentication of user accounts.

What is new about popular peer-to-peer and semi-P2P systems such as Napster, Gnutella, and Freenet is that they offer searching facilities as well as simple file sharing. On an AppleShare or SMB network, you must know which peer holds the file you want before you can retrieve it. Under the currently popular systems, one form or another of file-searching facility is built into the protocol.