31.1 Introduction
In this chapter, we will provide an overview of
the STREAMS system and the functions used by an application to
access a stream. Our goal is to understand the implementation of
networking protocols within the STREAMS framework. We will also
develop a simple TCP client using the Transport Provider Interface
(TPI), the interface into the transport layer that sockets normally
use on a system based on STREAMS. Additional information on
STREAMS, including information on writing kernel routines that
utilize STREAMS, can be found in [Rago 1993].
STREAMS were designed by Dennis Ritchie [Ritchie
1984] and were first made widely available with SVR3 in 1986. The
POSIX specification defines STREAMS as an option group, which means a system may not
implement STREAMS, but if it does, the implementation must comply
with the POSIX specification. Any system derived from System V
should provide POSIX, but the various 4.xBSD releases do not
provide POSIX.
Be careful to distinguish between STREAMS, the
stream I/O system that we are describing in this chapter, versus
"standard I/O streams." The latter term is used when talking about
the standard I/O library (e.g., functions such as fopen,
fgets, printf, and the like).
|