2.4 Examples of layer functions
There are several functions that can be performed at one or more of the OSI layers. Some of the more common ones are discussed below.
For connection-oriented services, a connection must be established between peer entities. A connection has three phases: connection set-up, data transfer and connection clear. If the peer protocol supports connections, each protocol data unit type corresponds to a primitive type; for instance, a connection request primitive is transported by a connection request protocol data unit. If the peer protocol does not support connections, the peer layers must perform additional functions to give the characteristics of a connection-oriented service.
The user data is passed transparently between peer layers by calling on the service of the layer below. Network or end-system constraints may make it necessary to control the rate of the flow of protocol data units between peer layers.
Segmentation and re-assembly
If the data received from the higher layer is too large to fit in the maximum size of protocol data unit, the lower layer will have to split it into smaller chunks. This is called segmentation, and additional protocol control information is required to ensure the correct re-assembly of the data in the peer layer of the receiving system.
If the higher layer requires its data to be received in the order sent and the lower layer does not provide a service with this feature, the upper layer must preserve the order by performing some additional processing. This will typically involve including sequence numbers in the protocol control information.
A layer must take additional actions if its lower layer does not provide a sufficiently reliable means of transferring protocol data units. Typically, this involves including identifiers in the protocol control information and the receiving system explicitly acknowledging receipt of the protocol data units. Time-outs are frequently employed to prevent systems waiting indefinitely for acknowledgements to arrive. When a time-out occurs, the system either resends the protocol data unit or indicates that the connection may be faulty.
Transmission errors do occur in networks, causing bits to be received incorrectly. Protocol data units can also be lost, delayed or duplicated. A common technique for detecting bit errors is to include a cyclic redundancy check in the protocol control information. The basic principle of a cyclic redundancy check is that a check word is generated by the sending system and included in the protocol data unit. The receiving system generates a new check word based on the received data and compares this with the received check word; if they differ then errors have occurred. Any detected errors typically result in the protocol data unit being discarded.
It may be necessary for two systems to agree on the occurrence of events. For example, two databases may have to agree that a record has been updated on both systems. Another example is when independent protocol data units may be delayed by different amounts during transfer, and the receiving system must retime the protocol data units to ensure that the same timing relationship exists in the received protocol data units as in the transmitted units.
Addressing and routing
In the context of the OSI reference model, an address identifies a service access point on the boundary of two layers. An address may be unique throughout an entire internetwork or may have only local significance – be unique within a single system, a single network or a section of a network. Some addresses, or parts of addresses, are assigned by a central authority to ensure that naming conventions are followed and the addresses are unique.
Addresses at the network layer are very important because they identify systems in an internetwork. An address may refer to a group of systems as well as a single system and in the extreme case may refer to all the systems in a network.
Some intermediate systems (see Figure 5) will select the next link in the transfer path according to the addresses in protocol data units. The determination of the best link is part of the routing function of systems.
Multiplexing and demultiplexing
An entity may have to establish several connections in order to perform a service, or a connection in a lower layer may need to support several connections in a higher layer for reasons of efficiency. The function of sending protocol data units from several connections over a single connection is called multiplexing. Demultiplexing is the reverse process, in which the data from protocol data units arriving on a lower-layer connection are distributed over several higher-layer connections.
What are the response options of an entity in the sending system if an end system or an intermediate system discards a protocol data unit because it detects an error?
The entity in the sending system may have no way of knowing that the protocol data unit has been discarded, so it may do nothing. However, the entity may be expecting an acknowledgement and, if that does not arrive within a given period, it may decide to retransmit the protocol data unit or declare the connection to be faulty.
Even if the receiving entity does nothing, that may not be the end of the story because an entity in a higher layer may detect that some data is missing and cause one or more of its protocol data units to be retransmitted.