In terms of design, if you do TCP/IP *only* design, the TCP/IP model is
probably enough. However, the Internet is not only TCP/IP. Carriers, for
example, don't care much if their fiber transports TCP/IP or IPX or
voice or video or GigE.
Anything at or above transport layer is a layer internal to end
systems and has nothing to do with networking or network protocols.
Seperation of transport and application layers is a overkill
for a best effort network, though it may help standardize the
internal design of end systems such that anything supported by
kernel belong the transport layer. You can check the reality
that application and transport areas of IETF are now almost
identical, though, historically, trasnsport area was working
on protocols likely to be implemented in kernel.
In addition, defining a thin transport layer may be useful over a
hypothetical port-number-aware network such as that supporting RSVP.
However, forcibly defining a session-layer-aware network is a
And, there are complex multi-protocol networks that a) don't use only
TCP/IP and b) would not be able to use the TCP/IP model anyway because
it's too simple.
Unless you are trying to standardize internal design of application
layer gateways, which is like defining standardizing the way of
structured programming and is hopeless, the separation of upper
layers is meaningles.
The bottom line is: lots of people are going to continue using the OSI
model. We don't need two different models.
I am having no difficulty in teaching my students, even though I often
forget the names of two OSI layers between transport and application.
In writing this mail, I only remember one: session.
New comers don't need two different models.