The network-layer protocols of the Internet are fundamentally
datagram-oriented and unreliable. It is the responsibility of
the Transport and Session layer protocols to enhance the
quality of service to that desired by a particular application.
In Internet terminology, these are the protocols of the
Host-to-Host Layer, but I think Session Management
better describes their role.
These protocols function as an intermediary between the
application and network layers.
Currently, there are three major Internet session management protocols:
UDP (User Datagram Protocol) provides almost no
additional functionality over IP. It performs fast,
unreliable, datagram delivery. UDP is the Internet's version of
the no-look pass.
TCP (Transmission Control Protocol) provides reliable,
stream-oriented delivery for applications such as file transfers
and remote logins. TCP is a sliding-window protocol that
takes steps to insure reliable data transfer,
resending if needed due to network overloads or malfunctions.
TCP, one of the most important Internet protocols, is also one
of the most complex. Although it often works well unattended,
a good understanding of TCP is essential for diagnosing performance problems.
RPC (Remote Procedure Call) is designed for programs to
make subroutine calls on other systems. Essentially a request-reply
protocol, RPC usually makes heavy use of UDP datagrams, adding its own
facilities for insuring data transfer. RPC implementations
generally do not yield TCP-quality performance, so its use is
mostly limited to local area networks. Its most important
application is the file sharing via the NFS protocol.