Figure depicts the logical relationships among applications, socket abstractions,
protocols, and port numbers within a single host. There are several things to note about these
relationships. First, a program can have multiple sockets in use at the same time. Second, multiple
programs can be using the same socket abstraction at the same time, although this is less
common. The figure shows that each socket has an associated local TCP or UDP port, which
is used to direct incoming packets to the application that is supposed to receive them. Earlier
we said that a port identifies an application on a host. Actually, a port identifies a socket on a
host. There is more to it than this, however, because as Figure 1.2 shows, more than one socket
can be associated with one local port. This is most common with TCP sockets; fortunately, you
need not understand the details to write client-server programs that use TCP sockets. The full
story will be revealed in Chapter 7.