In Tanenbaum's Computer Networks book
Three concepts are central to the OSI model:
Probably the biggest contribution of the OSI model is that it makes the distinction between these three concepts explicit.
Each layer performs some services for the layer above it. The service definition tells what the layer does, not how entities above it access it or how the layer works. It defines the layer’s semantics.
A layer’s interface tells the processes above it how to access it. It specifies what the parameters are and what results to expect. It, too, says nothing about how the layer works inside.
Finally, the peer protocols used in a layer are the layer’s own business. It can use any protocols it wants to, as long as it gets the job done (i.e., provides the offered services). It can also change them at will without affecting software in higher layers.
These ideas fit very nicely with modern ideas about object-oriented programming. An object, like a layer, has a set of methods (operations) that processes outside the object can invoke. The semantics of these methods define the set of services that the object offers. The methods’ parameters and results form the object’s interface. The code internal to the object is its protocol and is not visible or of any concern outside the object.
Although the protocols associated with the OSI model are not used any more, the model itself is actually quite general and still valid, and the features discussed at each layer are still very important.
I am trying to understand the three concepts (services, interfaces and protocals).
What services and interfaces does (the layer of) the HTTP protocol provide?
- Are the HTTP methods (e.g. GET, POST) services or interfaces?
- Are the formats of HTTP requests and responses not part of services or interfaces?
Go down one layer:
Is socket API interface of the transport layer?
Are TCP and UDP two protocols that implement the transport layer?