3-way handshake, 4-way handshake 흐름에 대해서 설명해 주세요.

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

  • 3-way handshake가 TCP의 연결을 초기화할 때 사용한다면, 4-way handshake는 세션을 종료하기 위해 수행되는 절차다.

3-way handshake

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

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

  3. 클라이언트는 서버에게 ACK를 보내고 이후부터는 연결이 이루어지고 데이터가 오가게 되는 것이다. 이때의 서버 상태는 ESTABLISHED이다.

img_4.png

4-way handshake

  1. 클라이언트가 연결을 종료하겠다는 FIN 플래그를 전송한다. 이때 클라이언트는 FIN-WAIT 상태가 된다.

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

  3. 연결을 종료할 준비가 되면, 연결해지를 위한 준비가 되었음을 알리기 위해 클라이언트에게 FIN 플래그를 전송한다. 이때 서버의 상태는 LAST-ACK 이다.

  4. 클라이언트는 해지준비가 되었다는 ACK를 확인했다는 메시지를 보낸다. 클라이언트의 상태가 FIN-WAIT에서 TIME-WAIT으로 변경된다.

img_5.png

Last updated