[네트워크] 3-Way Handshake란?

hannah·2025년 10월 20일

CS

목록 보기
1/16

🚀 TCP 연결 설정 (3-Way Handshake)

TCP는 신뢰성 있는 연결 지향형 통신을 제공하기 위해 연결을 맺는 과정(3-Way Handshake) 을 수행한다.
이 과정은 클라이언트와 서버가 서로의 존재를 확인하고, 초기 시퀀스 번호를 교환하여 데이터 전송 준비를 완료하는 절차이다.

아래 그림은 TCP가 연결을 설정하는 과정을 단계별로 나타낸 것이다 👇

TCP 3-Way Handshake


💡 개요

TCP는 데이터를 주고받기 전에 반드시 논리적 연결(Logical Connection) 을 확립해야 한다.
이때 SYNACK 플래그를 이용하여 세 번의 메시지를 주고받는다.
이 과정을 3-Way Handshake라 한다.


⚙️ 연결 과정

1️⃣ 클라이언트 → 서버 : SYN 전송

클라이언트는 연결을 요청하기 위해 SYN 플래그가 설정된 세그먼트를 전송한다.
이때 임의의 초기 시퀀스 번호(Seq = x)를 함께 보낸다.

  • 상태 변화: CLOSED → SYN_SENT

2️⃣ 서버 → 클라이언트 : SYN + ACK 전송

서버는 클라이언트의 SYN을 수신한 후, 자신도 연결을 수락한다는 의미로 SYNACK가 모두 설정된 세그먼트를 보낸다.
이때 서버는 자신의 초기 시퀀스 번호(Seq = y)를 포함하고, 클라이언트의 시퀀스를 확인(ACK = x + 1)한다.

  • 상태 변화: LISTEN → SYN_RCVD

3️⃣ 클라이언트 → 서버 : ACK 전송

클라이언트는 서버의 SYN + ACK를 수신한 뒤, 이를 확인하는 ACK를 전송한다.
이 응답에는 ACK = y + 1이 포함되어 있으며, 이때부터 양측은 데이터를 송수신할 수 있는 상태가 된다.

  • 상태 변화:

    • 클라이언트: SYN_SENT → ESTABLISHED
    • 서버: SYN_RCVD → ESTABLISHED

🧩 상태 변화 요약

역할상태 변화설명
클라이언트CLOSED → SYN_SENT → ESTABLISHED연결을 요청한다.
서버LISTEN → SYN_RCVD → ESTABLISHED연결 요청을 수락한다.

🗒️ 핵심 포인트

  • SYN (Synchronize) : 연결 요청 및 초기 시퀀스 번호 설정을 의미한다.

  • ACK (Acknowledgment) : 상대방의 SYN 또는 데이터 수신을 확인하는 응답이다.

  • 3단계 절차의 목적

    1. 클라이언트와 서버가 서로의 존재를 확인한다.
    2. 양측의 초기 시퀀스 번호를 교환한다.
    3. 양쪽 모두 데이터 전송 준비가 완료되었음을 보장한다.

📚 정리

TCP의 3-Way Handshake는 신뢰성 있는 연결을 위한 첫 단계이며,
양쪽이 데이터를 안전하게 주고받기 위한 상호 동기화 과정이다.

0개의 댓글