Processes running on differnet machines communicate with each other by sending messages into sockets. Each process
is analogous to a house and the process's socket is analogous to a door. The socket is the door between the application
process and TCP. The application developer has control of everything on the application-layer side of the socket; however,
it has little control of the transport-layer side.

Before providing client/server application, it is useful to discuss the notion of a stream. A stream
is a sequence of characters that flow into or out of a process. Each stream is either an input stream
for the process or an output stream for the process.

|