ASN.1 Complete

This chapter
introduces the concept of a "protocol" and its specification,
provides an early introduction to the concepts of
layering,
extensibility,
abstract and transfer syntaxes,
discusses means of protocol specification, and
describes common problems that arise in designing specification mechanisms and notations.
(Readers involved in protocol specification should be familiar with much of the early "concepts" material in this chapter, but may find that it provides a new and perhaps illuminating perspective on some of the things they have been trying to do.)
A computer protocol can be defined as
A well-defined set of messages (bit-patterns or increasingly today octet strings), each of which carries a defined meaning ( semantics), together with the rules governing when a particular message can be sent.
However, a protocol rarely stands alone. Rather, it is commonly part of a "protocol stack", in which several separate specifications work together to determine the complete message emitted by a sender, with some parts of that message destined for action by intermediate (switching) nodes, and some parts intended for the remote end system.
In this "layered" protocol technique
One specification determines the form and meaning of the outer part of the message, with a "hole" in the middle. It provides a "carrier service" (or just "service") to convey any material that is placed in this "hole"
A second specification defines the contents of the "hole" perhaps leaving a further hole for another...