TCP 3-Way Handshake(3-웨이 핸드셰이크)는 TCP/IP 프로토콜에서 클라이언트와 서버 간의 안정적인 연결을 수립하기 위해 사용하는 과정이다.
이 과정은 신뢰성 있는 데이터 전송을 보장하기 위해 3단계의 패킷 교환을 거친다.
클라이언트와 서버가 통신을 시작하기 위해 SYN → SYN-ACK → ACK의 3단계를 거친다.
SYN 패킷을 전송한다.Client → Server : SYN(x) (연결 요청, x는 클라이언트의 ISN)
SYN-ACK 패킷을 보낸다.Client ← Server : SYN(y) + ACK(x+1) (연결 요청 수락, y는 서버의 ISN)
SYN-ACK 패킷을 확인한 후,ACK 패킷을 다시 보낸다.Client → Server : ACK(y+1) (연결 확립 완료)
1. Client → Server : SYN(x) (연결 요청)
2. Client ← Server : SYN(y) + ACK(x+1) (요청 수락 및 응답)
3. Client → Server : ACK(y+1) (연결 확립 완료)
이 과정을 거친 후, 데이터 전송이 시작된다.
Wireshark 등의 네트워크 분석 도구를 사용하면 실제 TCP 3-Way Handshake 패킷을 볼 수 있다.
No. Time Source IP Destination IP Protocol Info
1 0.000000 192.168.1.2 203.0.113.1 TCP SYN
2 0.001234 203.0.113.1 192.168.1.2 TCP SYN-ACK
3 0.002345 192.168.1.2 203.0.113.1 TCP ACK
이후, 클라이언트와 서버 간의 실제 데이터 전송이 시작된다.
SYN-ACK을 보낼 때, 상태 정보를 저장하지 않고 클라이언트의 응답을 검증하는 방식.TCP 연결을 종료할 때는 4-Way Handshake가 사용된다.
1. Client → Server : FIN (연결 종료 요청)
2. Client ← Server : ACK (요청 수락)
3. Client ← Server : FIN (서버도 연결 종료 요청)
4. Client → Server : ACK (연결 완전히 종료)
이렇게 서버와 클라이언트 모두 연결 종료를 확인한 후,
TCP 세션이 완전히 종료된다.