|The session layer allows users on different
machines to establish sessions between them. A session allows
ordinary data transport, as does the transport layer, but it
also provides some enhanced services useful in a some
applications. A session might be used to allow a user to log
into a remote time-sharing system or to transfer a file
between two machines.
One of the services of the session layer is to manage
dialogue control. Sessions can allow traffic to go in both
directions at the same time, or in only one direction at a
time. If traffic can only go one way at a time, the session
layer can help keep track of whose turn it is.
A related session service is token management. For some
protocols, it is essential that both sides do not attempt the
same operation at the same time. To manage these activities,
the session layer provides tokens that can be exchanged. Only
the side holding the token may perform the critical operation.
Another session service is synchronization. Consider the
problems that might occur when trying to do a two-hour file
transfer between two machines on a network with a 1 hour mean
time between crashes. After each transfer was aborted, the
whole transfer would have to start over again, and would
probably fail again with the next network crash. To eliminate
this problem, the session layer provides a way to insert
checkpoints into the data stream, so that after a crash, only
the data after the last checkpoint has to be repeated.