네트워크/TCP

연결 설정 및 해제: 3-way 핸드셰이크

shimdh 2025. 3. 8. 10:58
728x90

TCP(Transmission Control Protocol)는 인터넷을 비롯한 다양한 네트워크 환경에서 신뢰성 있는 데이터 전송을 보장하는 핵심 프로토콜입니다. TCP의 가장 중요한 특징 중 하나는 연결 지향적(Connection-Oriented) 이라는 점으로, 데이터를 전송하기 전에 먼저 송신자와 수신자 간의 연결을 설정하는 과정이 필요합니다.

이러한 연결 설정 과정에서 사용되는 대표적인 기법이 바로 3-way 핸드셰이크(Three-Way Handshake) 입니다. 이 과정은 송신자와 수신자가 서로를 확인하고, 데이터 통신을 안전하게 수행할 수 있도록 하는 필수적인 절차입니다. 또한, TCP 연결이 더 이상 필요하지 않을 때는 적절한 절차를 통해 연결 해제(Four-Way Handshake) 가 이루어집니다.

이번 글에서는 3-way 핸드셰이크의 개념과 동작 원리, 그리고 실제 활용 사례를 통해 TCP 연결 설정 및 해제 과정에 대한 깊이 있는 이해를 제공하겠습니다.


1. 3-way 핸드셰이크란?

3-way 핸드셰이크(Three-Way Handshake) 는 TCP 연결을 설정하기 위해 클라이언트와 서버가 세 번의 메시지를 주고받는 과정을 의미합니다. 이 과정을 통해 송신자와 수신자는 서로의 존재를 확인하고, 데이터 전송을 위한 준비가 완료되었음을 보장합니다.

3-way 핸드셰이크의 과정

  1. SYN (Synchronize) - 클라이언트 → 서버

    • 클라이언트가 서버에 연결 요청을 보내며, SYN 플래그가 설정된 TCP 패킷을 전송합니다.
    • 이 과정에서 클라이언트는 초기 순서 번호(Sequence Number)를 포함하여, 서버와 데이터를 주고받을 준비가 되었음을 알립니다.
  2. SYN-ACK (Synchronize-Acknowledge) - 서버 → 클라이언트

    • 서버는 클라이언트의 요청을 수락하고, SYN-ACK 플래그가 설정된 TCP 패킷을 응답으로 보냅니다.
    • 이때 서버도 자체적인 초기 순서 번호를 포함하여 클라이언트와 연결을 맺을 준비가 되었음을 알립니다.
  3. ACK (Acknowledge) - 클라이언트 → 서버

    • 클라이언트는 서버의 응답을 확인하고, 최종적으로 ACK 플래그가 설정된 패킷을 전송하여 연결을 완료합니다.
    • 이제 클라이언트와 서버는 데이터 통신을 위한 완전한 연결 상태(Established) 가 되며, 이후 데이터 전송이 이루어질 수 있습니다.

2. 3-way 핸드셰이크의 구체적인 과정

(1) 클라이언트 → 서버: SYN 전송

  • 예를 들어, 사용자가 웹 브라우저에서 https://example.com을 입력하고 접속하려고 하면, 브라우저(클라이언트)는 서버(example.com)에 TCP 연결을 요청합니다.
  • 이때 클라이언트는 SYN 플래그가 설정된 패킷을 서버로 전송하며, 초기 순서 번호(Sequence Number)를 포함합니다.

(2) 서버 → 클라이언트: SYN-ACK 전송

  • 서버는 클라이언트의 요청을 수락하면, 응답으로 SYN-ACK 패킷을 보냅니다.
  • 이 패킷에는 서버의 초기 순서 번호와 클라이언트의 요청을 승인했다는 정보가 포함됩니다.

(3) 클라이언트 → 서버: 최종 ACK 전송

  • 클라이언트는 서버의 SYN-ACK 패킷을 수신한 후, 최종적으로 ACK 패킷을 서버에 보냅니다.
  • 이로써 클라이언트와 서버 간의 TCP 연결이 성립되었으며, 이후 데이터 전송이 가능한 상태가 됩니다.

3. 실생활 예시

3-way 핸드셰이크는 일상생활에서 친구와 약속을 잡는 과정과 비슷하게 설명할 수 있습니다.

친구와 약속 잡기 (3-way 핸드셰이크 비유)

  1. 첫 번째 메시지 (SYN):
    • 당신이 친구에게 "우리 만날까?"라고 메시지를 보냅니다.
  2. 두 번째 메시지 (SYN-ACK):
    • 친구가 "좋아, 나도 만나고 싶어!"라고 응답합니다.
  3. 세 번째 메시지 (ACK):
    • 당신이 "그럼 시간과 장소를 정하자!"라고 확정하며 약속이 성립됩니다.

이처럼 상대방이 준비되었는지 확인하고, 응답을 받은 후 최종 확정을 짓는 과정이 TCP 3-way 핸드셰이크와 매우 유사합니다.


4. 연결 해제: 4-way 핸드셰이크

연결을 설정한 이후, 더 이상 데이터 전송이 필요하지 않을 경우 TCP 연결 해제 과정이 필요합니다. TCP는 이를 위해 4-way 핸드셰이크(Four-Way Handshake) 를 사용합니다.

4-way 핸드셰이크 과정

  1. FIN (Finish) - 클라이언트 → 서버
    • 클라이언트가 "이제 데이터를 더 이상 보내지 않겠다"는 FIN 패킷을 서버에 보냅니다.
  2. ACK (Acknowledge) - 서버 → 클라이언트
    • 서버가 이를 확인하고 ACK 응답을 보냅니다.
  3. FIN (Finish) - 서버 → 클라이언트
    • 서버도 "나도 더 이상 데이터를 보낼 필요가 없다"며 FIN 패킷을 보냅니다.
  4. ACK (Acknowledge) - 클라이언트 → 서버
    • 클라이언트가 이를 확인하고 ACK 응답을 보낸 후 연결이 종료됩니다.

이 과정을 통해 TCP는 양방향으로 데이터 전송이 모두 완료되었음을 보장하고, 안전하게 연결을 해제합니다.


5. 결론

TCP의 3-way 핸드셰이크는 데이터 전송의 신뢰성을 보장하기 위한 필수적인 연결 과정입니다. 이를 통해 송신자와 수신자는 서로를 확인하고, 데이터 통신이 원활하게 진행될 수 있도록 준비합니다.

또한, 데이터 전송이 끝난 후에는 4-way 핸드셰이크를 통해 안전하게 연결을 종료하여 불필요한 네트워크 리소스 사용을 방지합니다.

이러한 과정 덕분에 TCP는 웹 브라우징, 이메일 송수신, 파일 다운로드, 온라인 게임 등 다양한 네트워크 환경에서 안정적인 통신을 보장할 수 있습니다.

🔹 주요 포인트 요약

✔ TCP는 신뢰성 있는 데이터 전송을 위해 연결 설정(3-way 핸드셰이크)연결 해제(4-way 핸드셰이크) 과정을 수행
✔ 3-way 핸드셰이크는 SYN → SYN-ACK → ACK 순서로 진행
✔ 데이터 전송 후, 4-way 핸드셰이크를 통해 연결을 안전하게 종료
✔ 실생활의 약속 잡기와 비슷한 개념으로 이해할 수 있음
✔ 웹 브라우징, 이메일, 온라인 게임 등 다양한 서비스에서 필수적으로 사용됨

이해하기 쉬운 개념과 실제 적용 사례를 통해 TCP의 연결 설정 및 해제 과정이 왜 중요한지, 어떻게 작동하는지를 명확하게 파악할 수 있습니다.

728x90