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의 연결 지향성 덕분에 신뢰성 있는 통신이 가능 합니다. 🚀
'네트워크 > 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 |