e to any given layer will affect only the layer lowest layer in the stack. above it. Layering breaks a single monolithic program Levels of abstraction into parts that are isolated from one another, making the program easier to write and to change. Layering does, The layers of data communications services can be however, extract a performance penalty. There is some viewed in a general way. Programs at the lowest layer overhead associated with moving data through multiple provide services related to the simplest, most "concrete" layers. form of data: streams of bits. Programs at the highest layer provide services related to the most complex or "abstract" forms of data: data that are ready to be Protocol layers displayed to humans, application program data struc- tures, or, in the case of programs using more advanced Layering applies to protocols as well as to services. In object-oriented programming techniques, objects. Pro- a system that has a layered architecture, a process com- grams at the intermediate layers transform the data from municates only with its peer processes on the same layer; the simple to the complex forms, and vice versa. This otherwise, as with services, a change to one layer would transformation is sometimes referred to as "abstraction," affect many other layers. Peers communicate with and you might hear the phrase "levels of abstraction," a common protocol, appropriate to the services they referring to movement from the concrete to the abstract, provide. Each level may require a protocol that is that is, from the lowest level to the highest. Monolithic communications programs Monolithic program Monolithic program Figure 3.1-5 Early data communications programs. Data and voice traffic CHAPTER 3.1 Layer 2 Layer 2 protocol Layer 2 Service Sevice Layer 1 Layer 1 protocol Layer 1 Figure 3.1-6 Protocol layering. The diagram illustrates the concept of layering. In this example Layer 1 provides a "service" to the layer above, Layer 2. An example of a service would be transmission of bits across a phy