컴퓨터 과학/네트워크

TCP 상태와 연결 과정 이해하기

Data Jun 2025. 10. 4. 11:24

TCP(Transmission Control Protocol)는 신뢰성 있는 통신을 제공하기 위해 다양한 상태(state)를 정의하고, 상태 전이 과정을 통해 연결을 수립하고 종료합니다. 이번 글에서는 TCP의 주요 상태와 각 상태에서 일어나는 동작을 그림과 함께 살펴보겠습니다.

 

1. TCP 상태 개요

TCP는 크게 세 가지 상황에서 상태가 구분됩니다.

  • 연결이 수립되지 않은 상태
    → CLOSED, LISTEN
  • 연결 수립 과정에서의 상태
    → SYN-SENT, SYN-RECEIVED, ESTABLISHED
  • 연결 종료 과정에서의 상태
    → FIN-WAIT-1, CLOSE-WAIT, FIN-WAIT-2, LAST-ACK, TIME-WAIT, CLOSING

 

2. 연결이 수립되지 않은 상태

TCP 연결이 시작되기 전에는 아무런 세션이 존재하지 않습니다.

  • CLOSED: 기본 상태, 연결이 없는 상태
  • LISTEN: 서버가 클라이언트의 연결 요청(SYN 세그먼트)을 기다리는 상태 (패시브 오픈)

 

3. 연결 수립 상태 (3-way Handshake)

TCP는 3-way Handshake를 통해 연결을 확립합니다.

  • SYN-SENT: 클라이언트가 연결 요청을 보낸 상태
  • SYN-RECEIVED: 서버가 SYN을 받고, SYN+ACK 응답을 보낸 상태
  • ESTABLISHED: 클라이언트가 ACK를 보내면서 연결이 확립된 상태

 

4. 연결 종료 상태

연결 종료 과정에서는 양쪽에서 FIN과 ACK를 교환하며, 상태가 여러 단계로 나뉩니다.

  • FIN-WAIT-1: 능동적으로 연결 종료를 시도하며 FIN을 보낸 상태
  • CLOSE-WAIT: FIN을 받고, ACK를 보낸 뒤 애플리케이션 종료를 기다리는 상태

 

5. TIME-WAIT과 종료

마지막으로 연결이 완전히 닫히기 전, TIME-WAIT 상태가 존재합니다.

  • TIME-WAIT: FIN과 ACK 교환 후, 일정 시간 동안 대기하며 패킷 지연으로 인한 문제를 방지
  • 일정 시간이 지난 후 CLOSED로 전환

 

6. 전체 상태 전이도

TCP의 전체적인 상태 전이는 다음 그림처럼 정리할 수 있습니다.

 

 

 

정리하면

 

TCP 상태 전이는 단순히 "연결된다 / 끊어진다"로 끝나는 것이 아니라, 연결 준비 → 연결 수립 → 데이터 통신 → 연결 종료까지 여러 단계를 거칩니다. 특히 TIME-WAIT 상태는 네트워크 안정성을 보장하기 위해 꼭 필요한 과정임을 이해하는 것이 중요합니다.