💭회고
오늘은 네트워크 개념과 OSI 모델, TCP/UDP 프로토콜, IP 주소 체계를 학습했다. 게임 개발에서 성능과 안정성을 높이기 위해 네트워크의 이해는 필수적이다...! 근데 어렵다...!
🗺️마인드맵
📒학습 내용
1. 네트워크 개념이 중요한 이유
오늘날 게임 시장은 점점 온라인 중심으로 변화하고 있다. 싱글플레이어 게임조차 리더보드, 세이브 동기화, 콘텐츠 다운로드 등 네트워크 기능을 탑재하는 것이 당연해졌다. 네트워크에 대한 이해 없이는 현대 게임 개발 현장에서 경쟁력을 유지하기 어렵다.
네트워크 지식이 부족한 개발자들이 직면하는 가장 큰 문제는 아래와 같다고 한다:
- 멀티플레이어 동기화 문제를 해결하지 못함
- 네트워크 최적화를 위한 적절한 프로토콜 선택을 못함
- 네트워크 문제 디버깅에 과도한 시간을 소모함
네트워크 지식은 단순한 이론이 아니라 실제 게임 플레이어의 경험을 좌우하는 핵심 요소이다. 지연 시간(Latency)이 0.1초만 늘어나도 FPS 게임에서는 치명적인 게임 경험 저하를 가져온다.
2. 네트워크 기초 구성요소 이해하기🌐
기본 용어 정리
용어 | 설명 | 게임 개발 관련성 |
네트워크 | 컴퓨터, 서버 등이 상호 연결된 시스템 | 게임 서버와 클라이언트 간 통신 기반 |
프로토콜 | 데이터 전송을 위한 약속된 규격 (TCP, UDP 등) | 게임 데이터 전송 방식 결정 |
OSI 모델 | 네트워크 통신 과정을 7개 계층으로 나눈 표준 모델 | 네트워크 문제 분석 및 해결 프레임워크 |
MAC 주소 | 네트워크 장치의 고유 물리 주소 | 디바이스 식별 및 보안 |
IPv4 | 32비트 인터넷 주소 체계 | 네트워크 상의 게임 클라이언트/서버 위치 식별 |
IP 포트 | IP 주소에서 특정 서비스를 식별하는 번호(0~65535) | 게임 서버 포트 할당 및 방화벽 설정 |
도메인 이름 | IP 주소를 쉽게 기억하도록 문자로 표현한 주소 | 게임 서버 접속 정보 설정 |
네트워크의 핵심 구성 요소
- 노드(Node): 데이터 통신의 기본 단위
- 게임에서는 각 플레이어의 디바이스, 게임 서버가 노드에 해당한다
- 링크(Link): 노드 간 데이터 전송 경로
- 유선: 이더넷, 광섬유 (안정적이나 이동성 제한)
- 무선: WiFi, 블루투스 (이동성 높으나 간섭 가능성)
3. 네트워크 토폴로지(Topology)
네트워크 구성 방식은 안정성과 성능에 직결된다.
- 스타 토폴로지(Star): 중앙 허브나 스위치에 연결 (가장 일반적)
- 대부분의 가정, 사무실, IDC 센터에서 채택하는 구조.
- 중앙 허브/스위치가 고장나면 전체 네트워크가 중단된다.
💡HUB와 SWITCH의 차이:
HUB는 연결된 모든 장치에 데이터를 보내는 반면, SWITCH는 MAC 주소를 사용해 특정 장치에만 데이터를 전송한다.
오늘날은 스위치 가격이 저렴해져 허브는 거의 사용하지 않는다.
- 메쉬 토폴로지(Mesh): 각 노드가 다른 모든(또는 다수의) 노드와 직접 연결된 구조
- 신뢰성이 높지만 비용이 비싸 군사나 긴급 서비스에서 사용
- 트리 토폴로지(Tree): 스타 구조를 계층화한 형태 (대규모 확장에 적합)
- 비용과 확장성 측면에서 유리하여 많이 사용된다. 대규모 게임 서버 인프라에 자주 사용되는 구조이다.
실무 팁:
1. 게임 서버 아키텍처 설계 시, 주로 트리 토폴로지를 기반으로 한 하이브리드 구조를 사용한다. 메인 게임 서버 아래에 지역별 서버를 두고, 각 지역별 서버 아래에 여러 게임 인스턴스 서버를 배치하는 방식이다. 이렇게 하면 서버 부하 분산과 지역별 최적화가 가능하다. 대형 MMORPG에서 자주 사용하는 구조로, 특히 글로벌 서비스 시 효과적이다.
2. 소규모 개발팀은 관리가 쉬운 스타 토폴로지를 사용하는 것이 좋다.
4. OSI 7계층 모델 이해하기
OSI(Open Systems Interconnection) 모델은 네트워크 통신을 7개 계층으로 나누어 설명하는 개념적 프레임워크.
게임 개발자는 특히 상위 계층(L4-L7)을 이해하는 것이 중요하다.
OSI 7계층 모델 개요
계층 | 이름 | 주요 역할 | 게임 개발 관련성 |
L7 | 응용 계층 | 최종 사용자 애플리케이션 인터페이스 | 게임 클라이언트 UI, API 설계 |
L6 | 표현 계층 | 데이터 형식 변환, 암호화 | 게임 데이터 직렬화, 보안 |
L5 | 세션 계층 | 연결 설정 및 종료 관리 | 게임 세션 관리, 접속 유지 |
L4 | 전송 계층 | 신뢰성 있는 데이터 전송 | TCP/UDP 선택, 패킷 처리 |
L3 | 네트워크 계층 | 데이터 라우팅, IP 주소 | 게임 서버 네트워크 구성 |
L2 | 데이터 링크 계층 | 물리적 장치 간 통신 | 로컬 네트워크 통신 |
L1 | 물리 계층 | 비트 전송, 전기 신호 | 하드웨어 인터페이스 |
게임 소프트웨어 개발자는 주로 L4(TCP/UDP)부터 L7까지를 다루며, L3 이하는 네트워크 엔지니어의 영역이다. 그러나 기본적인 이해는 필요하다.
다양한 스위치의 종류와 용도
상식선에서 알고 있자...!
종류 | 참조 데이터 | 용도 | 게임 서버 관련성 |
L2 스위치 | MAC 주소 테이블 | 로컬 네트워크 내 통신 | 게임 서버 내부 통신 |
L3 스위치 | 라우팅 테이블 | 서로 다른 네트워크 간 통신 | 서버 클러스터 간 통신 |
L4 스위치 | 포트 번호 | 트래픽 분배(로드밸런싱) | 게임 서버 부하 분산 |
L7 스위치 | 데이터 기반 | 애플리케이션 수준 로드밸런싱 | API 게이트웨이, 콘텐츠 분배 |
🔧 실무 팁: 언리얼 엔진 네트워킹에서는 주로 L4(전송 계층)와 관련된 작업을 많이 하게 된다. 레플리케이션(Replication) 시스템을 설계할 때 데이터의 중요도와 업데이트 빈도에 따라 신뢰성(Reliable)과 비신뢰성(Unreliable) 채널을 적절히 구분해야 한다. 예를 들어, 캐릭터 위치는 빠른 업데이트가 중요하므로 비신뢰성 채널을, 인벤토리 정보는 정확성이 중요하므로 신뢰성 채널을 사용한다.
💡 세션이란?
클라이언트(예: 플레이어)와 서버 간의 통신이 시작되고 유지되는 동안의 논리적 연결을 뜻함.
게임 세션을 예로 들면, 세션이 연결되어 있는 동안 플레이어의 상태(State)는 유지되고, 세션이 끊기면 플레이어의 상태는 사라진다.
5. 네트워크 유형: PAN부터 인터넷까지
네트워크는 크기와 범위에 따라 여러 유형으로 분류된다. 게임 개발 시 타겟 플랫폼과 서비스 범위에 따라 고려해야 할 네트워크 유형이 달라진다.
네트워크 유형별 특징
유형 | 범위 | 주요 기술 | 게임 개발 관련성 |
PAN (Personal Area Network) | 개인 공간 내 (수 m) | 블루투스, NFC, Zigbee | 모바일 게임 컨트롤러 연결, AR/VR 디바이스 통신 |
LAN (Local Area Network) | 집, 사무실 (수백 m ~ 수 km) | 이더넷, WiFi | 로컬 멀티플레이어, 개발 테스트 환경 |
MAN (Metropolitan Area Network) | 도시 단위 (수십 km) | 광케이블, WiMAX | 지역 서버, 대회용 LAN 환경 |
WAN (Wide Area Network) | 국가, 대륙 간 (수백 ~ 수천 km) | 광케이블, 위성 | 글로벌 게임 서비스, 지역 간 서버 연결 |
Internet | 전 세계 | TCP/IP, DNS, HTTP | 온라인 게임, 라이브 서비스 |
🔧 실무 팁: 게임의 글로벌 서비스를 계획한다면, CDN(Content Delivery Network)을 활용하여 게임 콘텐츠를 여러 지역에 분산 배포하는 것이 중요하다. 대용량 에셋과 패치를 효율적으로 배포하려면 AWS CloudFront, Akamai 같은 CDN 서비스를 활용하자. 또한 지역별 서버를 구축하여 지연 시간을 최소화하는 것이 플레이어 경험에 큰 영향을 미친다. 마이크로소프트의 Playwright 게임 서버는 이런 글로벌 분산 아키텍처의 좋은 예시이다.
6. TCP vs UDP: 게임 개발자가 꼭 알아야 할 차이점
TCP(Transmission Control Protocol)와 UDP(User Datagram Protocol)는 게임 네트워킹에서 가장 중요한 두 프로토콜이다. 이 둘의 차이를 이해하는 것은 게임 네트워크 설계의 기본이다.
TCP vs UDP 핵심 비교
특성 | TCP | UDP | 게임 개발 선택 기준 |
연결 방식 | 연결 지향적 | 비연결 지향적 | 기능별 중요도에 따라 선택 |
데이터 전송 | 순서 보장 | 순서 보장 없음 | 데이터 순서가 중요한지 여부 |
신뢰성 | 높음 (패킷 손실 복구) | 낮음 (패킷 손실 복구 없음) | 데이터의 정확성 vs 속도 |
속도 | 상대적으로 느림 | 빠름 | 실시간성 요구 정도 |
오버헤드 | 높음 | 낮음 | 네트워크 대역폭 제약 정도 |
게임 활용 예 | 인벤토리, 상점, 채팅 | 캐릭터 위치, 실시간 액션 | 데이터 성격에 따라 혼합 사용 |
💭게임 회사 인터뷰에서 자주 묻는 질문:
"TCP와 UDP의 차이점을 설명하고, 어떤 상황에서 어떤 프로토콜을 선택할 것인지 설명해보세요."
실시간 게임에서 UDP 활용의 중요성
최근에는 웹 기술에서도 실시간성이 중요해지면서 WebSocket이나 WebRTC 같은 기술이 등장했다. 특히 Google이 주도하는 QUIC(Quick UDP Internet Connections) 프로토콜은 UDP의 속도와 TCP의 신뢰성을 결합한 프로토콜로, HTTP/3의 기반 기술이 되었다.
🔧 실무 팁: 언리얼 엔진에서는 기본적으로 혼합 접근 방식을 사용한다.
중요하고 변경이 적은 데이터(예: 플레이어 ID, 게임 상태)는 TCP 기반 채널로, 자주 변경되고 실시간성이 중요한 데이터(예: 캐릭터 위치, 투사체)는 UDP 기반 채널로 전송한다.
특히 FPS나 격투 게임 같은 장르에서는 위치 보간(Position Interpolation)과 예측(Prediction) 알고리즘을 구현하여 UDP의 패킷 손실 문제를 보완하는 것이 일반적이다.
7. MAC 주소와 IP 주소 핵심 정리
네트워크에서 디바이스를 식별하는 두 가지 주요 주소 체계인 MAC 주소와 IP 주소의 개념과 차이점을 이해하는 것이 중요하다.
- MAC 주소: 장치 고유의 물리적 주소 (사람으로 치면 주민등록번호)
- IP 주소: 장치의 논리적 주소로, 네트워크에서 목적지를 찾는 데 사용
MAC 주소 (Media Access Control)
MAC 주소는 네트워크 장비의 고유 식별자로, 48비트(6바이트)로 구성된다.
- 예시: C8-7F-54-52-35-29
- 구성: 앞 24비트(제조사 코드) + 뒤 24비트(일련번호)
- 총 가능한 주소 수: 약 21조 개
- OSI 모델에서 위치: 데이터 링크 계층(L2)
⚠️MAC 주소는 일반적으로 하드웨어에 고정되어 있지만, 소프트웨어적으로 변경(스푸핑)이 가능하다. 따라서 보안 목적으로만 의존해서는 안 된다.
8. IPv4 주소 체계
IPv4는 32비트 주소 체계로, 일반적으로 점으로 구분된 10진수 4개로 표현한다 (예: 192.168.0.1).
IP 클래스 구분
클래스 | 범위 | 용도 | 호스트 수 | 서브넷 마스크 |
A 클래스 | 0~127 | 대규모 네트워크 | 약 1,670만 개 | 255.0.0.0 (/8) |
B 클래스 | 128~191 | 중규모 네트워크 | 약 65,534개 | 255.255.0.0 (/16) |
C 클래스 | 192~223 | 소규모 네트워크 | 254개 | 255.255.255.0 (/24) |
D 클래스 | 224~239 | 멀티캐스팅 용 | - | - |
E 클래스 | 240~255 | 연구/개발용 | - | - |
공인 IP vs 사설 IP
IP 주소 부족 문제를 해결하기 위해 사설 IP 주소 범위가 지정되어 있다:
클래스 | 사설 IP | 범위주소 개수 | 일반적 용도 |
A | 10.0.0.0 ~ 10.255.255.255 | 약 1,670만 개 | 대기업 내부망 |
B | 172.16.0.0 ~ 172.31.255.255 | 약 100만 개 | 중간 규모 조직 |
C | 192.168.0.0 ~ 192.168.255.255 | 약 6만 개 | 가정, 소규모 사무실 |
🔧 실무 팁:
게임 서버 개발 시 NAT(Network Address Translation) 환경을 항상 고려해야 한다. 많은 플레이어가 사설 IP를 사용하기 때문에 NAT 환경에서의 연결 문제(NAT Punch-through)를 해결하는 것이 중요하다. 언리얼 엔진에서는 Online Subsystem 모듈이 이러한 NAT 관련 문제를 처리하는 데 도움을 준다.
Steam, Epic, PlayStation 등의 온라인 서비스는 각자 NAT 환경에서의 연결을 돕는 방법을 제공한다.
2025.03.11 - [Dev./게임 네트워크] - [TIL_250311] 네트워크 개념 이해 2
🟣오늘의 옵시디언 현황
'Dev. > 게임 네트워크' 카테고리의 다른 글
[TIL_250312] 온라인 게임과 네트워크 구성 이해 (0) | 2025.03.12 |
---|---|
[TIL_250311_1] 네트워크 개념 이해 2 (0) | 2025.03.11 |