[게임서버프로그래밍#7] 네트워크 기본 통신 정리 (TCP/UDP, NAT, 네트워크 품질)

2024. 5. 26. 17:11개발 서적 리뷰/게임서버 프로그래머 책

이 글에서는 네트워크 통신의 기본 개념을 정리한다.
레이턴시, 패킷 유실률, 전송 속도와 같은 품질 지표부터, TCP/UDP 통신 방식 차이, NAT(Network Address Translation)의 개념까지 실제 사례를 통해 살펴본다.

 

 


 

네트워크 품질을 결정하는 요소

네트워크 품질은 다음 3가지 주요 지표로 평가할 수 있다.

1. 레이턴시(Latency)

  • 데이터가 목적지에 도달하는 데 걸리는 시간이다.
  • 라우터, 스위치 경유가 많거나 거리(물리적 거리)가 멀수록 레이턴시가 증가한다.
  • 진단 방법:
    tracert 명령어를 이용해 중간 경유지 확인 가능.

예시:
한국 → 미국 서버로 접속할 때 레이턴시가 100ms 이상 발생할 수 있다.


2. 패킷 유실률(Packet Loss)

  • 네트워크 전송 중 패킷이 손실되는 비율이다.
  • 라우터, 스위치 등 장비가 과부하 상태일 때 주로 발생한다.
  • 실시간 게임이나 스트리밍에서 큰 문제가 된다.

예시:

  • UDP 기반 음성 채팅 중 패킷 유실률 5% 이상이면 음성이 끊긴다.

3. 전송 속도(Throughput)

  • 데이터가 일정 시간 동안 전송될 수 있는 최대량이다.
  • 중간 장비(라우터, 스위치)의 성능이 낮으면 전체 속도가 제한된다.
  • 진단 방법:
    ping 명령어로 응답 속도, TTL(Time To Live) 값을 확인할 수 있다.

 

 

 

 


 

TCP vs UDP 차이

항목 TCP UDP
연결 방식 연결 지향 (Connection-oriented) 비연결 지향 (Connectionless)
신뢰성 데이터 유실 시 재전송, 순서 보장 데이터 유실 시 무시
데이터 구조 스트림(Stream) 형식 메시지(Message) 형식
주요 사용처 파일 전송, 금융 트랜잭션, 중요 데이터 통신 게임, 음성/영상 통화, 스트리밍

1. TCP 특징

  • 송신자가 데이터를 보내면 수신자가 수신 확인(ACK)을 보내야 한다.
  • 패킷 손실 시 자동으로 재전송한다.
  • 수신자에게 순서대로 데이터가 도착하는 것을 보장한다.

 단점:

  • 전송 과정이 무겁고 느릴 수 있다.

2. UDP 특징

  • 송신자가 데이터를 보내면 수신 확인을 기다리지 않는다.
  • 패킷 손실이 발생해도 그냥 무시하고 다음 데이터를 전송한다.
  • 빠르고 가볍지만 신뢰성은 낮다.

 단점:

  • 데이터 유실에 대한 복구가 없다.

 


 

스트림(Stream) vs 메시지(Message) 차이

 

항목 스트림 방식 (TCP)  메시지 방식 (UDP)
데이터 수신 조각조각 도착 (순서 보장) 보내는 단위 그대로 수신 가능
예시 파일 다운로드, HTTP 통신 음성 채팅, 게임 좌표 전송

 

 


 

NAT(Network Address Translation)란 무엇인가

정의:
NAT는 가상 사설망 내부 IP 주소를 공인 IP로 변환하여 통신하는 기술이다.

  • IPv4 주소 부족 문제를 해결하기 위해 탄생했다.
  • 사설 네트워크에 있는 여러 기기가 하나의 공인 IP를 공유해서 인터넷과 통신할 수 있게 한다.

NAT 동작 방식

  1. 내부 네트워크의 기기들이 사설 IP를 사용한다. (예: 192.168.0.x)
  2. 인터넷으로 데이터를 보낼 때, 라우터가 사설 IP를 공인 IP로 변환한다.
  3. 외부에서 들어오는 응답 패킷은 다시 해당 기기로 전달된다.

 

 


 

NAT와 게임 통신 문제

 

NAT를 통과해 게임 서버나 다른 클라이언트와 직접 통신해야 할 경우 문제가 생긴다.

  • NAT 환경에서는 외부에서 직접 클라이언트로 접속할 수 없다.
  • 이를 해결하기 위해 NAT Traversal(구멍 뚫기) 기술이 사용된다.
    (예: STUN, TURN, uPNP, Hole Punching)

 

 


 

간단 정리: TCP와 UDP는 어디에 쓰일까?

상황 추천 통신 방식
중요 데이터 전송 (결제, 채팅) TCP
실시간 움직임 전송 (게임) UDP
음성/영상 스트리밍 UDP + 자체 복구 기능 사용