XR플밍 - 12. UnityEngine3D 네트워크 프로그래밍 - 네트워크 기초 및 UnityNetWorkSystem

이형원·2025년 7월 10일
0

XR플밍

목록 보기
130/215
post-thumbnail

1. 네트워크의 정의와 구조

1.1 네트워크란?

네트워크(컴퓨터 네트워크)

  • Net(그물) + Work(동작)의 합성으로 그물처럼 긴밀하게 연결되어 있는 것을 뜻함.
  • 컴퓨터 네트워크는 둘 이상의 컴퓨터와 이들의 연결, 그리고 이 연결을 통한 데이터의 통신을 통칭.
  • 연결 방식이나 연결 대수와 상관 없이 연결만 된다면 이 환경을 네트워크 환경이라고 부를 수 있다.

1.2 네트워크의 구조

이런 것들이 있다는 것을 아는 수준으로 넘어가면 된다.

트리 토폴로지의 경우 사내 네트워크 등에서 많이 쓰이는 방식이다.

2. 네트워크의 동작 원리

2.1 네트워크에서의 Layer(계층)

계층에 대한 부분은 다소 중요한 개념이며 면접 질문으로 나올 수도 있는 부분이다. 다만 이해하기 쉽지 않은 내용이라 외워 두는 것도 방법이 될 수 있다.

2.1.1 OSI 7 계층 (OSI 7 Layer)

  1. 응용 계층
    웹 브라우저, 메신저, 파일 전송 프로그램 등에서 최종적으로 데이터(메시지)를 송/수신 하게 되는 단계이다.

  2. 표현 계층
    데이터(메시지)의 형식을 다루는 계층이며, 데이터의 인코딩/디코딩/압축/암호화를 위한 소프트웨어가 사용된다.

  3. 세션 계층
    통신의 시작, 종료 및 관리 절차 등을 정의하는 계층이다.

  4. 전송 계층
    이 계층에서 본격적인 데이터 전송을 담당한다. 신뢰성있는 데이터 전송을 위해 오류검사/복구/흐름제어 등의 기능을 제공한다.

  5. 네트워크 계층
    다른 네트워크로의 통신을 담당하며, 다른 네트워크로 도달하기 위한 주소를 정의한다.

  6. 데이터 링크 계층
    동일한 네트워크 내에서 발생하는 컴퓨터들 간의 통신을 다룬다. 물리 계층에서 받은 데이터를 분할한 패킷(프레임)에 고유한 식별자를 부여하는 단계이다. 이 단계에서 전송 데이터의 오류를 한 번 더 검사한다.

  • Mac 주소

네트워크 인터페이스 카드 (NIC)에 할당된 고유 식별자이다. 각 네트워크 장치(컴퓨터, 스마트폰 등)는 고유한 MAC 주소를 가지며, 이는 해당 장치가 로컬 네트워크 내에서 다른 장치와 통신하는 데 사용된다. MAC 주소는 12개의 16진수로 구성되며, 제조업체 코드와 장치 고유 코드로 나뉜다.

  1. 물리 계층
    컴퓨터와 물리적으로 연결되는 장비들이 속하는 단계이며, 케이블/모뎀/허브 등이 여기에 속한다.

2.1.2 TCP/IP 4 계층 (TCP/IP 4 Layer)

2.1.3 OSI 7 계층 vs TCP/IP 4 계층

OSI 7 계층은 이론적인 부분에 가깝고 실무에서는 TCP/IP 4 계층을 더 많이 사용한다고 생각하면 된다.

2.4 패킷

네트워크 내에서의 데이터 전송은 OSI 모델이나 TCP/IP 모델의 계층을 통해 이루어진다.
이 때, 전송하는 데이터를 일정한 크기로 나눈 것을 ‘패킷’이라고 한다.
데이터 전송은 패킷을 전송하고, 전송 받은 패킷을 다시 조립하여 데이터를 표현함으로써 완료된다.

2.5 IP Adress

인터넷에서 특정 장치를 식별하기 위한 주소로, IPv4 혹은 IPv6로 구성된다.(인터넷 프로토콜)
장치 식별과 전송될 데이터의 경로 지정의 용도로 사용되며, 서브넷 마스크(32비트 숫자 주소)를 이용해 구분함.

2.6 도메인과 DNS(Domain Name System)

인터넷에서 사람이 웹사이트를 찾기 위한 주소가 도메인이다.
이 도메인을 통해 컴퓨터가 해당 웹사이트로 접속하기 위해 도메인을 IP주소로 변경하는 시스템이 DNS이다.

2.7 포트와 프로토콜

2.7.1 포트

하나의 IP 주소 내에서 여러 프로그램을 구분하기 위한 주소 번호이다.
한 컴퓨터에서 여러 프로그램이 동시에 인터넷을 사용할 수 있게 하며, IP와 함께 소켓 통신의 중요한 구성 중 하나다.

2.7.2 프로토콜

각기 다른 장치나 시스템이 하나의 네트워크에서 데이터를 주고받기 위한 통신 규약이다.
미리 정해진 프로토콜을 사용함으로써 정확하고 호환 가능한 통신이 가능하며,
프로토콜의 종류에 따라 송수신 방식, 데이터의 흐름 제어, 문제 해결 등의 방식이 정해진다.

2.8 TCP & UDP

2.8.1 TCP(Transmission Control Protocol)

연결 지향 프로토콜.

3-Way Handshake를 통한 연결로 만약 데이터가 전송 과정에서 유실된다면, 재전송 및 흐름 제어로 데이터 유실을 방지한다.
패킷 번호 관리로 순서를 보장하며, 웹, 파일 전송, 로그인 등 정확한 전송이 필요할 때 적합함.

2.8.2 UDP(User Datagram Protocol)

비연결 지향 프로토콜.

연결 설정 없이 빠르게 전송하는데 초점이 맞춰져 있는 프로토콜이다.
순서를 보장하거나, 데이터가 유실되어도 재전송하지 않으나, 그만큼 실시간으로 빠르게 데이터를 송수신함.
영상 스트리밍, 게임 내의 실시간 데이터 동기화에 적합.

게임 서버는 실시간으로 빠르게 데이터를 주고받아야 하므로 UDP 방식을 많이 채용하며, 동기화 시에 데이터 유실에 대한 보정을 하는 방식으로 사용된다.

3. 게임 네트워크 프로그래밍

게임 서버는 서버 - 클라이언트 역할 지정에 따라 나누어진다.
호스트는 게임 내 전반적인 동기화, 데이터 관리에 관여하며, 어떤 데이터를 동기화하느냐에 따라 서버의 모델을 지정해야 한다.

게임 네트워크 프로그래밍의 방식에서, 대표적으로 사용하는 서버 모델은 아래 3가지가 있다.

3.1 Dedicated Server(전용 서버)

  • 게임 네트워킹에 전용 호스팅 서버가 사용되는 모델이다.
  • 다른 모델에 비해 안정적이고, 모든 판정을 서버에서 담당하므로 공정하다.
  • 서버를 따로 구축해야하며, 운영 비용이 크게 발생한다.

ex) 대규모 유저가 이용하는 온라인 게임

3.2 Listen Server

  • 한 유저가 서버의 역할을 수행하며 클라이언트의 역할도 하는 모델.
  • 구현 시 테스트에 용이하며, 구현도 간단함.
  • 서버의 역할을 하는 호스트가 나가면 게임이 진행되지 않으며, 판정을 호스트 유저의 컴퓨터에서 진행하므로 공정하지 않을 수 있음.

ex) 호스트가 있는 멀티 플레이어 게임 - 예) 마인크래프트 등

3.3 Peer-to-Peer(P2P) Server

  • 플레이어간 직접 네트워크를 연결하여, 모든 플레이어가 서버와 클라이언트의 역할을 병행한다.
  • 구조가 간단하여 구현이 쉽고, 서버 비용이 전혀 들지 않는다.
  • 연결점이 많아 보안에 취약하며, 연결된 클라이언트 간의 성능이 다르면 동기화가 어려워지며, 클라이언트에서 데이터를 변조해도 잡아내기 힘듬.

ex) 소규모 온라인 게임

3.4 게임 네트워크의 특징

  • 실시간성
  • 데이터 동기화
  • 불안정한 네트워크 상태 대응
  • 보안 이슈
  • 플랫폼 간 호환성

3.5 Photon Unity Networking(PUN2)

Photon 에서 출시한 멀티플레이어 게임용 유니티 패키지로, 유니티를 기반으로 멀티 플레이 구현을 위한 여러 기능을 제공한다.
매치 메이킹 기반으로 설계되어 있다.

profile
게임 만들러 코딩 공부중

0개의 댓글