s, a sending TCP can still send new data, although previous data have not been acknowledged. Flow Control Mechanism. TCP's flow control mechanism enables a receiving TCP to govern the amount of data dispatched by a sending TCP. The mechanism is based on a window, which defines a contiguous interval of acceptable sequence-numbered data. As data are accepted, TCP slides the window upward in the sequence number space. This window is carried in every segment, enabling peer TCPs to maintain up-to-date window information. Multiplexing Mechanism. TCP employs a multiplexing mechanism to allow multiple ULPs within a single host and multiple processes in a ULP to use TCP simultaneously. This mechanism associates identifiers, called ports, to ULP processes accessing TCP services. A ULP connection is uniquely identified with a socket, the concatenation of a port and an Internet address. Each connection is uniquely named with a socket pair. This naming scheme allows a single ULP to support connections to multiple remote ULPs. ULPs which provide popular resources are assigned permanent sockets, called well-known sockets. 12.3.4.3 ULP Synchronization. When two ULPs (upper-layer protocols) wish to communicate (see Figure 12.4), they instruct their TCPs to initialize and synchronize the mechanism information on each to open the connection. However, the potentially unre- liable network layer (i.e., the IP layer) can complicate the process of synchronization. Delayed or duplicate segments from previous connection attempts might be mistaken for new ones. A handshake procedure with clock-based sequence numbers is used in connec- tion opening to reduce the possibility of such false connections. In the simplest handshake, the TCP pair synchronizes sequence numbers by exchanging three segments, the name three-way handshake. 12.3.4.4 ULP Modes. A ULP can open a connection in one of two modes: passive or active. With a passive open, a ULP instructs its TCP to be receptive to connections with other ULPs. With an active open, a ULP instruct