본문 바로가기
비전공자 면접에서 살아남기

3-way hand shake, 4-way handshake의 흐름

by 앵즌 2025. 3. 19.

TCP 3 Way Handshake

TCP/IP 프로토콜을 이용해서 통신을 하는 응용프로그램이 데이터를 전송하기 전에 먼저 정확한 전송을 보장하기 위해 상대방 컴퓨터와 사전에 세션을 수립하는 과정을 말합니다.

 

3-Way handshake는 TCP의 연결을 초기화 할 때 사용한다면. 4-Way handshake는 세션을 종료하기 위해 사용되는 절차 입니다.

 

각각의 절차는 아래와 같습니다.

 

3 Way Handshake

[Step 1]

A 클라이언트는 B 서버에 접속을 요청하는 SYN패킷을 보냅니다. 이때 A 클라이언트는 SYN을 보내고 SYN/ACK 응답을 기다리는 SYN_SENT 상태, B 서버는 Wait for Client 상태 입니다.

 

[Step 2]

B 서버는 SYN요청을 받고 A 클라이언트에게 요청을 수락한다는 ACK와 SYN flag가 설정된 패킷을 발송하고 A가 다시 ACK으로 응답하기를 기다립니다. 이때 B서버는 SYN_RECEIVED 상태가 됩니다. 

 

[Step 3]

A 클라이언트는 B 서버에게 ACK을 보내고 이후로부터는 연결이 이루어지고 데이터가 오가게 되는 것 입니다. 

이때의 B 서버 상태가 ESTABLISHED 상태 입니다.

 

4-way handshake

[Step 1]

클라이언트가 연결을 종료하겠다는 FIN 플래그를 던집니다. 이때 A 클라이언트는 FIN-WAIT 상태가 됩니다.

 

[Step 2]

B 서버는 FIN 플래그를 받고, 일단 확인 메세지 ACK 보내고 자신의 통신이 끝날 때 까지 기다리는데 이 상태가 B 서버의 CLOSE_WAIT 상태 입니다.

 

[Step 3]

연결을 종료할 준비가 되면 , 연결해지를 위한 준비가 되었음을 알리기 위해 클라이언트에게 FIN 플래그를 전송합니다. 

이때 B 서버의 상태는 LAST_ASK 상태 입니다. 

 

[Step 4]

클라이언트는 해지 준비가 되었다는 ACK를 확인했다는 메세지를 보냅니다. 즉 A 클라이언트 상태가 FIN-WAIT -> TIME-WAIT으로 변경됩니다.