페이지

2026년 3월 31일 화요일

TCP 신뢰성 보장의 핵심, 연결 성립 및 해제 메커니즘

 

1. 연결 지향형 전송 프로토콜, TCP의 개요

가. TCP(Transmission Control Protocol)의 정의

  • OSI 7계층 중 전송 계층(Transport Layer)에 속하며, 종단 간(End-to-End) 신뢰성 있는 데이터 전송을 위해 연결 지향적(Connection-oriented) 서비스를 제공하는 프로토콜입니다.

  • 데이터의 정확한 전달을 위해 연결 설정 시에는 3-way Handshake, 연결 종료 시에는 4-way Handshake 과정을 거칩니다.

나. 주요 특징

  • 신뢰성: 패킷 손실 시 재전송(ARQ), 흐름 제어(Flow Control), 혼잡 제어(Congestion Control).

  • 전이중(Full-duplex) 통신: 양방향으로 동시에 데이터 전송 가능.


2. TCP 연결 설정: 3-way Handshake

양방향 통신을 위한 준비 단계로, 시퀀스 번호(ISN)를 교환하여 동기화합니다.

단계주체메시지 (Flag)설명 및 상태 변화
1단계ClientSYN (Seq=x)클라이언트가 서버에 접속 요청을 보냄 (LISTEN → SYN_SENT)
2단계ServerSYN+ACK (Seq=y, Ack=x+1)서버가 요청을 수락하고 본인의 ISN을 보냄 (LISTEN → SYN_RCVD)
3단계ClientACK (Ack=y+1)클라이언트가 확인 응답을 보냄 (SYN_SENT → ESTABLISHED)
  • 결과: 서버도 ACK를 받으면 ESTABLISHED 상태가 되어 데이터 전송이 가능한 상태가 됨.


3. TCP 연결 해제: 4-way Handshake

데이터 전송 완료 후 양쪽의 연결을 안전하게 닫는 과정입니다.

단계주체메시지 (Flag)설명 및 상태 변화
1단계ClientFIN클라이언트가 연결을 종료하겠다는 신호를 보냄 (FIN_WAIT_1)
2단계ServerACK서버가 확인하고 남은 데이터를 마저 보냄 (CLOSE_WAIT) / 클라이언트는 FIN_WAIT_2
3단계ServerFIN서버도 보낼 데이터가 없으면 종료 신호를 보냄 (LAST_ACK)
4단계ClientACK클라이언트가 확인 응답을 보내고 TIME_WAIT 상태로 진입 후 최종 종료
  • TIME_WAIT의 중요성: 마지막 ACK가 유실될 경우를 대비하고, 지연 패킷(Stray Packet)이 다음 연결에 혼선(Data Corruption)을 주지 않도록 일정 시간 대기합니다.


4. 3-way/4-way Handshake 비교 및 기술사적 제언

가. 주요 차이점 비교

항목3-way Handshake4-way Handshake
목적논리적 연결 설정 및 동기화안전한 연결 종료 및 자원 회수
수행 단계3단계 (SYN → SYN+ACK → ACK)4단계 (FIN → ACK → FIN → ACK)
핵심 상태ESTABLISHEDTIME_WAIT

나. 기술사적 제언 (발전 및 최적화)

  1. TCP Fast Open (TFO): 3-way 과정에서 발생하는 지연 시간(RTT)을 줄이기 위해 첫 연결 이후 쿠키를 사용하여 SYN 패킷에 데이터를 함께 실어 보내는 기법이 활용되고 있습니다.

  2. 보안 고려사항: SYN 요청만 대량으로 보내 서버 자원을 고갈시키는 SYN Flooding 공격에 대비하여 SYN Cookie 등의 방어 기구 적용이 필수적입니다.

  3. Modern Protocol: 최근 HTTP/3에서는 TCP 대신 UDP 기반의 QUIC 프로토콜을 사용하여 Handshake 과정을 0-RTT 또는 1-RTT로 단축, 네트워크 성능을 극대화하고 있습니다.

댓글 없음: