OSI 7계층
OSI 7계층은 네트워크를 역할별로 나눈 개념적 모델이다.
실제로는 TCP/IP 기반을 많이 사용하지만, 문제 발생시 어디 계층의 문제인지 나눠서 판단하기에 유용하다.
| 7 | Application | 게임 로직 메시지 (로그인, 이동, 공격, 채팅) |
| 6 | Presentation | 직렬화/역직렬화 (JSON, Protobuf, BitStream) |
| 5 | Session | 세션 유지, 재접속, 룸 개념 |
| 4 | Transport | TCP / UDP 선택 |
| 3 | Network | IP 기반 라우팅 (보통 의식할 일 거의 없음) |
| 2 | Data Link | NIC, LAN 환경 |
| 1 | Physical | 케이블, 무선 신호 |
1계층 : 물리 계층 (Physical Layer)
네트워크 데이터가 전기적, 전자적 연결에 의해 전송되는 물리적 계층
0과 1의 on off의 디지털 데이터를 전송
컴퓨터와 물리적으로 연결되는 장비들이 속하는 단계이며, 케이블 / 모뎀 / 허브 등이 여기에 속한다.
2계층 : 데이터링크 계층 (DataLink Layer)
인접한 노드간의 신뢰성 있는 데이터 전송을 제어
네트워크 카드의 MAC 주소를 통해 목적지를 결정
신뢰성 있는 전송을 위해 흐름 제어 (Flow Control), 오류 제어 (Error Control), 회선 제어 (Line Control) 을 수행
3계층 : 네트워크 계층 (Network Layer)
사용자간 전송을 위한 경로 설정을 담당
목적지로 도달하기 위한 최적의 경로를 라우팅 알고리즘을 통해 선택하고 제어
목적지까지 전송을 위한 주소로 IP주소를 사용
4계층 : 전송 계층 (Transport Layer)
사용자간 신뢰성 있는 데이터 전송을 담당
TCP/UDP 통신 연결을 수립 / 유지 / 중단
5단계 : 세션 계층 (Session Layer)
응용 프로그램간의 논리적인 연결 생성 및 제어를 담당
프로세스를 특정하기 위한 주소로 Port Number를 사용
신뢰성 있는 데이터 전송을 위해 분할과 재조합, 연결제어 ,흐름제어, 오류제어, 혼잡제어를 수행
6계층 : 표현 계층 (Presentation Layer)
데이터 표현 방식, 상이한 부호체계 간의 변화에 대해 규정
인코딩 / 디코딩, 압축 / 해제, 암호화 / 복호화 등의 역할 수행
7계층 : 응용 계층 (Presentation Layer)
최종적인 데이터를 사용자가 실행하는 응용 프로그램이 직접 다루는 계층
네트워크 통신의 출발점이자 독착점
사용자의 입력을 네트워크 메시지로 만들거나, 수신한 데이터를 게임 로직-UI-기능 단위로 해석하는 역할
실제로 무엇을 할 것인가 가 정의되는 계층
게임 개발자가 직접 다루는 영역은 사실상 4~7 계층이다.
패킷이 끊긴다 → 4 계층(TCP/UDP) 문제
데이터는 왔는데 파싱이 깨진다 → 6~7 계층 문제

TCP / IP
하지만 현실에서의 네트워크는 대부분 TCP/IP 4계층 모델로 동작한다.
OSI 7 계층을 4개의 계층으로 단순화한 모델
네트워크 인터페이스 계층, 인터넷 계층, 전송 계층, 응용 계층으로 분류한다.
각 계층은 데이터 전송 과정에서 정해진 역할이 있고, 각 역할을 수행할 때 지켜야 할 프로토콜이 있다.
| Application Layer | 7~5 | HTTP, WebSocket, Custom Protocol |
| Transport Layer | 4 | TCP / UDP |
| Internet Layer | 3 | IP |
| Network Access Layer | 2~1 | LAN, 물리 계층 |
- 응용 계층 (Application Layer) : 데이터의 내용을 보고 어플리케이션의 목적에 따른 서비스를 사용자에게 제공
- 전송 계층 (Transport Layer) : 데이터의 흐름을 제어하여 데이터 전송의 신뢰성과 효율성을 관리하고, 목적지에 전송된 데이터를 적절한 어플리케이션에 배분
- 인터넷 계층 (Internet Layer) : 서로 다른 네트워크에 있는 컴퓨터 간에 데이터 전송
- 네트워크 인터페이스 계층 (Network Interface Layer) : 같은 네트워크 안에서 물리적으로 인접하여 연결되어 있는 네트워크 장비 간의 데이터 전송
TCP / UDP : 전송 계층의 연결 방식
TCP (Transmission Control Protocol)
연결 지향 통신
데이터 전송 전 연결을 수립하고, 전송 후에도 정상 수신 여부를 확인
패킷 순서 보장, 재전송, 오류 복구를 수행
특징
- 정확성 높음
- 지연 시간 상대적으로 큼
- 오버헤드 존재
게임 개발에서의 사용 예
- 로그인 / 인증
- 계정 정보 요청
- 채팅
- 로비, 매칭
- 아이템 지급, 결과 정산
- 반드시 도착해야 하는 데이터에 사용한다.
UDP (User Datagram Protocol)
비연결형 통신
수신 여부를 확인하지 않고 데이터를 일방적으로 전송
순서 보장, 재전송 없음
특징
- 지연 시간 매우 짧음
- 데이터 손실 가능
- 구현 난이도는 TCP 보다 높음 (보정 로직 필요)
게임 개발에서의 사용 예
- 플레이어 위치 동기화
- 캐릭터 회전, 이동
- 투사체, 실시간 전투 정보
- 물리 기반 동기화
- 조금 틀려도 되고, 최신 정보가 더 중요한 데이터에 사용
게임에서는 TCP + UDP 함께 사용
모든 데이터를 TCP로 보내면 지연이 누적
모든 데이터를 UDP로 보내면 동기화 신뢰성이 붕괴
따라서 용도에 따라 혼합 구조를 사용
클라이언트–서버 구조
클라이언트–서버 구조는
서비스 요청자(Client)와 서비스 제공자(Server)의 역할을 명확히 분리한 네트워크 모델이다.
- 클라이언트
- 사용자 입력 처리
- 화면 렌더링
- 서버에 요청 전송
- 서버
- 게임 규칙의 최종 판단자 (Authority)
- 상태 관리
- 다수의 클라이언트 처리
서버는 언제 어떤 클라이언트가 요청하더라도 대응할 수 있도록 항상 대기 상태여야 한다.
전용 서버 (Dedicated Server)
전용 서버는 서버 역할만 수행하는 독립된 서버 프로그램이다.
특징
- 모든 클라이언트는 전용 서버를 통해서만 통신
- 서버가 게임의 모든 판단을 수행
- 클라이언트 간 직접 간섭 없음
장점
- 안정성 높음
- 치트, 데이터 변조에 강함
- 결과 판정이 일관됨
단점
- 서버 운영 비용 발생
- 초기 인프라 구성 부담
- 서버 위치에 따라 지연 시간 발생 가능
대부분의 상용 온라인 게임이 이 방식을 사용
리슨 서버 (Listen Server)
리슨 서버는 클라이언트 중 한 명이 서버 역할을 겸임하는 구조이다.
이때 서버 역할을 수행하는 클라이언트를 호스트(Host)라고 부른다.
특징
- 별도의 서버 비용 없음
- 소규모 멀티플레이에 적합
- 호스트와 가까운 플레이어는 지연이 적음
단점
- 호스트 성능에 품질 의존
- 호스트 이탈 시 세션 종료
- 데이터 변조, 치트에 취약
인디 게임, 소규모 협동 게임에서 자주 사용
P2P (Peer to Peer) 구조
P2P 방식은 모든 클라이언트가 서로 직접 연결되는 구조이다.
특징
- 서버가 없거나, 최소한의 중계 서버만 존재
- 모든 클라이언트가 연산 및 상태 공유에 참여
장점
- 서버 비용 없음
- 한 클라이언트가 이탈해도 전체가 즉시 종료되지 않음
단점
- 클라이언트 수가 증가할수록 통신량 폭증
- 치트 및 데이터 신뢰성 문제
- NAT, 방화벽 이슈
이론적으로는 단순하지만,
실제 대규모 게임에는 거의 사용되지 않는다.
패킷 통신
회선 교환 방식 vs 패킷 교환 방식
- 회선 교환
- 통신 전에 고정된 경로를 확보
- 안정적이지만 비효율적
- 패킷 교환
- 데이터를 작은 단위(패킷)로 나누어 전송
- 각 패킷은 독립적으로 라우팅
현재 인터넷과 게임 네트워크는 패킷 교환 방식을 사용한다.
패킷 헤더와 캡슐화
패킷은 다음 두 부분으로 구성된다.
- 헤더(Header)
- 송신지 / 수신지
- 순서 정보
- 프로토콜 정보
- 데이터(Data)
- 실제 전송하려는 내용
캡슐화 과정
- 응용 계층 데이터 생성
- 전송 계층에서 헤더 추가
- 네트워크 계층에서 IP 헤더 추가
- 데이터 링크 계층에서 프레임 생성
수신 측에서는 이 과정을 역캡슐화하여 데이터를 복원한다.
요약 정리
- 네트워크는 계층별로 역할이 분리되어 있음
- 문제 발생 시 “어디 계층의 문제인가”를 판단하는 것이 중요
- 실시간 게임은 UDP 기반 + 보정 로직
- 신뢰가 필요한 데이터는 TCP
- 서버 구조는 초기 설계에서 반드시 결정
'Unity' 카테고리의 다른 글
| Unity Network : Photon Pun 2 - Lobby / Room (0) | 2026.01.07 |
|---|---|
| Unity UI: 코드로 레이아웃 제어 vs 프리팹 기반 구성 (0) | 2026.01.05 |
| 길찾기 알고리즘 : 다익스트라(Dijkstra) 와 에이스타(A*) (0) | 2025.11.20 |
| Unity - 데이터 저장 방식 : PlayerPrefs, JSON, CSV, ScriptableObject (0) | 2025.11.13 |
| Unity - Object Pool Pattern : 오브젝트 풀 (0) | 2025.11.12 |