3 Way Handshake는 TCP(Transmission Control Protocol) 의 가장 기본적인 과정 중 하나로, 네트워크 상에서 클라이언트와 서버 간에 데이터를 안정적으로 전송하기 위해 연결을 설정하는 과정입니다. 이 과정에서 클라이언트와 서버는 3단계의 패킷 교환을 통해 서로의 데이터를 주고받으며, 이를 통해 신뢰성 있는 연결을 확립하게 됩니다.
3 Way Handshake의 첫 단계에서는 클라이언트가 서버에게 SYN 패킷을 전송합니다. SYN 패킷에는 초기 시퀀스 번호(ISN, Initial Sequence Number)라는 값이 포함되어 있으며, 이 값은 클라이언트가 서버에게 전송할 데이터의 시작 번호를 알려줍니다. 클라이언트가 SYN 패킷을 전송하면, 연결을 시작하겠다는 의미로 해석되어집니다.
서버가 클라이언트로부터 SYN 패킷을 받으면, 클라이언트와의 연결을 수락하겠다는 의미로 SYN-ACK 패킷을 전송합니다. 이때 서버는 자신의 초기 시퀀스 번호를 포함시키고, 클라이언트의 초기 시퀀스 번호에 1을 더한 값을 ACK 번호로 사용하여 클라이언트에게 돌려줍니다. 이렇게 함으로써 서버는 클라이언트의 SYN 패킷을 잘 받았음을 알리고, 동시에 자신의 초기 시퀀스 번호를 전달하는 역할을 합니다.
마지막으로, 클라이언트는 서버로부터 SYN-ACK 패킷을 받고 확인합니다. 이때 클라이언트는 서버가 전달한 초기 시퀀스 번호에 1을 더한 값을 ACK 번호로 사용하여 ACK 패킷을 서버에게 전송합니다. 이렇게 함으로써 클라이언트는 서버의 SYN-ACK 패킷을 잘 받았음을 알리며, 양쪽 모두 초기 시퀀스 번호를 확인하고 연결이 완료된 것으로 간주됩니다.
3 Way Handshake는 클라이언트와 서버 간에 신뢰성 있는 연결을 수립하는 데 필수적인 과정입니다. 이 과정을 통해 양쪽 시스템은 서로의 초기 시퀀스 번호를 교환하고, 데이터 전송을 시작할 준비를 마치게 됩니다. 또한, 3 Way Handshake 과정에서는 패킷의 손실, 중복 및 순서 변경 등의 문제를 방지할 수 있으며, 클라이언트와 서버 간의 안정적인 데이터 전송이 가능해집니다.
3 Way Handshake의 대표적인 활용 사례로 웹 브라우징이 있습니다. 사용자가 웹 브라우저를 통해 특정 웹사이트에 접속할 때, 브라우저(클라이언트)와 웹 서버 간에 3 Way Handshake 과정이 진행됩니다. 이를 통해 양쪽 시스템은 서로의 초기 시퀀스 번호를 확인하고, 데이터 전송을 시작할 준비를 마칩니다. 이후 웹 페이지의 HTML, CSS, 이미지 등의 콘텐츠를 안정적으로 전송받아 사용자에게 보여줄 수 있게 됩니다.
데이터 전송이 완료되고 클라이언트와 서버 간의 연결을 종료할 때에는 4 Way Handshake 과정이 진행됩니다. 이 과정에서는 FIN(Finish) 패킷과 ACK(Acknowledge) 패킷이 교환되며, 양쪽 시스템이 서로에게 연결 종료를 알립니다. 4 Way Handshake를 거치면 클라이언트와 서버는 자원을 회수하고, 다른 연결에 사용할 수 있게 됩니다.
이처럼 3 Way Handshake는 클라이언트와 서버 간의 신뢰성 있는 연결을 구축하는 데 중요한 역할을 하며, 웹 브라우징 등 다양한 인터넷 서비스에서 활용되고 있습니다. 이 과정을 통해 안정적인 데이터 전송이 가능해지며, 사용자들에게 원활한 인터넷 환경을 제공할 수 있습니다.