Understanding Network Computing Environments and Protocols
Network Computing Environment
Communication devices connect terminals, printers, and sometimes other computers. These devices often use character-type communication, where information is transferred as individual characters. Common examples include asynchronous serial lines (RS-232 and RS-422), synchronous serial lines (IBM bisynchronous), and parallel lines (used in online printers).
Communication Networks
Communication networks enable computer processes on different computers to communicate with each other.
These networks utilize simple communication devices alongside sophisticated controllers and disks that support complex hierarchies of abstract machines. The hardware/software interface is implemented between the controller and the disk, with the driver completed by a communication medium to share data, similar to a traditional storage device or terminal.
While disk optimization focuses on search times and latency, network communication introduces challenges related to the unreliability of the network sub-communication between machines.
Supporting reliable network operations and performing network-specific activities requires significant processing power.
A key difference between a single-processor system and a network is inter-process communication. Single-processor systems assume implicit shared memory. Distributed shared memory is less straightforward, requiring alternative communication schemes. The primary scheme involves communication protocols, often structured in layers, such as the ISO OSI model. This model facilitates communication between open systems, i.e., systems equipped to communicate using standardized formats, content, and message meanings. Operating rules are formalized in memoranda.
Data Link Layer Protocols
These protocols divide a stream of bytes from the physical layer into groups called frames. A frame includes a header and a tail containing information such as the transmission destination, type, and checksum. The data link layer also supports flow control and error control.
Error Control
Error control ensures that the contents of a frame are delivered without corruption. This is achieved by calculating a checksum of the header and data, and writing it in the frame’s tail. The receiver recalculates the checksum. If the calculated checksum differs significantly from the transmitted checksum, the frame is considered corrupted and rejected, as if it never arrived. This is because the data link layer is inherently unreliable, and some frames may be lost.
Flow Control
Flow control manages the rate at which packets flow between machines. A receiving host must be able to accept frames when they are transmitted. Reasons why a host might be unable to accept frames include:
- The frame was sent to a nonexistent host.
- The receiving machine’s network device driver is interrupted (e.g., if interrupts are disabled), causing it to miss incoming frames.
- The network devices are ultimately controlled by a process on the host, requiring the driver to maintain its own buffer space. If the buffer is full, the receiving machine cannot accept a frame without overwriting existing data.
Therefore, the receiver needs to control the rate at which frames are transmitted. The simplest protocol for this is the enviar_y_esperar (send and wait) protocol, a synchronous operation involving sending a frame and waiting for a special ACK packet (without a data field). A timeout mechanism is used to prevent the transmitter from waiting indefinitely if the packet is lost, assuming transmission failure.