Sockets programming uses the layered model of packet communication (see Figure 12.1). At the top is the Application layer, which is where applications exist (those that utilize Sockets for communication). Below the Application layer we define the Sockets layer. This isn t actually a layer, but it is shown here simply to illustrate where the API is located. The Sockets layer sits on top of the Transport layer. The Transport layer provides the transport protocols. Next is the Network layer, which provides among other things routing over the Internet. This layer is occupied by the Internet Protocol, or IP. Finally, the Physical layer driver is found, which provides the means to introduce packets onto the physical network.