Though electronic mail has evolved as a critical use of computer networks, there are other reasons to install and use a network. Often the first planned use of a network, and frequently the reason for the decision to network, is resource sharing. Computers joined in a network offer the combined resources of all the stations to the user of each. The increased use of personal computers and workstations emphasizes the importance of this facility. The advantages offered by networked small computers over a single, large, time-shared system can be summarized as follows:
Not every characteristic of a networked system is an advantage, however. Distribution of disk space illustrates the point. In a single large system, all the disk space is available and can be divided among the users as needed. In a collection of workstations, the storage is distributed with the processing power. The decision as to how much disk space each user will need is essentially static and made when the machine is purchased. If one user encounters a need for a very large block of storage, which is not available on the local machine, the fact that more than that amount of space is available on another machine may not help.
Thus, there are reasons to compromise on the complete separation and independence of the users. A solution used in many networks is to make disk storage a common shared resource like the printers and other devices. This requires a facility to allocate space on the shared file system and to protect the files of one user from unauthorized access by another. This is accomplished by having a computer act as a file server: a computer with a large volume of disk space and the software needed to control its use. Other computers in the network use the storage space on the file server as if it were locally attached. A network may have one or several file servers. Individual workstations may have private disk storage as well, or may be diskless, relying entirely on the network to provide the storage required. Clearly such a configuration impacts the operating system on the user's machine. The operating system must communicate with the servers to gain access to storage in response to the file access commands from its user. Dependence on file servers also increases the amount of traffic on a network, affecting access to other shared resources, such as printers. A network whose stations use a file server will support fewer stations than a network whose stations depend primarily on local file systems.
In a description of the NSFnet, the National Science Foundation network for research and education, communications networks are equated with the industrial revolution in significance, and Stephen Wolff of NSF is quoted as saying
I see it as a revolution in the way people work with one another. This kind of collaboration has never been possible before. The kinds of interactions that you can have in the network environment are at once more rapid than mail and less demanding than the telephone, but equally absorbing. Without the network, a scientist told me, `life as we know it would cease to exist'IBMNSF90
While a great many people still find life without networks worth living, the impact of network technology is undoubtedly substantial. Networks, interconnected with each other to form larger networks, span the globe. See Simons87 for an unusual and early description of networks as part of the emergence of a ``global electronic intelligence'' evolving as a fractured system, with contradictions, dislocations, confusion, and ``other types of mental disorder''. The author sees an emerging eco-computer, composed of sensors and processing elements and linked by communications networks, eventually having an existence of its own -- independent of its creators. Networks in general use form a major part of the computing environment today. They are the backbone of the information highway, support ATMs, connect branch and main offices, allow international corporations to communicate efficiently, support fund transfers and news services, make reservation systems possible, and generally extend the potential of computing power for practical use. The emergence of networked computers as the computing platform for many applications impacts every aspect of the study and use of computing. Architecture and operating systems, programming languages and tools, algorithm development and analysis all reflect the fundamental change in the nature of the system in use. The implications affect every type of application development, whether artificial intelligence, computer--human interface, databases, file systems, symbolic computation, visualization and every other area where the presence of economical incremental increases in processing power affects the potential accomplishments.
For computing professionals, who not only use the computer but also develop applications, the significance of networks is perhaps more immediate. The application development effort must often include not only writing programs that work correctly and efficiently on a particular type of computer -- and perhaps port easily to other systems as well -- but also may have to cooperate with other programs running on different systems. Simple file access may require interaction with a file server. Printing may include specifying which of many printers to use. Performance of a program using network resources can vary substantially, depending on the load on the network. Some of the resources that the program requires may be inaccessible because some part of the network has failed. One program may be competing for the same resources as programs running on other computers.
Far removed from the details of data communications, other programs execute in a network environment, but are further charged with hiding the network environment from their users. The quality of transparency characterizes the difference in the terms network applications and distributed systems applications . In distributed systems, programs implicitly deal with the complexity that arises in systems where part of the computing environment might fail and other parts continue to work; where conflicts may arise because of concurrent access to shared resources; where cooperation among many systems may be necessary to carry out an operation. Distributed systems applications also hide from the user such details as where a file is actually stored, and which processors execute the program. The user of such an application may or may not be aware that more than one computer system participates in running the program.
The subject of this book is computer networks. Network applications are built on data communications systems, and are used to build distributed systems. Our emphasis will be on explicit use of the network, largely independent of data communications details. Topics will overlap data communications and distributed systems topics, but will have a distinctly different flavor. Figure netdisttable lists some advantages and disadvantages of stand-alone, networked, and distributed systems. Our goal is to provide the understanding of the network environment, the new computing platform, needed for general application development.