Hello and happy Thursday! I’m back with a long overdue post in my Tech Talk series…
Over the past few months, I’ve spent a lot of time improving my background knowledge in computing, and I’ve slowly gained a better understanding on how networking works, along with a whole notebook filled with definitions I didn’t know before. One such term that I came across a few times while I was studying was the word ‘layering’, so for this post I’ll be talking a little about what it means.
What is layering?
Layering is the organisation of separate functional components in programming, where the components interact in an hierarchical way.
Let’s elaborate on that…
The idea behind layering is to isolate distinct functions from each other, and thus making the architecture more modular (separated and working as a separate thing in itself). With each layer being separated like this, you’re better able to prevent changes in one layer from affecting the other layers.
It means that you can swap out layers and substitute them for something that does the same job, takes the same information and outputs the same data as its predecessor.
For example, when you’re reading a book series, each book works as its own component: you could technically read a random book halfway in a series, and it would still be a stand alone book with its own functional story. But when you read the series, you read them in a sequential order, from book one to book two, and so on. Each book is a layer, and as long as the main functions of each book remains the same so the series can keep working, the author can replace a book by rewriting it as many times as they want.
Layers in networking are like the departments in a business
In a business, you have your CEO who makes the big business decisions; you have the people in the marketing department who manage the product by dealing with product pricing, branding, and advertisement; the people in the finance department who deal with payroll, financial record-keeping, and preparing financial statements; those in human resources who deal with employee recruitment, health and safety matters, training and development; and many other departments, all of whom have their own separate jobs and responsibilities within those distinct departments.
Linking this business analogy back to our layering definition, we could say that each department is a layer: you’ll find that each department does things differently in different companies, but they all tend to have the same function.
If you were a small company who started out by outsourcing their marketing, then on growth decided you needed a dedicated marketing department of your own, you would be replacing your marketing layer: it might do things differently to how the agency did it, but they would have the same function. In most companies, the finance department tends to deal with payroll, but in other companies you’ll find that they might outsource payroll to an external company that deals with this specifically.
What’s the purpose of layering in networking?
Layering makes design, development and debugging easier than if it was all one big, spaghetti mass of hardware and code: we all know that the bigger a problem is, the harder and more complicated it is to solve, so layering effectively splits this problem into easier to solve sub-problems.
In computer networking, the reference model is the Open System Interconnection, often shortened to OSI. Briefly put, the OSI is a layered set of protocols in which two multilayered programs, one at either end of a communications exchange, use an identical set of layers. In the OSI model, each program contains seven layers, with each layer reflecting a different function that has to be performed in order for program-to-program communication to take place between computers.
There are many other layering models in all areas of computing, and I’d love to do a more elaborate post on them in future.
Hopefully this was a clear, however brief, post on what layering is and why it’s useful. If there’s anything I’ve written that is incorrect, or doesn’t make sense, comment below and I’ll try my best to answer as best I can! Have a great weekend!