Home / Networking / Beginners

Layering Models

Building a network is a very complicated problem. There are many things to be addressed:

  • What hardware do we use? This includes things like cables and optical fibres right down to the design of plugs and sockets.
  • How do we encode data bits on the hardware? What voltages, what speed? Do we want to use binary values or something more complicated?
  • What standard of service do we wish to provide? Reliable, connectionless, stream oriented, packet switched? Is flow control included (to prevent a fast machine overwhelming a slow one)?
  • What interface to the computer do we want? How do programmers actually use the network?
  • What protocols should we use to connect applications? For example, how information is passed along the WWW?

The thing to note is that we have to have standards all the way from the lowest part of the hardware right up to the highest level of the software if every pair of machines in the world is to be able to communicate. If any part of the system fails to be standard, it is possible that communication will fail. This is clear when we try to plug a copper cable into an optical socket, but is also true if we use a Web server that does not produce standard HTML.

One way to approach this is to have one huge standard that fixes everything at every level. But this is not very flexible. Maybe we want to upgrade the hardware: do we have to rewrite our browser to accommodate the new standard?