ISO/OSI and TCP/IP Protocol Stacks Principles
Currently, design of network architectures is based on the layering principle, which provides an attractive tool for designing interoperable systems for fast deployment and efficient implementation.
ISO/OSI model (Jain, 1993) was developed to support standardization of network architectures using the layered model. The main concepts motivating layering are the following:
Each layer performs a subset of the required communication functions
Each layer relies on the next lower layer to perform more primitive functions
Each layer provides services to the next higher layer
Changes in one layer should not require changes in other layers
Such concepts were used to define a reference protocol stack of seven layers, going from the physical layer (concerned with transmission of an unstructured stream of bits over a communication channel) up to the application layer (providing access to the OSI environment).
Services between adjacent layers expressed in terms of primitives and parameters:
Primitives, which specify function to be performed (4 primitives are defined: REQUEST, INDICATION, RESPONSE, CONFIRMATION)
Parameters, to pass data and control information
A protocol at a given layer is implemented by a (software, firmware, or hardware) entity, which communicates with other entities (on other networked systems) implementing the same protocol by Protocol Data Units (PDUs). A PDU is built by payload (data addressed or generated by an entity at a higher adjacent layer) and header (which contains protocol information). PDU format as well as service definition is specified by the protocol at a given level of the stack.
The same concepts are at the basis of the de-facto standard protocol stack on the Internet, namely the TCP/IP protocol stack (Murhammer & Murphy, 1998).
The main advantage deriving from the layering paradigm is the modularity in protocol design, which enables interoperability and improved design of communication protocols. Moreover, a protocol within a given layer is described in terms of functionalities it offers, while implementation details and internal parameters are hidden to the remainder layers (the so-called “information-hiding” property).