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 상태는 네트워크 안정성을 보장하기 위해 꼭 필요한 과정임을 이해하는 것이 중요합니다.
'컴퓨터 과학 > 네트워크' 카테고리의 다른 글
| 도메인 네임과 네임 서버, 그리고 자원을 식별하는 URI (0) | 2025.10.05 |
|---|---|
| TCP vs UDP 비교 (0) | 2025.10.04 |
| 전송 계층 핵심 정리 — TCP 집중 가이드 (0) | 2025.10.04 |
| TCP의 핵심: 세그먼트와 통신 흐름 (0) | 2025.10.04 |
| IP의 한계와 ICMP의 역할: 비연결형 통신의 보완책 (0) | 2025.10.04 |