카테고리 없음

3way handshake가 뭘까요

com.oryneogury 2026. 1. 26. 08:40

TCP 3-Way Handshake란? (연결이 만들어지는 3단계 과정)

네트워크에서 **TCP(Transmission Control Protocol)** 는 “연결형(Connection-oriented)” 프로토콜입니다.
즉, 데이터를 보내기 전에 **서로 통신할 준비가 되었는지 확인하고 연결을 먼저 성립**시키는 과정이 필요합니다.

그 연결을 만드는 대표적인 과정이 바로 **TCP 3-Way Handshake** 입니다.

 


1. 3-Way Handshake의 목적

TCP 3-Way Handshake는 클라이언트와 서버가 통신을 시작하기 전에 아래 내용을 확인하기 위해 수행됩니다.

- 서로 **통신 가능한 상태인지 확인**
- 데이터 전송을 위한 **연결(Connection) 생성**
- 서로의 초기 시퀀스 번호(Sequence Number)를 교환하여 이후 데이터 흐름을 **정확히 추적할 수 있도록 동기화(Synchronization)**

즉, **“연결을 안전하게 시작하기 위한 준비 과정”** 이라고 보면 됩니다.

 


2. 왜 ‘3번’ 주고받을까?

TCP 연결은 “한 번 요청하면 끝”이 아니라, **서로 확인(ACK)을 주고받는 구조**입니다.

- 클라이언트가 “연결할래” 라고 말함
- 서버가 “좋아, 나도 준비됐어” 라고 응답함
- 클라이언트가 “응답 확인했어, 이제 연결 완료” 라고 마무리함

이렇게 **서로의 상태를 확실히 확인**하기 위해 총 3단계로 구성됩니다.

 

3. 3-Way Handshake 과정 (SYN → SYN/ACK → ACK)

TCP 3-Way Handshake는 다음 3단계로 진행됩니다.

 

(1) SYN : 클라이언트 → 서버 (연결 요청)

클라이언트가 서버에게 연결을 시작하겠다는 의미로 **SYN(Synchronize)** 패킷을 보냅니다.

- 의미: “연결 시작하자”
- 특징: 클라이언트는 이 시점에 **초기 시퀀스 번호(Initial Sequence Number)** 를 함께 보냅니다.

이 단계 이후 클라이언트는 **SYN-SENT 상태**가 됩니다.

 

 

(2) SYN + ACK : 서버 → 클라이언트 (요청 수락 + 확인)

서버는 클라이언트의 SYN을 받고, 연결을 받아들이겠다는 의미로 **SYN + ACK** 를 보냅니다.

- SYN 의미: “나도 연결할 준비 됐어”
- ACK 의미: “너의 SYN을 확인했어”

이 단계 이후 서버는 **SYN-RECEIVED 상태**가 됩니다.

 

 

(3) ACK : 클라이언트 → 서버 (최종 확인, 연결 완료)

클라이언트는 서버의 SYN+ACK를 받고 마지막으로 **ACK** 를 보내며 연결을 확정합니다.

- 의미: “서버 응답 확인했고, 이제 연결 완료”

이 단계가 끝나면 **클라이언트와 서버 모두 ESTABLISHED 상태**가 되어 본격적으로 데이터를 주고받을 수 있습니다.

 

 

4. 요약

TCP 3-Way Handshake는 **클라이언트와 서버가 TCP 연결을 생성하기 위해 SYN → SYN/ACK → ACK를 주고받는 3단계 과정**이다.

 

 

5. 핵심 키워드 정리

- **SYN**: 연결 시작 요청
- **ACK**: 확인 응답
- **3-Way Handshake**: TCP 연결을 성립시키는 3단계 절차
- **ESTABLISHED**: 연결이 완전히 성립된 상태