In some cultures, when two persons meet, they often greet each other by shaking hands. The act of shaking hands is understood by both parties as a signal for a friendly greeting. Connections on the network are similar. The first handshake requests synchronization. The second handshake acknowledges the initial synchronization request and synchronizes the connection parameters in the opposite direction. The third handshake segment is an acknowledgment used to inform the destination that both sides agree that a connection has been established.
When two hosts communicate using TCP, a connection is established before data can be exchanged. After the communication is completed, the sessions are closed and the connection is terminated. The connection and session mechanisms enable TCP’s reliability function. See the figure for the steps to establish and terminate a TCP connection.
Hosts track each data segment within a session and exchange information about what data is received using the information in the TCP header. TCP is a full-duplex protocol, where each connection represents two one-way communication streams, or sessions. To establish the connection, the hosts perform a three-way handshake. Control bits in the TCP header indicate the progress and status of the connection. The three-way handshake:
- Establishes that the destination device is present on the network
- Verifies that the destination device has an active service and is accepting requests on the destination port number that the initiating client intends to use for the session
- Informs the destination device that the source client intends to establish a communication session on that port number
In TCP connections, the host client establishes the connection with the server. The three steps in TCP connection establishment are:
Step 1. The initiating client requests a client-to-server communication session with the server.
Step 2. The server acknowledges the client-to-server communication session and requests a server-to-client communication session.
Step 3. The initiating client acknowledges the server-to-client communication session.
In the figure, click through buttons 1 through 3 to see the TCP connection establishment.
To understand the three-way handshake process, look at the various values that the two hosts exchange. Within the TCP segment header, there are six 1-bit fields that contain control information used to manage the TCP processes. Those fields are:
- URG - Urgent pointer field significant
- ACK - Acknowledgement field significant
- PSH - Push function
- RST - Reset the connection
- SYN - Synchronize sequence numbers
- FIN - No more data from sender
The ACK and SYN fields are relevant to our analysis of the three-way handshake.