In real-world systems, applications typically access network services through
an applications programming interface (API). The most popular
of these APIs is known as ``sockets.'' In ns, we mimic the behavior of the
sockets API through a set of well-defined API functions. These functions
are then mapped to the appropriate internal agent functions (e.g.,
a call to send(numBytes) causes TCP to increment its ``send buffer''
by a corresponding number of bytes).
This section describes how agents and applications are hooked together and
communicate with one another via the API.