The communication between the nodes in a packet network must be precisely defined to ensure correct interpretation of the packets by the receiving intermediate and the end systems. The packets exchanged between nodes are defined by a protocol - or communications language.
There are many functions that may be need to be performed by a protocol. These range from the specification of connectors, addresses of the communications nodes, identification of interfaces, options, flow control, reliability, error reporting, synchronisation, etc. In practice, there are so many different functions, that a set (also known as stack) of protocols are usually defined. Each protocol in the stack handles one specific aspect of the communication.
Overview of layering of protocol functions
(You may click on a layer in this diagram to find out more about the operation of the layer)
The basic idea of a layered protocol architecture is to divide the design into small pieces. Each layer adds to the services provided by the lower layers in such a manner that the highest layer is provided a full set of services to manage communications and run distributed applications. A basic principle is to ensure independence of layers by defining services provided by each layer to the next higher layer without defining how the services are to be performed. This permits changes in a layer without affecting other layers.
The protocol stacks were once defined using proprietary documentation - each manufacturer wrote a comprehensive document describing the protocol. This approach was appropriate when the cost of computers was very high and communications software was "cheap" in comparison. Once computers became readily available at economic prices, users saw the need to interconnect the computers from different manufacturers using computer networks. It was costly to connect computers with different proprietary protocols, since for each pair of protocols a separate "gateway" product had to be developed. This process was made more complicated in some cases, since variants of the protocol existed and not all variants were defined by published documents.
Prior to the use of layered protocol architectures, simple changes such as adding one terminal type to the list of those supported by an architecture often required changes to essentially all communications software at a site.
The Open Systems Interconnection (OSI) architecture has been developed by the International Organisation for Standardisation (ISO) to describe the operation and design of layered protocol architectures. This forms a valuable reference model and defines much of the language used in data communications.