네트워크/TCP

TCP의 특징: 연결 지향성

shimdh 2025. 3. 7. 09:30
728x90

TCP(Transmission Control Protocol) 는 인터넷에서 데이터를 신뢰성 있게 전송하는 데 필수적인 프로토콜입니다. 여러 가지 중요한 특성을 가지지만, 그중에서도 연결 지향성(Connection-Oriented Communication) 은 TCP의 핵심적인 개념 중 하나입니다. 연결 지향성이란 데이터를 전송하기 전에 먼저 송신자와 수신자가 신뢰할 수 있는 연결을 설정해야 한다는 원칙을 의미합니다. 이는 데이터의 무결성을 보장하고, 순차적인 전송을 가능하게 하며, 안정적인 통신을 가능하게 합니다.


1. 연결 지향성이란?

정의
연결 지향성이란 두 장치 간의 신뢰할 수 있는 연결이 사전에 설정된 상태에서만 데이터가 전송되는 방식을 의미합니다. TCP는 데이터 전송 전에 반드시 송신자와 수신자가 연결을 확립하고, 데이터 전송이 끝난 후에는 명확한 종료 절차를 수행합니다.

비유적 설명
연결 지향성은 마치 전화 통화와 비슷합니다.

  • 통화를 하기 위해서는 먼저 전화를 걸고 상대방이 받는 과정이 필요합니다.
  • 대화가 시작되면 메시지를 주고받을 수 있으며, 도중에 신호가 끊기면 다시 연결해야 합니다.
  • 대화가 끝나면 상대방과 작별 인사를 하고 전화를 끊어야 합니다.
    TCP의 연결 방식도 이와 동일하게, 연결 설정 → 데이터 전송 → 연결 종료 의 절차를 따릅니다.

2. 연결 설정 과정: 3-Way Handshake

TCP에서 신뢰할 수 있는 연결을 설정하는 과정은 3-way 핸드셰이크(Three-Way Handshake) 라고 불립니다. 이 과정은 클라이언트와 서버가 서로 통신할 준비가 되었음을 확인하는 역할을 합니다.

🔹 핸드셰이크 과정 상세 설명
1️⃣ SYN(Synchronize) 패킷 전송

  • 클라이언트가 서버에게 연결 요청을 보냅니다.
  • 예시: *"안녕하세요, 연결해도 될까요?"*

2️⃣ SYN-ACK(Synchronize-Acknowledge) 패킷 응답

  • 서버가 클라이언트의 요청을 수락하고, 자신도 연결할 준비가 되었음을 알립니다.
  • 예시: *"네, 연결 가능해요. 준비되었습니다!"*

3️⃣ ACK(Acknowledge) 패킷 전송

  • 클라이언트가 마지막으로 서버의 응답을 확인하고, 연결이 성립됩니다.
  • 예시: *"좋아요, 이제 데이터 주고받아요!"*

📌 예제 (3-Way Handshake 과정의 실제 패킷 흐름)

1. 클라이언트 → 서버  [SYN]      "연결 요청 (SYN)"
2. 서버 → 클라이언트  [SYN-ACK]  "요청 수락 및 확인 (SYN-ACK)"
3. 클라이언트 → 서버  [ACK]      "확인 완료 (ACK)"

이 과정을 거친 후 TCP 연결이 성공적으로 설정되며, 이후 데이터 전송이 가능해집니다.


3. 실용적인 예제: 웹 브라우저에서의 TCP 연결 과정

웹사이트를 방문할 때 TCP의 연결 지향성이 어떻게 작동하는지 단계별로 살펴보겠습니다.

📌 예제: 웹 브라우저를 통해 웹사이트 접속하기

1️⃣ 사용자가 웹 브라우저에서 URL을 입력하고 "Enter" 키를 누름

  • 브라우저는 해당 웹사이트의 서버와 TCP 연결을 설정하기 위해 3-way 핸드셰이크를 수행합니다.

2️⃣ TCP 연결 설정 (3-way 핸드셰이크 과정 진행)

  • 브라우저(클라이언트)는 서버에 SYN 패킷을 보내 연결 요청을 합니다.
  • 서버는 SYN-ACK 응답을 보내 연결 요청을 수락합니다.
  • 브라우저는 ACK 패킷을 다시 보내면서 연결이 확립됩니다.

3️⃣ 데이터 요청 및 전송

  • TCP 연결이 성립된 후, 브라우저는 HTTP 요청(GET /index.html)을 보냅니다.
  • 서버는 요청된 데이터를 TCP 패킷에 담아 전송합니다.
  • 브라우저는 데이터를 받아 웹사이트를 렌더링하여 사용자에게 보여줍니다.

4️⃣ 연결 종료 (4-way 핸드셰이크 수행)

  • 데이터 전송이 완료되면, 브라우저와 서버는 TCP 연결을 종료하기 위해 4-way 핸드셰이크 절차를 거칩니다.
  • 이렇게 TCP는 명확한 연결 설정 및 종료 과정 덕분에 안정적인 통신을 보장합니다.

4. TCP의 연결 지향성이 중요한 이유

TCP의 연결 지향성은 데이터 신뢰성과 무결성 을 보장하는 데 필수적입니다. TCP가 이를 보장하는 방식은 다음과 같습니다.

데이터 무결성(Integrity) 보장

  • 데이터를 전송할 때 오류가 발생하면 재전송(Retransmission) 이 이루어지므로 손실이 방지됩니다.
  • TCP는 패킷마다 체크섬(Checksum) 을 포함하여 데이터가 손상되지 않았는지 검증합니다.

데이터 순서 보장

  • TCP는 각 데이터 패킷에 시퀀스 번호(Sequence Number) 를 부여하여 순서대로 도착 하도록 관리합니다.
  • 데이터가 올바른 순서로 정렬되지 않으면, TCP가 자동으로 패킷을 재정렬합니다.

신뢰성 있는 전송

  • 수신 측에서 데이터 패킷을 정상적으로 수신했는지 확인하기 위해 ACK 패킷(확인 응답) 을 보냅니다.
  • 만약 응답이 없으면 TCP는 해당 데이터를 재전송 합니다.

흐름 제어(Flow Control) 및 혼잡 제어(Congestion Control)

  • 송신자가 너무 많은 데이터를 보내서 수신자가 감당하지 못하는 상황을 방지하기 위해 윈도우 크기(Window Size) 를 조정합니다.
  • 네트워크가 혼잡해지면 전송 속도를 자동으로 조절하여 네트워크 과부하를 방지합니다.

5. 결론

TCP의 연결 지향성(Connection-Oriented Communication) 은 신뢰성 있는 데이터 전송을 보장하는 핵심 개념입니다. 이를 통해 TCP는 데이터 무결성, 순서 보장, 신뢰성 있는 전송, 흐름 및 혼잡 제어 기능을 수행하며, 현대 인터넷 통신에서 필수적인 역할을 합니다.

🔹 요약: TCP의 연결 지향성이 중요한 이유

✅ 3-way 핸드셰이크를 통해 신뢰할 수 있는 연결을 설정
✅ 데이터 전송 중 오류가 발생하면 자동으로 재전송 수행
✅ 패킷의 순서를 보장하여 올바른 데이터 전달 보장
✅ 흐름 제어 및 혼잡 제어를 통해 네트워크 자원을 효율적으로 사용

웹 브라우징, 이메일, 파일 다운로드, 온라인 게임 등 다양한 인터넷 서비스에서 TCP의 연결 지향성 덕분에 신뢰성 있는 통신이 가능 합니다. 🚀

728x90

'네트워크 > TCP' 카테고리의 다른 글

TCP의 특징: 혼잡 제어  (0) 2025.03.07
TCP의 특징: 흐름 제어  (1) 2025.03.07
TCP의 특징: 신뢰성  (0) 2025.03.07
TCP 개요: TCP의 역사  (0) 2025.03.07
TCP 개요: TCP의 정의  (0) 2025.03.07