Computer science – Networking and communication

Networking and communication

The field of networking and communication includes the analysis, design, implementation, and use of local, wide-area, and mobile networks that link computers together. The Internet itself is a network that makes it feasible for nearly all computers in the world to communicate.

A computer network links computers together via a combination of infrared light signals, radio wave transmissions, telephone lines, television cables, and satellite links. The challenge for computer scientists has been to develop protocols (standardized rules for the format and exchange of messages) that allow processes running on host computers to interpret the signals they receive and to engage in meaningful “conversations” in order to accomplish tasks on behalf of users. Network protocols also include flow control, which keeps a data sender from swamping a receiver with messages that it has no time to process or space to store, and error control, which involves transmission error detection and automatic resending of messages to correct such errors. (For some of the technical details of error detection and correction, see information theory.)

The standardization of protocols is an international effort. Since it would otherwise be impossible for different kinds of machines and operating systems to communicate with one another, the key concern has been that system components (computers) be “open.” This terminology comes from the open systems interconnection (OSI) communication standards, established by the International Organization for Standardization. The OSI reference model specifies network protocol standards in seven layers. Each layer is defined by the functions it relies upon from the layer below it and by the services it provides to the layer above it.

At the bottom of the protocol lies the physical layer, containing rules for the transport of bits across a physical link. The data-link layer handles standard-sized “packets” of data and adds reliability in the form of error detection and flow control bits. The network and transport layers break messages into the standard-size packets and route them to their destinations. The session layer supports interactions between applications on two communicating machines. For example, it provides a mechanism with which to insert checkpoints (saving the current status of a task) into a long file transfer so that, in case of a failure, only the data after the last checkpoint need to be retransmitted. The presentation layer is concerned with functions that encode data, so that heterogeneous systems may engage in meaningful communication. At the highest level are protocols that support specific applications. An example of such an application is the file transfer protocol (FTP), which governs the transfer of files from one host to another.

The development of networks and communication protocols has also spawned distributed systems, in which computers linked in a network share data and processing tasks. A distributed database system, for example, has a database spread among (or replicated at) different network sites. Data are replicated at “mirror sites,” and replication can improve availability and reliability. A distributed DBMS manages a database whose components are distributed across several computers on a network.

A client-server network is a distributed system in which the database resides on one computer (the server) and the users connect to this computer over the network from their own computers (the clients). The server provides data and responds to requests from each client, while each client accesses the data on the server in a way that is independent and ignorant of the presence of other clients accessing the same database. Client-server systems require that individual actions from several clients to the same part of the server’s database be synchronized, so that conflicts are resolved in a reasonable way. For example, airline reservations are implemented using a client-server model. The server contains all the data about upcoming flights, such as current bookings and seat assignments. Each client wants to access this data for the purpose of booking a flight, obtaining a seat assignment, and paying for the flight. During this process, it is likely that two or more client requests want to access the same flight and that there is only one seat left to be assigned. The software must synchronize these two requests so that the remaining seat is assigned in a rational way (usually to the person who made the request first).

Another popular type of distributed system is the peer-to-peer network. Unlike client-server networks, a peer-to-peer network assumes that each computer (user) connected to it can act both as a client and as a server; thus, everyone on the network is a peer. This strategy makes sense for groups that share audio collections on the Internet and for organizing social networks such as LinkedIn and Facebook. Each person connected to such a network both receives information from others and shares his or her own information with others.