먼저 결론: "무엇이 더 좋다"가 아니라 "무엇에 맞다"

핵심 관점

  • TCP/UDP는 우열 관계가 아니라 요구사항 적합성 문제입니다.
  • 질문은 "빠른가?"보다 "유실/순서/지연 중 무엇이 더 중요한가?"입니다.
  • 게임 서버는 대부분 TCP만 쓰거나 UDP만 쓰기보다 혼합 전략을 씁니다.

판단 3요소

요소질문
신뢰성반드시 도착해야 하는가?
지연 민감도늦게 오는 데이터가 무의미해지는가?
순서 보장순서가 바뀌면 치명적인가?

TCP (Transmission Control Protocol)

특징 정리

특성설명
연결형3-way handshake 후 통신
신뢰성유실 시 재전송, 순서 보장
흐름/혼잡 제어네트워크 상태에 맞게 자동 조절
스트림메시지 경계 없음(길이 기반 파싱 필요)

장점과 비용

  • 장점: 중요한 데이터(로그인, 인벤토리, 거래)에 안정적
  • 비용: 재전송/순서 보장 때문에 지연이 늘 수 있음
  • 대표 현상: 선행 패킷 손실 시 뒤 패킷 처리도 지연되는 HOL(Head-of-Line) 영향

게임 적용 예

  • 로그인/인증, 아이템 지급, 퀘스트 완료, 채팅 저장 등 "정확성 우선" 데이터

UDP (User Datagram Protocol)

특징 정리

특성설명
비연결형연결 수립 없이 전송 가능
비신뢰성유실/중복/역순 가능
데이터그램메시지 경계 유지
오버헤드 낮음지연 민감 데이터에 유리

장점과 비용

  • 장점: 최신 상태가 중요한 실시간 데이터에 유리
  • 비용: 신뢰성/순서/재전송/중복 제거를 앱이 직접 설계해야 함
  • 추가 주의: UDP 패킷이 너무 크면 IP 단편화로 손실 위험이 커집니다.

게임 적용 예

  • 위치/회전/조준/짧은 상태 업데이트, 음성 채팅 같은 "늦으면 가치가 떨어지는" 데이터

TCP vs UDP 실무 비교표

항목TCPUDP
연결 수립필요불필요(옵션)
신뢰성/순서기본 제공앱에서 구현
메시지 경계없음(스트림)있음(데이터그램)
지연 특성안정적이지만 재전송 영향낮은 지연 가능, 유실 허용 필요
구현 복잡도상대적으로 낮음상대적으로 높음
대표 APIconnect/send/recvsendto/recvfrom

오해 교정

  • "UDP가 항상 빠르다"는 절반만 맞습니다.
  • 유실 복구/순서 정렬을 앱에서 많이 붙이면 UDP 구현도 복잡/무거워질 수 있습니다.
  • "TCP는 게임에 못 쓴다"도 오해입니다. MMO 핵심 로직은 TCP 기반인 경우가 많습니다.

게임 데이터 유형별 선택 가이드

데이터 유형우선 요구사항권장 전송
로그인/인증정확성, 재현 가능성TCP
인벤토리/재화절대 유실 금지TCP
채팅유실보다 보존/순서 중요TCP
위치/회전 스냅샷최신성, 저지연UDP
총알 트레이스/이펙트 힌트일부 유실 허용UDP
매치 결과/보상 확정정확성TCP(또는 Reliable 채널)

핵심 원칙

  • 늦게 와도 꼭 처리해야 하면 TCP 성향
  • 늦으면 버리고 최신값만 중요하면 UDP 성향
  • 중요한 이벤트는 UDP라도 별도 신뢰 채널을 추가할 수 있습니다.

하이브리드 구조(현업 기본 패턴)

대표 구조

  • TCP 채널: 인증/상태 동기화/영속 데이터
  • UDP 채널: 프레임 단위 위치/회전/입력 힌트

설계 포인트

  • 동일 세션 식별자(토큰)를 TCP/UDP 양쪽에 연결
  • UDP 패킷에는 sequence/timestamp를 넣어 오래된 패킷 폐기
  • 신뢰 필요 이벤트는 TCP로 승격하거나 UDP 위 Reliable 계층 추가

운영 포인트

  • NAT/방화벽 환경에서 UDP 제약이 있을 수 있어 fallback 전략(TCP-only 모드) 고려

강의 시 유의사항

강조 포인트

  • 면접 단골이지만 암기형보다 "선택 근거" 중심으로 설명하세요.
  • TCP/UDP는 프로토콜 이름이 아니라 요구사항 매칭 도구라고 강조하세요.
  • Part 9(패킷 포맷), Part 18(IOCP)와 연결해 설명하면 전체 구조 이해도가 올라갑니다.

자주 하는 오해

오해바로잡기
UDP는 무조건 빠르다요구 신뢰성 구현 비용까지 보면 상황 의존
TCP는 실시간 게임에서 못 쓴다데이터 유형에 따라 충분히 핵심 채널로 사용 가능
UDP는 경계 있으니 파싱 고민이 없다버전/길이/검증 필드는 여전히 필요

체크 질문 (스스로 답해보기)

  • 위치 업데이트와 인벤토리 저장은 왜 서로 다른 전송 전략이 필요한가?
  • HOL 영향이 게임 체감 지연에 어떤 방식으로 나타나는가?
  • 하이브리드(TCP+UDP) 설계에서 세션 식별을 어떻게 맞출 것인가?

profile
李家네_공부방

0개의 댓글