There are 2 types of networks to consider:
In its simplest form, a peer-to-peer network is when two or more computers are connected and share resources. A peer-to-peer network can be an ad hoc connection—a couple of computers connected via a cable to transfer files, or a permanent infrastructure that links more computers in a small network over wireless or copper wires. A peer-to-peer network can be a network on a much grander scale in which special protocols and applications set up direct relationships among users over the Internet.
In essence, every connected PC is both a server and a client at the same time. There's no special network operating system residing on a robust machine that supports special server-side applications like directory services (specialized databases that control who has access to what). In a peer-to-peer environment, access rights are governed by setting sharing permissions on individual machines. For example, if User A's PC is connected to a printer that User B wants to access, User A must set his machine to allow (share) access to the printer. Similarly, if User B wants to have access to a folder or file, or even a complete hard drive, on User A's PC, User A must enable file sharing on his PC. Access to folders and printers on an office P2P network can be further controlled by assigning passwords to those resources.
Network clients request information or a service from a server, and that server responds to the client by acting on that request and returning results. This approach to networking has proven to be a cost-effective way to share data between tens or hundreds of clients. Usually the client and server are two separate devices, each customized for their designed purpose on a LAN, but client/server systems work equally well on long-distance WANs (including the Internet). In general, client/server maintains a distinction between processes and network devices. For example, a Web server will often contain large amounts of memory and disk space, whereas Web clients often include features to support the graphic user interface of the browser such as high-end video cards and large-screen displays.
Client/server was originally developed to allow more users to share access to database applications. Compared to the mainframe approach, client/server offers improved scalability because connections can be made as needed rather than being hard-wired. The client/server model also supports modular applications. In the so-called "two-tier" and "three-tier" types of client/server systems, a software application is separated into modular pieces, and each piece is installed on hardware specialized for that subsystem.
One area of special concern in client/server networking is system management. With applications distributed across the network, it can be challenging to keep configuration information up-to-date and consistent among all of the devices. Likewise, upgrades to a newer version of a client/server application can be difficult to synchronize or stage appropriately. Finally, client/server systems rely heavily on the network's reliability; redundancy or fail-over features can be expensive to implement.
