[Unity] 게임 네트워크

네트워크

네트워크란 두 대 이상의 컴퓨터가 데이터를 주고받을 수 있도록 연결된 망을 의미합니다.

게임에서도 네트워크를 이용하여 멀티플레이를 구현할 수 있습니다.

플레이어 A가 총을 쐈다는 이벤트가 발생하면 서버를 거쳐 플레이어 B의 컴퓨터에서도 총이 나가는 것이 보일겁니다.

또한 어떤 서버 방식을 사용하고, 보간 작업을 거치는지 등에 따라 멀티플레이의 동기화 등이 결정됩니다.

 

 

 

 

네트워크 계층에는 OSI 7계층, TCP/IP 4계층이 있습니다.

 

OSI 7계층


ISO(국제표준화기구)에서 정의한 네트워크 통신 표준 이론으로 네트워크 통신에 대한 과정을

7단계로 나누어 표준화한 것입니다.

통신이 일어나는 과정을 단계별로 파악할 수 있으며, 이상이 생긴 단계만을 고칠 수 있다는 장점이 있습니다.

 

 

● 제 1계층: 물리 계층

    ○ 네트워크 데이터가 전기적, 전자적 연결에 의해 전송되는 물리적인 계층

● 제 2계층: 데이터 링크 계층

    ○ 인접한 장치 간의 물리적 전송을 관리

    ○ 네트워크 카드의 MAC 주소를 통해 목적지를 설정

    ○ 신뢰성 있는 전송을 위해 흐름제어, 오류제어, 회선제어 수행

 

● 제 3계층: 네트워크 계층

    ○ 사용자간 전송을 위한 경로 설정을 담당

    ○ 라우팅 알고리즘을 통해 데이터를 목적지까지 최적의 경로로 전달

    ○ 목적지까지 전송을 위한 주소로 IP 주소를 사용

 

● 제 4계층: 전송 계층

    ○ 사용자간 신뢰성 있는 데이터 전송을 담당

    ○ TCP/UDP 통신 연결을 수립/유지/중단

 

● 제 5계층: 세션 계층

    ○ 통신 장치 간의 연결을 설정하고 유지합니다.

    ○ 프로세스를 특정하기 위한 주소로 포트 넘버를 사용

    ○ 신뢰성 있는 데이터 전송을 위해 분할과 재조합, 연결제어, 흐름제어, 오류제어, 혼잡제어를 수행

 

● 제 6계층: 표현 계층

    ○ 데이터 표현방식을 정함

    ○ 인코딩/디코딩, 압축/해제, 암호화/복호화 등의 역할 수행

 

● 제 7계층: 응용 계층

    ○ 최종적인 데이터를 사용자가 실행하는 응용 프로그램을 통해 목적에 맞게 사용하는 계층

 

 

 

TCP/IP 4계층


데이터 전송 과정을 4개의 계층으로 단순화한 모델입니다.

TCP/IP 모델은 프로토콜을 정하는 것 자체보다 동작하는 프로토콜을 빠르게 구현하는 것을 중시합니다.

인터넷에서 실제로 많이 사용하는 실무 중심의 모델입니다.

 

 

 

● 네트워크 접근(링크) 계층 - OSI 1, 2계층에 대응

    ○ 물리적인 네트워크에서 데이터를 전송하기 위한 요소(하드웨어/소프트웨어)를 다룸

 

● 인터넷 계층 - OSI 3계층에 대응

    ○ 상대 네트워크와 통신하기 위한 IP 주소를 사용해 데이터를 전송

    ○ 라우터를 이용해 패킷의 경로를 설정하고 전송

 

● 전송 계층 - OSI 4계층에 대응

    ○ TCP/UDP 방식을 사용해 데이터의 전송을 담당

 

● 응용 계층 - OSI 5, 6, 7계층에 대응

    ○ HTTP, FTP, SMTP 등 응용 프로그램에서 사용되는 프로토콜을 다룸

 

 

TCP와 UDP

● TCP: 안전 우선 방식입니다. 데이터 전송 전 상대와 연결하고 데이터를 조금씩 나눠 보내며 주기적으로 상대가 데이터를
받았는지 확인합니다.
게임에서는 데이터 유실이 없어야 하는 아이템 거래, 채팅, 로그인 시스템에 주로 사용합니다.

● UDP: 속도 우선 방식입니다. 별도의 과정 없이 한 번에 많은 양의 데이터를 보낼 수 있어 빠르지만, 상대방 컴퓨터에서
정확한 데이터가 도착하지 않을 수 있습니다.
게임에서는 데이터 한 두개 보다 속도가 중요한 캐릭터 이동, 총기 발사, 스킬 이펙트 동기화에 주로 사용합니다.

 

 

 

 

프로토콜


네트워크를 구성하는 컴퓨터와 네트워크 장비들이 지켜야할 규칙입니다.

프로토콜은 데이터 전송 상대방, 데이터의 형식, 데이터의 전송 순서와 절차, 데이터 전송방법 등을 규정합니다.

각 계층마다 필요로 하는 프로토콜 규칙이 다르며 여러 프로토콜을 혼합하여 사용합니다.

 

프로토콜이 성립되기 위해선 다음의 세가지 요소를 정의해야합니다.

 

● 구문: 데이터의 형식이나 구조를 정의

● 의미: 전송되는 각 비트의 의미를 해석

● 타이밍: 어떤 속도로 데이터를 보낼지, 순서는 어떻게 할지 결정

 

 

계층 주요 프로토콜
물리 RS-232, DSL, 10Base-T, Coaxial
데이터 링크 Ethernet, Wi-Fi (802.11), PPP, MAC
네트워크 IP (IPv4/IPv6), ICMP, ARP, RARP, BGP
전송 TCP, UDP, SCTP, QUIC
세션 NetBIOS, RPC, SSH, TLS
표현 SSL/TLS, JPEG, MPEG, ASCII, MIDI
응용 HTTP, HTTPS, FTP, SMTP, DNS, DHCP, SNMP

 

 

 

 

⭐ 네트워크 아키텍쳐 구조

아키텍쳐란 시스템의 전체적인 설계 구조를 의미합니다.

어떤 구성 요소들을 어디에 배치하고, 서로 어떻게 소통할지 등을 정하는 설계 방식입니다.

 

 

 

 

클라이언트 서버


한 대의 서버 컴퓨터에서 모든 게임 데이터를 관리합니다.

한 대의 컴퓨터에서 서버를 관리하기 때문에 데이터를 변경하는 등의 부정행위(치트)에 대해 비교적 쉽게 대처할 수 있고

다른 유저들은 서버에 접속만 하면 되기에 여러대의 기기에서도 동일한 게임 데이터를 사용할 수 있습니다.

서버가 많은 연산과 데이터의 기록을 담당하기에 유지비용이 높고, 서버 컴퓨터에 문제가 발생시 모든 유저들이 영향을

받는다는 단점이 있습니다.

 

 

Dedicated Server (전용 서버)

● 구조: 네트워크 통신과 게임 로직만을 계산하기 위한 전용 서버를 사용하는 방식

● 장점: 

    ○ 보안성이 우수함

    ○ 네트워크나 게임 로직에 관련된 역할만 수행하기 때문에 성능에 유리

    ○ 안정적인 게임 환경

● 단점:

    ○ 높은 서버 유지비

    ○ 데이터가 한 지점에 몰려서 지연 발생

● 예시 게임: 배틀그라운드, 리그 오브 레전드 등

 

 

 

Listen Server

● 구조: 플레이어 중 한 명의 컴퓨터가 게임 플레이와 서버 역할을 동시에 수행하는 방식

● 장점: 

    ○ 별도의 서버가 필요하지 않음

    ○ 빠른 테스트 가능

● 단점:

    ○ 서버 호스트가 나가면 게임이 종료됨

    ○ 서버 호스트는 지연 시간이 없지만 다른 유저들은 서버 호스트의 인터넷 환경의 영향을 받음

● 예시 게임: 레프트 4 데드 2, 팰월드 등

 

 

 

 

P2P (Peer to Peer)


● 구조: 중앙 서버 없이, 게임에 참여한 모든 유저들의 컴퓨터끼리 직접 데이터를 주고받는 방식입니다.

● 장점:

    ○ 별도의 서버가 필요하지 않음

    ○ 서로 물리적 거리가 가까울 경우 지연시간이 매우 적음

● 단점: 

    ○ 보안에 취약함 → 중앙 서버가 없기 때문에 클라이언트 측 데이터를 변조하기 쉬움

    ○ 방장의 네트워크 상태에 의존

예시 게임: 스타크래프트, 철권 등