The Difference Between TCP/IP and the OSI Reference Model

TCP/IP and OSI actually represent opposite approaches to the problem of robust network implementations. The node title is your first clue. The OSI Reference Model was conceptualized first, then implemented (poorly). The TCP/IP Reference Model was actually drawn up to describe the already existing network stack. Both play an important role in the education of future network engineers; OSI demonstrates principles while TCP/IP offers a great example of practical design.

A Reference Model is one conceptual step more general than a technical specification. It generalizes the principles behind the network layer architecture so that the reasoning behind implementation details is not lost. Because networking is such an ubuiquitous and difficult problem, a good reference model is handy to keep the big picture in mind when designing new network protocols.

The OSI Reference Model has proven to be invaluable in the realm of education because it was conceived on an abstract level, these are the things you need to think about when designing networks. It offers a very clean model with clear distinctions between the roles of each layer. Unfortunately in practice things are often not so clear cut. For example, error correction may need to be done at each layer to satisfy its correctness, but in practice we may want a higher layer to correct everything below it for efficiency's sake. Another problem with OSI is that some layers are overkill. For instance, the Session and Presentation layers both do very little, and what they do is likely to vary from application to application. Thinking about them conceptually is useful, but implementing usually isn't.

The TCP/IP Reference Model, on the other hand, isn't even a proper model. For one thing, only the middle two layers, Network and Transport are well-defined. The bottom layer mostly defines an interface to some heterogenous hardware below it. This is done so that TCP/IP can be implemented on top of any simple network, but it renders the model incomplete because it tells us nothing about how data transmission is accomplished at the frame or physical levels. The result is something that's handy to know, but not great for teaching principles.