TCP와 UDP는 모두 전송 계층(Transport Layer)에 속하는 프로토콜이며, 네트워크 상에서 데이터를 송수신할 때 각각의 목적과 특성에 따라 선택적으로 사용됩니다. 이 둘은 설계 철학이 매우 다르며, 안정성과 속도를 놓고 절충하는 구조입니다.
1. 기본 개념
| 항목 | TCP (Transmission Control Protocol) | UDP (User Datagram Protocol) |
| 연결 방식 | 연결지향(Connection-Oriented) | 비연결지향(Connectionless) |
| 신뢰성 | 보장됨 (패킷 손실시 재전송) | 보장 안됨 (손실 무시) |
| 순서 보장 | O (전송 순서 유지) | X (순서 보장 안함) |
| 흐름 제어 | 있음 | 없음 |
| 오류 검사 | 있음 | 있음 (간단함) |
| 속도 | 상대적으로 느림 | 매우 빠름 |
| 용도 | 파일 전송, 웹, 이메일 등 | 실시간 스트리밍, 게임, DNS 등 |
2. TCP의 주요 특징
TCP는 데이터의 정확성과 순서를 중시합니다. 주요 동작은 다음과 같습니다:
- 3-Way Handshake: 연결을 시작하기 위해 송신자와 수신자가 세 단계의 과정을 통해 연결을 확립합니다.
- 패킷 순서 보장: 패킷에 순서 번호(Sequence Number)를 부여하여 순서대로 재조립합니다.
- 패킷 손실 처리: 수신자가 ACK(수신 확인)를 하지 않으면 재전송합니다.
- 흐름 제어: 수신자의 버퍼 상태를 고려하여 전송 속도를 조절합니다.
- 혼잡 제어: 네트워크의 혼잡 상황을 감지하고 스스로 트래픽을 줄이는 알고리즘(Congestion Control)을 포함합니다.
→ 결과적으로, 신뢰성이 높은 대신 지연이 발생할 수 있습니다.
3. UDP의 주요 특징
UDP는 빠른 전송을 우선시하는 프로토콜입니다:
- 연결 없음: 송신자는 수신자의 준비 여부를 확인하지 않고 바로 전송합니다.
- 오버헤드 없음: 연결 설정/유지 절차가 없으므로 빠릅니다.
- 손실 무시: 패킷이 손실되어도 재전송하지 않으며, 순서도 보장하지 않습니다.
→ 결과적으로, 실시간성은 높지만 신뢰성이 떨어지는 구조입니다.
4. 사용 예시
- TCP 사용 사례
- 웹 브라우징(HTTP, HTTPS)
- 이메일 전송(SMTP, IMAP, POP3)
- 파일 다운로드(FTP)
- UDP 사용 사례
- 온라인 게임
- 음성/영상 스트리밍(VoIP, IPTV)
- DNS 요청
5. 결론 및 선택 기준
- 데이터의 신뢰성과 순서가 중요할 때: TCP
- 예: “은행 거래, 웹페이지 불러오기, 로그인 요청”
- 실시간성과 속도가 더 중요할 때: UDP
- 예: “총소리가 밀리면 안 되는 FPS 게임, 화상 회의”
TCP는 정확성을, UDP는 속도를 최우선으로 합니다. 따라서 네트워크 설계 시 사용 목적에 따라 신중한 선택이 필요합니다.
'소프트웨어 공학 > 코딩' 카테고리의 다른 글
| 유니티 클래스 필드 초기화 시점(Awake 이전)에 가능/불가능한 작업 (0) | 2025.04.30 |
|---|---|
| Unity] HealthBar 최적화 (0) | 2025.04.28 |
| 리플렉션 Reflection (0) | 2025.04.24 |
| 박싱과 언박싱에 메모리에서 일어나는 과정 (0) | 2025.04.23 |
| Unity] GetComponent를 최소한으로 사용해야하는 이유 (0) | 2025.04.22 |