Three Way Handshake-
Before you go through this article, make sure that you have gone through the previous article on Three Way Handshake.
We have discussed-
- TCP uses Three Way Handshake to establish a connection between the sender and receiver.
- Connection establishment using Three Way Handshake involves the steps as shown-
Also Read- TCP Retransmission
In this article, we will discuss how a TCP connection is terminated.
TCP Connection Termination-
A TCP connection is terminated using FIN segment where FIN bit is set to 1. |
Consider-
- There is a well established TCP connection between the client and server.
- Client wants to terminate the connection.
The following steps are followed in terminating the connection-
Step-01:
For terminating the connection,
- Client sends a FIN segment to the server with FIN bit set to 1.
- Client enters the FIN_WAIT_1 state.
- Client waits for an acknowledgement from the server.
Step-02:
After receiving the FIN segment,
- Server frees up its buffers.
- Server sends an acknowledgement to the client.
- Server enters the CLOSE_WAIT state.
Step-03:
After receiving the acknowledgement, client enters the FIN_WAIT_2 state.
Now,
- The connection from client to server is terminated i.e. one way connection is closed.
- Client can not send any data to the server since server has released its buffers.
- Pure acknowledgements can still be sent from the client to server.
- The connection from server to client is still open i.e. one way connection is still open.
- Server can send both data and acknowledgements to the client.
Step-04:
Now, suppose server wants to close the connection with the client.
For terminating the connection,
- Server sends a FIN segment to the client with FIN bit set to 1.
- Server waits for an acknowledgement from the client.
NOTEIf server wanted, It could have sent the FIN segment along with the previous acknowledgment that it sent to the client. |
Step-05:
After receiving the FIN segment,
- Client frees up its buffers.
- Client sends an acknowledgement to the server (not mandatory).
- Client enters the TIME_WAIT state.
TIME_WAIT State-
- The TIME_WAIT state allows the client to resend the final acknowledgement if it gets lost.
- The time spent by the client in TIME_WAIT state depends on the implementation.
- The typical values are 30 seconds, 1 minute and 2 minutes.
- After the wait, the connection gets formally closed.
Next Article- Practice Problems On TCP
Get more notes and other study material of Computer Networks.
Watch video lectures by visiting our YouTube channel LearnVidFun.