TCP 3-way Handshake 쉽게 이해하기 (인터넷 연결의 시작 과정)

인터넷을 사용할 때 우리는 단순히 웹사이트에 접속한다고 생각하지만, 실제로는 그 이전에 중요한 연결 과정이 먼저 이루어집니다. 바로 TCP 연결입니다. 그리고 이 TCP 연결을 만들기 위해 반드시 거쳐야 하는 과정이 바로 3-way handshake입니다.

이 과정은 클라이언트와 서버가 서로 신뢰할 수 있는 연결을 설정하기 위한 절차로, 안정적인 데이터 통신의 시작점이라고 할 수 있습니다. 이번 글에서는 TCP 3-way handshake가 무엇인지, 왜 필요한지, 그리고 어떻게 동작하는지를 쉽게 설명해보겠습니다.


TCP란 무엇인가

TCP(Transmission Control Protocol)는 인터넷에서 데이터를 안정적으로 전달하기 위한 프로토콜입니다. 데이터가 손실되거나 순서가 바뀌지 않도록 보장하는 것이 가장 큰 특징입니다.

TCP는 연결 지향 방식으로 동작합니다. 즉, 데이터를 보내기 전에 반드시 연결을 먼저 설정해야 합니다. 이때 사용하는 과정이 바로 3-way handshake입니다.


3-way Handshake란 무엇인가

3-way handshake는 클라이언트와 서버가 서로 통신 준비가 되었는지 확인하는 과정입니다. 이름 그대로 세 번의 신호를 주고받으며 연결을 설정합니다.

이 과정을 통해 양쪽 모두가 데이터를 주고받을 준비가 되었음을 확인합니다.


3-way Handshake 동작 과정

전체 과정은 다음 세 단계로 이루어집니다.


1. SYN (연결 요청)

클라이언트가 서버에 연결을 요청합니다.

  • 클라이언트 → 서버
  • SYN 패킷 전송
  • “연결하고 싶습니다”라는 의미

이 단계는 연결을 시작하는 첫 번째 신호입니다.


2. SYN + ACK (요청 수락)

서버가 클라이언트의 요청을 받아들이고 응답합니다.

  • 서버 → 클라이언트
  • SYN + ACK 패킷 전송
  • “요청을 확인했고, 나도 준비되었습니다”라는 의미

서버는 클라이언트의 요청을 승인하면서 동시에 자신의 상태도 전달합니다.


3. ACK (응답 확인)

클라이언트가 서버의 응답을 확인합니다.

  • 클라이언트 → 서버
  • ACK 패킷 전송
  • “응답을 확인했습니다”라는 의미

이 단계가 완료되면 양쪽 모두 연결이 완료되었다고 판단하고, 데이터 전송이 시작됩니다.


왜 3단계가 필요한가

단순히 한 번의 요청으로 연결을 만들 수도 있을 것처럼 보이지만, 실제로는 그렇지 않습니다. 3-way handshake는 다음과 같은 이유로 필요합니다.


1. 양방향 통신 확인

단순히 요청만 보내는 것이 아니라, 서로가 데이터를 주고받을 준비가 되었는지 확인해야 합니다.


2. 신뢰성 확보

네트워크 환경에서는 패킷 손실이나 지연이 발생할 수 있습니다. 여러 단계의 확인 과정을 통해 안정적인 연결을 보장합니다.


3. 잘못된 연결 방지

이전 연결에서 남아 있는 패킷이 잘못 전달되는 상황을 방지할 수 있습니다.


4-way Handshake와의 차이

3-way handshake는 연결을 생성할 때 사용되고, 연결을 종료할 때는 4-way handshake가 사용됩니다.

연결 종료 과정에서는 각 방향의 통신을 각각 종료해야 하기 때문에 총 4단계가 필요합니다.


실생활 비유로 이해하기

3-way handshake는 전화 연결 과정과 비슷합니다.

  1. “여보세요?” (SYN)
  2. “네, 들려요” (SYN + ACK)
  3. “좋아요, 통화 시작합시다” (ACK)

이 과정을 통해 서로 통화가 가능한 상태인지 확인하는 것과 같습니다.


3-way Handshake가 중요한 이유

이 과정은 인터넷 통신의 안정성을 보장하는 핵심 요소입니다.

  • 데이터 손실 방지
  • 순서 보장
  • 안정적인 연결 유지

특히 웹사이트 접속, 파일 다운로드, 이메일 전송 등 거의 모든 인터넷 활동에서 사용됩니다.


연결 과정에서 발생할 수 있는 문제

3-way handshake 과정에서 문제가 발생하면 다음과 같은 현상이 나타날 수 있습니다.

  • 웹사이트 접속 지연
  • 연결 실패
  • 타임아웃 발생

예를 들어 서버가 SYN 요청에 응답하지 않으면 연결이 성립되지 않습니다.


정리

TCP 3-way handshake는 안정적인 통신을 위한 필수 과정입니다.

  • SYN: 연결 요청
  • SYN + ACK: 요청 수락
  • ACK: 확인

이 세 단계를 통해 클라이언트와 서버는 서로 준비 상태를 확인하고 안전하게 데이터를 주고받을 수 있습니다.

인터넷이 안정적으로 동작하는 이유는 이러한 기본적인 통신 구조 덕분입니다.


다음 글에서는 REST API와 GraphQL의 차이에 대해 쉽게 설명해보겠습니다.

댓글 남기기