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. |