| 요소 | 질문 |
|---|---|
| 신뢰성 | 반드시 도착해야 하는가? |
| 지연 민감도 | 늦게 오는 데이터가 무의미해지는가? |
| 순서 보장 | 순서가 바뀌면 치명적인가? |
| 특성 | 설명 |
|---|---|
| 연결형 | 3-way handshake 후 통신 |
| 신뢰성 | 유실 시 재전송, 순서 보장 |
| 흐름/혼잡 제어 | 네트워크 상태에 맞게 자동 조절 |
| 스트림 | 메시지 경계 없음(길이 기반 파싱 필요) |
| 특성 | 설명 |
|---|---|
| 비연결형 | 연결 수립 없이 전송 가능 |
| 비신뢰성 | 유실/중복/역순 가능 |
| 데이터그램 | 메시지 경계 유지 |
| 오버헤드 낮음 | 지연 민감 데이터에 유리 |
| 항목 | TCP | UDP |
|---|---|---|
| 연결 수립 | 필요 | 불필요(옵션) |
| 신뢰성/순서 | 기본 제공 | 앱에서 구현 |
| 메시지 경계 | 없음(스트림) | 있음(데이터그램) |
| 지연 특성 | 안정적이지만 재전송 영향 | 낮은 지연 가능, 유실 허용 필요 |
| 구현 복잡도 | 상대적으로 낮음 | 상대적으로 높음 |
| 대표 API | connect/send/recv | sendto/recvfrom |
| 데이터 유형 | 우선 요구사항 | 권장 전송 |
|---|---|---|
| 로그인/인증 | 정확성, 재현 가능성 | TCP |
| 인벤토리/재화 | 절대 유실 금지 | TCP |
| 채팅 | 유실보다 보존/순서 중요 | TCP |
| 위치/회전 스냅샷 | 최신성, 저지연 | UDP |
| 총알 트레이스/이펙트 힌트 | 일부 유실 허용 | UDP |
| 매치 결과/보상 확정 | 정확성 | TCP(또는 Reliable 채널) |
| 오해 | 바로잡기 |
|---|---|
| UDP는 무조건 빠르다 | 요구 신뢰성 구현 비용까지 보면 상황 의존 |
| TCP는 실시간 게임에서 못 쓴다 | 데이터 유형에 따라 충분히 핵심 채널로 사용 가능 |
| UDP는 경계 있으니 파싱 고민이 없다 | 버전/길이/검증 필드는 여전히 필요 |