네트워크/TCP

TCP 연결 설정: 연결 설정 과정

shimdh 2025. 3. 9. 00:12
728x90

TCP(Transmission Control Protocol)는 인터넷에서 신뢰성 있는 데이터 전송을 보장하는 핵심 프로토콜입니다.
네트워크에서 데이터를 송수신할 때, 송신자와 수신자가 서로의 상태를 확인하고 연결을 설정하는 과정이 필수적이며,
이를 TCP의 연결 설정 과정(Connection Establishment) 이라고 합니다.

이 과정에서 3-way 핸드셰이크(Three-Way Handshake) 가 사용되며,
이는 두 장치가 원활한 데이터 교환을 시작하기 전에 서로를 식별하고 통신할 준비를 하는 과정입니다.

이 글에서는 TCP 연결 설정의 중요성, 3-way 핸드셰이크의 동작 원리, 그리고 실생활 예제를 통해
TCP가 어떻게 안정적인 통신을 보장하는지 살펴보겠습니다.


1. 연결 설정의 중요성

TCP 연결 설정 과정은 단순한 연결 이상의 의미를 가지며,
다음과 같은 핵심적인 기능을 수행합니다.

🔹 1) 상태 동기화(State Synchronization)

  • 클라이언트와 서버가 서로의 상태를 확인하고, 데이터 전송을 위한 조건이 충족되었는지 검증하는 과정.
  • 서버가 준비되지 않은 상태에서 데이터가 전송되는 것을 방지.

🔹 2) 시퀀스 번호 초기화(Sequence Number Initialization)

  • TCP 통신에서 각 패킷이 올바른 순서로 도착하도록 관리하기 위해, 각 연결마다 고유한 시퀀스 번호(ISN, Initial Sequence Number)를 설정.
  • 이를 통해 패킷이 중복되거나 손실되는 것을 방지하고, 정확한 데이터 순서를 유지할 수 있음.

🔹 3) 전송 속도 조정(Flow Control & Congestion Control)

  • 송수신 측 간의 네트워크 속도를 조정하여 최적의 데이터 전송 속도를 설정.
  • 혼잡한 네트워크 환경에서도 데이터 전송이 원활하게 이루어질 수 있도록 TCP는 흐름 제어(Flow Control) 및 혼잡 제어(Congestion Control) 기능을 적용.

결과:
TCP의 연결 설정 과정을 통해 데이터 손실을 최소화하고, 패킷의 순서를 보장하며, 효율적인 네트워크 자원 활용을 가능하게 함.


2. 3-way 핸드셰이크 과정

TCP 연결 설정은 3-way 핸드셰이크(Three-Way Handshake) 과정을 통해 수행됩니다.
이 과정은 클라이언트(데이터를 요청하는 장치)와 서버(데이터를 제공하는 장치) 간에 세 번의 패킷 교환을 통해 이루어짐.

🔹 3-way 핸드셰이크 과정

1️⃣ SYN (Synchronize) – 클라이언트의 연결 요청

  • 클라이언트가 서버에게 연결 요청 메시지(SYN 패킷)를 전송.
  • 초기 시퀀스 번호(ISN)를 포함하여, 서버와 통신할 준비가 되었음을 알림.
  • 이 패킷을 받은 서버는 클라이언트의 요청을 확인하고 응답해야 함.

예시

  • 사용자가 웹사이트에 접속하면, 브라우저(클라이언트)는 해당 웹사이트의 서버에 SYN 패킷을 보냄.
  • "안녕하세요 서버님, 저와 연결하시겠습니까? 제 시퀀스 번호는 X입니다!"

2️⃣ SYN-ACK (Synchronize-Acknowledge) – 서버의 응답

  • 서버는 클라이언트의 요청을 확인한 후, 자신의 초기 시퀀스 번호(ISN)를 포함한 SYN-ACK 패킷을 전송.
  • 클라이언트의 요청을 수락했음을 알리는 동시에, 서버도 통신을 시작할 준비가 되었음을 알림.

예시

  • 웹 서버가 클라이언트의 요청을 확인하고 응답.
  • "반갑습니다 클라이언트님! 저는 연결할 준비가 되었습니다. 제 시퀀스 번호는 Y입니다! 또한, 방금 보낸 X도 확인했어요."

3️⃣ ACK (Acknowledge) – 클라이언트의 최종 확인

  • 클라이언트는 서버의 응답(SYN-ACK 패킷)을 수락했다는 의미로, 최종적으로 ACK 패킷을 전송.
  • 이 패킷을 받은 서버는 이제 실제 데이터 전송을 시작할 수 있음.

예시

  • 클라이언트가 서버의 응답을 확인하고, 최종적으로 연결을 확립.
  • "확인했습니다 서버님! 이제 데이터를 주고받을 준비가 끝났습니다!"

결과:

  • TCP 연결이 성공적으로 설정됨.
  • 이후 클라이언트와 서버는 본격적인 데이터 교환(예: HTTP 요청 및 응답)을 시작.

3. 실생활에서의 비유

TCP의 3-way 핸드셰이크 과정은 친구와 약속을 잡는 것과 유사합니다.

🔹 친구와 약속 잡기

1️⃣ SYN 단계 – 당신이 친구에게 약속을 제안

  • "우리 이번 주 토요일에 만나서 점심 먹을까?"
  • (클라이언트가 서버에게 연결 요청을 보냄)

2️⃣ SYN-ACK 단계 – 친구가 응답하며 약속을 확정

  • "좋아! 나도 토요일에 시간이 돼. 어디서 만날지 정하자!"
  • (서버가 클라이언트의 요청을 수락하고 응답을 보냄)

3️⃣ ACK 단계 – 당신이 최종적으로 약속을 확정

  • "알겠어, 그럼 토요일 12시에 만나자!"
  • (클라이언트가 서버의 응답을 확인하고 최종적으로 연결을 확립)

결과:

  • 두 사람이 약속을 확정했으며, 이제 약속된 시간에 만나기만 하면 됨.
  • 즉, TCP 연결이 설정되었으며, 이후 실제 데이터 전송이 진행될 준비가 완료됨.

4. 연결 설정 이후의 과정

3-way 핸드셰이크가 완료되면,
TCP는 데이터 패킷을 안정적으로 전송하는 과정(TCP 데이터 전송 단계)을 시작합니다.

연결 설정 이후 진행되는 과정

  1. 데이터 전송(Data Transmission)
    • 실제 웹 페이지, 이메일, 파일 등의 데이터가 송수신됨.
  2. 데이터 무결성 검증(Error Detection & Retransmission)
    • 패킷 손실이 발생하면 재전송을 통해 복구됨.
  3. 연결 해제(TCP 4-way 핸드셰이크)
    • 통신이 완료되면 TCP 연결이 안전하게 종료됨.

5. 결론

TCP의 연결 설정 과정은 안정적인 데이터 전송을 위한 필수적인 절차
3-way 핸드셰이크를 통해 클라이언트와 서버 간의 상태를 동기화하고, 신뢰성 있는 데이터 전송을 보장
웹사이트 접속, 파일 다운로드, 이메일 송수신 등 다양한 인터넷 서비스에서 사용됨

💡 "TCP의 연결 설정은 단순한 과정이 아니라, 신뢰성 있는 네트워크 환경을 구축하는 핵심 기술이다!"

728x90