Network Software
The first computer networks were developed using computer hardware as the main problem and reconsideration of the software. This strategy no longer works. The network software is now very structured.
1.1 Protocol Hierarchies
In-Network Software, To reduce the complexity of the network design, most networks are organized into a set of layers or levels, each built on one of the following. The number of layers, the name of each layer, the content of each layer and the functions of each layer differ according to the networks. The objective of each level is to offer certain services at higher levels, protecting them from the details of the actual implementation of the services offered. In a sense, each level is a type of virtual machine offering certain services at a higher level. When the ‘n’ level of a computer maintains a dialogue with the ‘n’ level of another computer, the rules and conventions used in this dialog are collectively referred to as the ‘n’ level protocol. In essence, a protocol is an agreement between binding parties on how communication should take place.
The figure below shows a network of five levels. Objects containing matching layers in different machines are called peers. Peers can be software processes, hardware devices or even human beings. In other words, they are partners who communicate using a protocol.
The abstraction of the process between the peers is crucial for the design of the network. With it, the difficult task of designing the entire network can be divided into several smaller and more manageable design tasks, namely designing individual levels. Although “network software”, it should be noted that lower levels of the hierarchy of protocols are often implemented in the hardware or software. However, complex protocol algorithms are involved, even if they are integrated (totally or partially) into the hardware.
1.2 Design Issues for the Layers
In-Network Software, Some of the major design problems that arise in computer networks will appear layer by layer. Reliability is the problem of designing a proper network operation, even if it consists of a set of unreliable components. Think of bits in a packet traveling on a network. Some of these bits may be damaged (inverted) due to random electrical noise, random wireless signals, hardware failures, software errors, and so on. The mechanism for finding errors in the received information uses codes to detect errors. Information received incorrectly can be retransmitted until it is correctly received. The most powerful codes allow you to correct errors when the correct message is retrieved from the wrong bits originally received. Both mechanisms work by adding redundant information. They are used in the lower layers to protect packets sent on individual channels and in the upper layers to verify the reception of the correct content.
1.3 Connection-Oriented Vs. Connectionless Service
Layers can offer two different types of service to the layers both of them: connection-oriented and connectionless.
The Connection-oriented service is modeled from the telephone system. To talk to someone, pick up the phone, dial the number, talk, and hang up. Similarly, to use a connectionless network service, a service user first establishes a connection, uses it, and then releases it. The essential aspect of the connection is that it acts as a tube: the sender pushes objects (bits) to one end and the recipient removes them at the other end. In most cases, the order is kept. The bits arrive in the order in which they were sent.
Unlike the connection-oriented service, the connectionless service is modeled after the postal system. Each message (letter) carries the full destination address, and each of them is sent via intermediate nodes in the system, regardless of any subsequent messages. There are different names for messages in different contexts; A packet is a message at the network level. When the intermediate nodes receive a complete message before sending it to the next node, this is called a storage and transfer switch. An alternative in which the direct transmission of a message in a node begins before the node receives it completely is called cut-through switching (downstream switching). Usually, when two messages are sent to the same destination, the first one is sent first. However, the first shipment may be delayed, so the second one arrives first.
Service |
Example |
|
Connection-oriented | Reliable message stream | Sequence of pages |
Reliable byte stream | Movie download | |
Unreliable connection | Voice over IP | |
Connectionless | Unreliable datagram | Electronic junk mail |
Acknowledged datagram | Text messaging | |
Request-reply | Database query |
1.4 Service Primitives
A service is formally defined by a set of primitives (operations) available for the user processes to access the service. These primitives tell the service to take any action or report an action performed by a peer entity. If the protocol stack is in the operating system, as is usually the case, the primitives are usually called in the system. These calls trigger kernel-mode interception, which then transfers control from the machine to the operating system to send the necessary packets.
The set of primitives available depends on the nature of the service provided. The primitives of the connection-oriented service are different from the primitives of the connectionless service. As a minimal example of service primitives that can provide a reliable byte stream, consider the primitives listed in the table below. They will be familiar to fans of the Berkeley socket interface because primitives are a simplified version of this interface.
Primitive |
Meaning |
LISTEN |
Blocking waiting for an incoming connection |
CONNECT |
Establish a connection with a waiting peer |
ACCEPT |
Accept an incoming connection from a peer |
RECEIVE |
Block waiting for an incoming message |
SEND |
Send a message to the peer |
DISCONNECT |
Terminate a connection |
These primitives can be used for a request-response interaction in a client-server environment.
1.5 The Relationship of Services to Protocols
In-Network Software, Services, and protocols are different concepts. A service is a set of primitives (operations) that a layer provides a layer on it. The service defines the operations that the level is ready to perform on behalf of its users, but does not say anything about how these operations are implemented. A service is connected to an interface between two levels, the lower level being the service provider and the higher level being the user of the service. A protocol, on the other hand, is a set of rules that define the format and value of packets or messages exchanged by peer-to-peer objects at a given level or a layer. Objects use protocols to implement their service definitions. They have the freedom to modify their protocols at their discretion unless they change the service visible to their users. Thus, the service and protocol are completely separate.