Two competing systems were at work when the Internet was being created. Both were looking to define a structured, and modular design for networking. In one corner, we had a collection of governments and the ISO looking to create a standard that could be accepted by all members. In the other corner, we had groups of technical people that made a protocol, tested it, found errors, fixed them, and re-tested the protocol until it worked.
The ISO, can be thought of in this case as working on paper entirely from Theory, while the TCP/IP crowd sat down, got their hands dirty in the code, and learned from experience which parts worked and which parts did not.
There are plusses and minuses to both of these systems. For example, taking a long look at a problem, and carefully plotting out a plan of attack can offer long term future benefits. If some new addition to a protocol is desired in the future, it may be difficult to "patch" the protocol. Without forethought to the inclusion of future needs addressed at planning, patches resemble "hacks" more than they resemble an optimization with structured coding. If the protocol stack is in wide use, people are reluctant to upgrade their system and be incompatible with everyone else. Ensuring that you and others examine possible uses helps decrease the chances of need to modify the protocol stack later in the future.
Sometimes, a simple problem may have a simple solution. In cases like this, the time spent planning a system of attack is lost when the solution is entirely simple requiring little or not thought. Maybe problems you encounter in the "real world" do not show up while you work from the paper and theoretical world. Without experience in the problem with hands-on work, problems not expected could force a re-thinking of the concept on paper. This may cause the development to take longer.
A rather humorous and opinionated way to look at a comparison between the TCP/IP camp and the ISO people can be seen in this included quote from a fortune offered on one of my Linux boxes:
On the other hand, the TCP camp also has a phrase for OSI people. There are lots of phrases. My favorite is `nitwit' -- and the rationale is the Internet philosophy has always been you have extremely bright, non-partisan researchers look at a topic, do world-class research, do several competing implementations, have a bake-off, determine what works best, write it down and make that the standard.
The OSI view is entirely opposite. You take written contributions from a much larger community, you put the contributions in a room of committee people with, quite honestly, vast political differences and all with their own political axes to grind, and four years later you get something out, usually without it ever having been implemented once.
So the Internet perspective is implement it, make it work well, then write it down, whereas the OSI perspective is to agree on it, write it down, circulate it a lot and now we'll see if anyone can implement it after it's an international standard and every vendor in the world is committed to it. One of those processes is backwards, and I don't think it takes a Lucasian professor of physics at Oxford to figure out which.
-- Marshall Rose, "The Pied Piper of OSI"
When you read the above section, you can get an idea on how differences between the two methods for creating networking protocols lead to vocal supporters on both sides. I am not looking to resolve this issue in this paper. Instead, I try to show how there are differences in how these two groups tried to solve their problems. This is meant to help you to understand why layers from the TCP/IP suite of protocols through to the Application Layer are not easily assigned to layers in the ISO OSI 7-layer Model.
Below, you can see a copy of the ISO OSI 7-layer Network Model discussed in the previous page in more detail:
ISO OSI 7 Layer Reference Model: End-to-end vs. Chained Communications |
7 | Application- | EndtoEnd | Application- | ||||||||
6 | Presentation | EndtoEnd | Presentation | ||||||||
5 | --Session--- | EndtoEnd | --Session--- | ||||||||
4 | -Transport-- | EndtoEnd | -Transport-- | ||||||||
3 | --Network--- | --Network-- | --Network-- | --Network--- | |||||||
2 | -Data Link-- | DL | DL | DL | DL | -Data Link-- | |||||
1 | --Physical-- | < = > | PH | PH | < == > | PH | PH | < = > | --Physical-- | ||
L | Stack Num 1 | Link | Stack Num 2 | Link | Stack Num 3 | Link | Stack Num 4 |
From this and the sections on TCP/IP packets later in this document, you will see that TCP, and UDP appear to work for the most part at the Transport Layer. You will also see IP (and ICMP) work(s) for the most part at the Network Layer. We see these when we push the TCP/IP protocols into the ISO OSI 7-layer Networking Model's layers. (We will look into this in more detail further below.)
When we try to include a matching for a protocol like SSH (Secure Shell, a replacement for Telnet) we have problems. We will see that it performs things that appear to match up with descriptions from the Application Layer, Presentation Layer, and Session Layer. What does this say? This tells us how applications in the TCP/IP suite of protocols are often viewed as taking all three of the top layers of the ISO OSI 7-layer Model for Networking.
Let us now create a new 5-layer model to describe a TCP/IP based network model. This new 5-layer model will reflect mapping the top 3 layers of the ISO OSI 7-layer Model for Networking into a single monolithic layer we will call the TCP/IP Application Layer. This is meant to allow the TCP/IP Application Layer to still remain as the name for the top layer in both models. (Pay attention to the left-hand side labeled, "Stack Num 1" for this next section.)
Application- | Application- | |||||||||||
Presentation | ||||||||||||
--Session--- | ||||||||||||
-Transport-- | -Transport-- | |||||||||||
--Network--- | --Network--- | --Network--- | --Network--- | |||||||||
-Data Link-- | -Data Link-- | |||||||||||
--Physical-- | --Physical-- | |||||||||||
Key: | |
Is a physical wire or media connecting devices | |
This is a virtual path for peer level, layered protocol communications. Follow the GREEN colored layers, up and down any touching green stacks, and across physical links. | |
Where two or more "-" characters exist in a string, alone in a cell special meaning is implied. This is meant to show that data does not physically pass within the stack shown across this path, even though the data "virtually" passes through this point when viewing the peer layer stacks from an "End-to-end" vs. "chained" perspective. | |
Another way for referring to the Data Link Layer. | |
This is another way for referring to the PHYsical Layer. | |
This identifies the path that data actually flows, in a trip down the layers, across the physical layers, up to the RED colored layer where it is analyzed and sent on down to another physical layer, and over through the same layers, and is passed on down again, and across a third physical link to the destination, and up its layers. | |
Shows the numbered layers where a chained communications for peer level protocols on original source to final destination take place. (By chained communication, you see that peer layer protocols must communicate through partial stacks for network devices before getting to final destination.) |
The left-hand side of the above diagram shows what we are describing: the 5-layer model for TCP/IP suite of protocols. The right hand side shows what we described in the previous page: the ISO OSI 7-layer Model for Networking.
I should note that the mappings shown in the above diagram are not perfectly made. The diagram has the weakness of making it appear that the Application Layer for the TCP/IP 5-layer model maps perfectly to the Application Layer, Presentation Layer, and Session Layer of the ISO OSI 7-layer Reference Model for Networking. We are trying to make some square pegs fit into some round holes by forcing the TCP/IP 5-layer model to correlate its layers exactly with the ISO OSI 7-layer reference Model for Networking.
Here we begin examination of the TCP/IP 5-layer model's Application Layer by comparison to the ISO OSI 7-layer Reference Model for Networking Application Layer, Presentation Layer, and Session Layer.
Within SSH you have the following properties: (Not all aspects of SSH are covered in this partial review. Only enough of the attributes of the SSH protocol are covered in order to give the user and understanding that SSH as a complete protocol is not easily matched to any one of the 7-layer model's layers.)
In addition to the above mess of the SSH protocol refusing to have its parts fit withing the "standard" know as the ISO OSI 7-Layer Reference Model for Networking, realize that it is also possible to tunnel a PPP connection over an SSH connection, causing 1 layer of nesting. There is no theoretical limit as to how many times a tunneled connection could further tunnel oter connections, but there are rational limits. Each tunneling decreases performance by increasing latency, and decreasing throughput (since headers for each tunneleing are cumulative, and each stream must be decoded n+1 times (where n = an integer value for the number of tunnel layers that exist for connections and data transmissions.))
For an SSH client, you can see that expectations for certain layers seem to be jumbled. Synchronization is happening with file transfers at the TCP/IP Application Layer when it would normally happen at the OSI Session Layer
Session Flow Control is actually taking place in the O.S. at its TCP/IP Transport Layer when it would take place at the OSI Session Layer if it were a true ISO OSI 7-layer Reference Model for Networking.
Even when we discount the bleeding over of expectations within the Forced 7-layer models on the TCP/IP side, we still see the top 3 layers having their parts rolled together in a single monolithic Application Layer on the TCP/IP side of the diagram.
The bleeding over of certain items between OSI Layers forced onto the TCP/IP layers compounded with the existence of many OSI Layers in a single TCP/IP Application Layer protocol leads us to shrug our shoulders in unhappiness. We cannot easily force TCP/IP with its many TCP/IP Application Layer protocols to match up with the ISO OSI 7-layer Networking Reference Model for Networking. What we decide to do, is make breaks in the TCP/IP stack side where we can, which generally correspond to the layers on the OSI side.
(If you want a more complete list of the parts of SSH then you can review the out of date (expired) drafts for the various parts of the SSH protocol.)
From this, we decide to group the OSI Application Layer, OSI Presentation Layer, and OSI Session Layer into one monolithic TCP/IP Application Layer.
Look again at the diagram with the TCP/IP stack on the far left, and the OSI stack on the far right: (included down below here again to avoid scrolling)
Application- | Application- | |||||||||||
Presentation | ||||||||||||
--Session--- | ||||||||||||
-Transport-- | -Transport-- | |||||||||||
--Network--- | --Network--- | --Network--- | --Network--- | |||||||||
-Data Link-- | -Data Link-- | |||||||||||
--Physical-- | --Physical-- | |||||||||||
Key: | |
Is a physical wire or media connecting devices | |
This is a virtual path for peer level, layered protocol communications. Follow the GREEN colored layers, up and down any touching green stacks, and across physical links. | |
Where two or more "-" characters exist in a string, alone in a cell special meaning is implied. This is meant to show that data does not physically pass within the stack shown across this path, even though the data "virtually" passes through this point when viewing the peer layer stacks from an "End-to-end" vs. "chained" perspective. | |
Another way for referring to the Data Link Layer. | |
This is another way for referring to the PHYsical Layer. | |
This identifies the path that data actually flows, in a trip down the layers, across the physical layers, up to the RED colored layer where it is analyzed and sent on down to another physical layer, and over through the same layers, and is passed on down again, and across a third physical link to the destination, and up its layers. | |
Shows the numbered layers where a chained communications for peer level protocols on original source to final destination take place. (By chained communication, you see that peer layer protocols must communicate through partial stacks for network devices before getting to final destination.) |
You can see that our stack on the left attempts to show that the top three layers on the OSI model from the far right stack are mapped to the single monolithic TCP/IP Application Layer.
Now let us examine the Transport Layers of both sides:
On the TCP/IP side, UDP and TCP are considered to be part of the Transport Layer. (An examination of what information is included in TCP and UDP packets can be found later in the main document. To avoid double-statement of information, only generalizations of these protocols including the review of the Network Layer's IP and ICMP will be used.)
All of the above correspond to many of the requirements of the OSI Transport Layer so we can say that it is a pretty good mapping, and our diagram above shows that. There is a bit of bleed over for requirements in the session layer since sequence numbers, and port values can help to allow the O.S. to keep track of sessions, but most of the TCP and UDP functions and specifications map to the OSI Transport Layer.