Client-Server Applications
Programs written to use TCP are developed using
the client-server model. As mentioned previously, when two programs
wish to use TCP to exchange data, one of the programs must assume
the role of the client, while the other must assume the role of the
server. The client application initiates what is called an active
open. It creates a socket and actively attempts to connect to a
server program. On the other hand, the server application creates a
socket and passively listens for incoming connections from clients,
performing what is called a passive open. When the client initiates
a connection, the server is notified that some process is
attempting to connect with it. By accepting the connection, the
server completes what is called a virtual circuit, a logical
communications pathway between the two programs. It’s important to
note that the act of accepting a connection creates a new socket;
the original socket remains unchanged so that it can continue to be
used to listen for additional connections. When the server no
longer wishes to listen for connections, it closes the original
passive socket.
To review, there are five significant steps that a program which
uses TCP must take to establish and complete a connection. The
server side would follow these steps:
- Create a socket.
- Listen for incoming connections from clients.
- Accept the client connection.
- Send and receive information.
- Close the socket when finished, terminating the
conversation.
In the case of the client, these steps are followed:
- Create a socket.
- Specify the address and service port of the server
program.
- Establish the connection with the server.
- Send and receive information.
- Close the socket when finished, terminating the
conversation.
- Only steps two and three are different, depending on if it’s a
client or server application.