A protocol stack is a complete set of network protocol layers that work together to provide networking capabilities. It is called a stack because it is typically designed as a hierarchy of layers, each supporting the one above it and using those below it.
A protocol is a mutually agreed-upon format for doing something. With regard to computers, it most commonly refers a set of rules (i.e., a standard) that enables computers to connect and transmit data to one another; this is also called a communications protocol. A protocol can be implemented by hardware, software, or a combination of the two.
Individual protocols are typically designed with a single purpose in mind. This modularization, which is consistent with the Unix philosophy, facilitates both design and evaluation. The use of a layered approach facilitates allowing different protocols to be substituted for each other, for example, to accommodate new protocols and different network architectures.
The number of layers varies according to the particular protocol stack. For example, TCP/IP (transmission control protocol/Internet protocol), which defines communication over the Internet and most other computer networks, has five layers (application, transport, network, data link and physical). The also widely used OSI (open systems interconnect) reference model, defines seven layers (application, presentation, session, transport, network, data link and physical).
Regardless of the number of layers, the lowest protocols always deal with low-level, physical interaction of the hardware. Each higher layer adds additional features, and user applications typically interact only with the uppermost layers. The layers can be broadly classified into media, transport and application
The terms protocol stack and protocol suite are often used interchangeably. However, the two are sometimes used with subtle differences, such as the former being a complete set of protocols and the latter being a subset of them, often supplied by a particular vendor, or the latter being the definition of the protocols and the former being the software implementation of them.
Created October 30, 2005.