100% Free Forever
AI-Powered Learning
Industry Expert Content
Certificates & Badges
Learn At Your Own Pace

How Does TCP Connection Teardown Work?

Learn how TCP connection teardown works — the four-step FIN/ACK exchange, TIME_WAIT, and how it differs from an RST abort.

mediumQ183 of 224 in Computer Networks Est. time: 5 minsLast updated:
Open Code Lab

Expected Interview Answer

TCP connection teardown normally uses a four-step FIN/ACK exchange: the side closing first sends a FIN, the peer acknowledges it and later sends its own FIN once it is done sending data, and the original closer sends a final ACK — after which the connection is fully closed on both sides, with the initiator briefly holding TIME_WAIT.

Because TCP is full-duplex, each direction of the connection must be closed independently: when host A calls close(), it sends a FIN that only signals A will send no more data, but A can still receive data from B until B also finishes and sends its own FIN. B typically responds to A’s FIN with an immediate ACK, then later sends its own FIN once its application is also done, which A acknowledges with a final ACK. This produces the four segments FIN, ACK, FIN, ACK, though the middle ACK and FIN from B are sometimes combined into one segment if B has no more data queued, effectively becoming a three-step teardown. The side that sent the final ACK enters TIME_WAIT for roughly twice the maximum segment lifetime before fully releasing the connection, ensuring any delayed duplicate segments from the old connection cannot be misinterpreted by a new connection reusing the same address/port pair. An abrupt RST, by contrast, tears down a connection immediately without this graceful exchange, discarding any unacknowledged data.

  • Closes each direction independently since TCP is full-duplex
  • Guarantees both sides agree the connection is fully done before cleanup
  • TIME_WAIT prevents stray segments from an old connection colliding with a new one
  • Distinct from an abrupt RST-based abort, which skips the graceful exchange

AI Mentor Explanation

TCP teardown is like ending a two-way radio conversation between the umpire and the third umpire: the umpire says "I am done transmitting" (FIN), the third umpire acknowledges it but still has one more ruling to send (ACK), then sends "I am done transmitting too" (FIN) once finished, and the umpire confirms with a final "got it, over" (ACK). Only after all four messages is the channel considered fully closed, not just one side going quiet. This matches exactly why closing a TCP connection needs both directions to independently signal they are finished.

Step-by-Step Explanation

  1. Step 1

    First FIN

    The side finished sending data sends a FIN and moves to FIN_WAIT_1; it can still receive data.

  2. Step 2

    ACK of FIN

    The peer acknowledges the FIN immediately and moves to CLOSE_WAIT; the initiator moves to FIN_WAIT_2.

  3. Step 3

    Second FIN

    Once the peer's application also finishes sending, it sends its own FIN and moves to LAST_ACK.

  4. Step 4

    Final ACK and TIME_WAIT

    The initiator ACKs the second FIN and enters TIME_WAIT for ~2×MSL before returning to CLOSED; the peer closes immediately on receiving that ACK.

What Interviewer Expects

  • Correctly names the four-step FIN, ACK, FIN, ACK sequence
  • Explains why TCP closes each direction independently (full-duplex)
  • Knows which endpoint enters TIME_WAIT and roughly why (2×MSL)
  • Distinguishes graceful FIN-based teardown from an abrupt RST

Common Mistakes

  • Describing teardown as the same three-step process as the handshake
  • Thinking both sides enter TIME_WAIT
  • Not knowing FIN and ACK from the peer can sometimes be combined into one segment
  • Confusing a graceful FIN close with an abrupt RST abort

Best Answer (HR Friendly)

TCP connection teardown is like both people on a phone call formally saying goodbye rather than just hanging up: each side says "I am done talking" and waits for the other to confirm before the line actually disconnects. This four-step handshake makes sure no message is lost mid-sentence, and one side waits briefly afterward just in case a delayed message shows up late.

Code Example

Observing a TCP teardown sequence
# Capture the FIN/ACK teardown sequence for a connection
sudo tcpdump -n 'tcp[tcpflags] & (tcp-fin|tcp-ack) != 0' -i any host example.com

# Typical teardown output:
# 10.0.0.5 > 93.184.216.34: Flags [F.], seq 900, ack 400   (FIN, ACK)
# 93.184.216.34 > 10.0.0.5: Flags [.], ack 901              (ACK)
# 93.184.216.34 > 10.0.0.5: Flags [F.], seq 400, ack 901    (FIN, ACK)
# 10.0.0.5 > 93.184.216.34: Flags [.], ack 401               (final ACK)

# Confirm the closer briefly sits in TIME_WAIT
ss -tan state time-wait

Follow-up Questions

  • What is the difference between a graceful FIN-based close and an RST abort?
  • Why can the middle ACK and FIN from the peer sometimes be combined into one segment?
  • What happens if the final ACK is lost during teardown?
  • How does TIME_WAIT length affect servers handling very high connection turnover?

MCQ Practice

1. How many segments does a full, uncombined TCP teardown typically involve?

A full teardown is FIN, ACK, FIN, ACK — four segments, though the middle two can sometimes merge.

2. Why does TCP close each direction of a connection independently?

TCP is full-duplex, so each side must separately signal it has no more data to send.

3. What immediately tears down a TCP connection without the graceful FIN exchange?

A RST (reset) segment aborts the connection immediately, bypassing the graceful FIN-based teardown.

Flash Cards

Four steps of TCP teardown?FIN → ACK → FIN → ACK.

Why close each direction separately?Because TCP is full-duplex; each side signals it is done sending independently.

Who enters TIME_WAIT?The side that sends the final ACK (the original active closer).

Graceful close vs RST?FIN-based close is graceful and orderly; RST aborts the connection immediately, discarding data.

1 / 4

Continue Learning