The basic function of the transport layer, is to accept data from the session layer, split it up into smaller units if
need be, pass these to the network layer, and ensure that the pieces all arrive correctly at the other end. Furthermore, all
this must be done efficiently, and in a way that isolates the session layer from the inevitable changes in the hardware technology.
Under normal conditions, the transport layer creates a distinct network connection for each transport connection required
by the session layer. If the transport connection requires a high throughput, however, the transport layer might create multiple
network connections, dividing the data among the network connections to improve throughput. On the other hand, if creating
or maintaining a network connection is expensive, the transport layer might multiplex several transport connections onto the
same network connection to reduce the cost. In all cases, the transport layer is required to make the multiplexing transparent
to the session layer.
The transport layer also determines what type of service to provide to the session layer, and ultimately, the users of
the network. The most popular type of transport connection is an error-free point-to-point channel that delivers messages
in the order in which they were sent. However, other possible kinds of transport, service and transport isolated messages
with no guarantee about the order of delivery, and broadcasting of messages to multiple destinations. The type of service
is determined when the connection is established.
The transport layer is a true source-to-destination or end-to-end layer. In other words, a program on the source machine
carries on a conversation with a similar program on the destination machine, using the message headers and control messages.
Many hosts are multi-programmed, which implies that multiple connections will be entering and leaving each host. There
needs to be some way to tell which message belongs to which connection. The transport header is one place this information
could be put.
In addition to multiplexing several message streams onto one channel, the transport layer musk take care of establishing
and deleting connections across the network. This requires some kind of naming mechanism, so that process on one machine has
a way of describing with whom it wishes to converse. There must also be a mechanism to regulate the flow of information, so
that a fast host cannot overrun a slow one. Flow control between hosts is distinct from flow control between switches, although
similar principles apply to both.