본문 바로가기
기타

3-Way Handshake & 4-Way Handshake

by Nhahan 2025. 5. 1.

1. TCP 3-Way Handshake (연결 설정)

  • 목적: TCP 연결 설정이다. 통신 전 양측의 준비 상태 확인 및 정보(시퀀스 번호) 교환이 목적이다.
  • 과정:
    1. [SYN] 클라이언트 → 서버: 클라이언트는 서버에 SYN 패킷(Client_ISN 포함)을 전송한다. 클라이언트는 SYN_SENT 상태이다.
    2. [SYN+ACK] 서버 → 클라이언트: 서버는 SYN 수신 후, SYN 패킷(Server_ISN 포함)과 ACK(Client_ISN + 1)를 클라이언트에 전송한다. 서버는 SYN_RECEIVED 상태이다.
    3. [ACK] 클라이언트 → 서버: 클라이언트는 SYN+ACK 수신 후, ACK(Server_ISN + 1) 패킷을 서버에 전송한다. 클라이언트는 ESTABLISHED 상태가 된다. 서버도 ACK 수신 시 ESTABLISHED 상태가 된다.
  • 결과: TCP 연결이 수립된다. 데이터 전송 준비가 완료된다.

2. TCP 4-Way Handshake (연결 해제)

  • 목적: TCP 연결 해제이다. 양방향 통신의 안전한 종료 확인이 목적이다. (Half-close 가능성 때문에 4단계이다.)
  • 과정:
    1. [FIN] Active Close 측 → Passive Close 측: 연결 종료를 원하는 측(예: 클라이언트)이 FIN 패킷을 전송한다. FIN_WAIT_1 상태이다.
    2. [ACK] Passive Close 측 → Active Close 측: 상대측(예: 서버)은 FIN 수신 후, 확인 ACK 패킷을 전송한다. CLOSE_WAIT 상태이다. (아직 보낼 데이터가 있을 수 있음) ACK를 받은 클라이언트는 FIN_WAIT_2 상태이다.
    3. [FIN] Passive Close 측 → Active Close 측: 서버가 모든 데이터 전송 완료 후, 자신의 FIN 패킷을 전송한다. LAST_ACK 상태이다.
    4. [ACK] Active Close 측 → Passive Close 측: 클라이언트는 서버 FIN 수신 후, 확인 ACK 패킷을 전송한다. TIME_WAIT 상태로 대기한다. 서버는 ACK 수신 시 CLOSED 상태가 된다. 클라이언트도 TIME_WAITCLOSED 상태가 된다.
  • 결과: TCP 연결이 해제된다.

요약 비교

구분 3-Way Handshake 4-Way Handshake
목적 TCP 연결 설정 TCP 연결 해제
주요 플래그 SYN, ACK FIN, ACK
단계 수 3 단계 4 단계
주요 상태 전이 LISTENSYN_SENTSYN_RCVDESTABLISHED ESTABLISHEDFIN_WAIT_1FIN_WAIT_2/CLOSE_WAITTIME_WAIT/LAST_ACKCLOSED
특징 양방향 연결 동시 준비 확인 양방향 연결 각자 종료 확인 (Half-close)

댓글