티스토리 뷰

3 Way-Handshake란?

  • 전송제어 프로토콜(TCP)에서 통신을 하는 장치간 서로 연결이 잘 되어있는지 확인하는 과정/방식이다.
  • 더 쉽게 말해서 송수신자 사이에 연결을 확인하는 과정이다.
  • TCP 프로토콜은 연결지향적이다. 이는 상대방이 내 신호를 받을 수 있는지 확인하고 전송을 하는 것을 의미한다. 이때 내 신호를 받을 수 있는 지 확인하는 것이 3 way handshake이다.

 

 

#1 SYN
1단계: 들려?

 

  • 클라이언트가 연결요청 메시지(SYN)을 전송한다. 클라이언트는 Synchronize Sequence Number(SYN)라는 임의의 랜덤 숫자를 함께 전송한다.

 

#2 SYN+ACK
2단계: 응 들려! 너도 들려?

 

  • 서버가 요청을 수락하며, 클라이언트에게도 들리냐는 연결요청 메시지를 전송한다.
  • 그 메시지에는 Acknowledgement number(ACK)를 포함하고 있으며, 이 번호는 받은 Synchronize Sequence Number(SYN)보다 +1한 값을 가진다. 이 번호를 전송함으로써, 잘 들린다는 것을 알려준다.
  • 그리고 클라이언트에게 전송이 잘되냐고 물어본다. 동일하게 Sequence Number을 전송한다.

 

#3 ACK
3단계: 응 들려!

 

  • 클라이언트가 그 질문이 잘들린다고 Acknowledgement number(ACK)에 받은 Sequence number+1해서 전송한다.

 


요약

3-way handshake는 TCP/IP 프로토콜로 통신하기 전, 정확한 정보 전송을 위해 상대방 컴퓨터와 세션을 수립하는(연결을 하는) 과정이다.(TCP 연결 초기화)

클라이언트가 서버에게 접속을 요청하는 SYN 패킷을 보내면, 서버는 요청을 수락하는 ACK를 포함하여 SYN+ACK 패킷을 클라이언트에게 발송한다. 클라이언트가 이것을 수신한 후, 다시 ACK를 서버에게 발송하면 연결이 이루어지고, 이로써 데이터를 주고받을 수 있게 된다.