-
네트워크의 기본 구성 요소 3가지
노드 (네트워크 기본 단위)
링크 (노드 연결)
프로토콜 (데이터 전송 규칙)
네트워크 배치형태
p2p
bus
ring
star
mesh
tree (★)
네트워크 레이어
소프트웨어에서 생성한 신호를 네트워크를 통해 다른곳으로 전달 되는 것을 정의한 표준 모
물리계층
데이터링크 계층
네트워크 계층
전송 계층
세션 계층
프리젠테이션 계층
어플리케이션 계층
네트워크 유형
(아래로 갈수록 범위가 광대해짐)
Pan (블루투스 등)
Lan (근거리 통신망)
Man (도시 단위 통신망)
Wan ( 광역 통신망 , 도시 ,국가 대륙간)
Internet
대표적인 프로토콜
TCP
UDP
IP
MAC Address
네트워크 디바이스에 부여된 데이터 링크 계층을 위한 고유 주소
(물리적 주소가 Mac Address)
48비트 체계로 앞부분 24비트는 제조사 이고 나머지 24비트는 제조사가 제품에 할당하는 코드이다.
IPv4
32 비트로 나타내는 국제표준 네트워크 계층의 데이터 전송을 위한 주소 체계
(하지만 바닥이 났기때분에 IPv6라는 128 비트 체계가 개발됨)
도메인 이름
DNS라는 걸 통해서 도메인 이름을 IP주소로 변환
네트워크 장비
허브 - 소규모 네트워크에서 사용되는 곳이 있다고함.
스위치
라우터
모뎀 - 디지털 신호를아날로그신호로 변환하는 역할 (모뎀 , 공유기 )
방화벽
VPN
캐시 서버
온라인게임
우리나라에서 하는 대부분이 아는 게임은
온라인 게임들일것이다.
하나의 콘텐츠를 여러명이 다같이 하는 게임이다.
싱크 어싱크
동기적 접근 (싱크)
실시간 상호작용 , 행동이 즉시 반영
예시 : 실시간 게임
비동기적 접근(어싱크,Async)
행동이 즉시 반영되지않으며 나중에 결과를 확인 하는 방식
예시 : ( 턴제 , 모바일 등 ) 진행방식이 실시간이지않는 게임 들
CAP이론
일관성 , 가용성 , 분할용인 의 조건 3개를 모두 만족하는 시스템은 없다는 이론
일관성 : 시스템은 동일한 상태값을 갖는가
가용성 : 언제든지 시스템에 접근하여 값을 읽고 쓸 수 있는가.
분할용인 : 시스템을 분할하여 병렬 처리등이 가능한가.
게임에서의 동기화
1. 가용성을 포기
사용자의 입력을 서버로 보내서 일정시간마다 클라이언트로 브래드 캐스팅 하여 수신받은
이벤트로 게임 클라이언트의상태를 업데이트 처리
클라이언트 서버접속 - 서버 클라이언트 게임접속후 시작 및 초기화 -
클라이언트 이벤트 발생 -서버 이벤트 수집후 브로드캐스팅 - 클라이언트 업데이트
2. mmo , fps , sprots 장르 (실시간 , 일관성 포기)
반응 성이 우선인 게임 장르의 경우 사용
실시간으로 별도의 채널을 통해 다중 브로드 캐스팅 방식으로 진화
3. 가용성 보정
가용성을 포기하고 일관성을 우선으로 하는 CP(PC) 설계
예 스타크래프트
클릭 - 게이머에게 피드백 - 서버에 이벤트 전송 - 서버의 브로드캐스팅데이터 클라이언트에게 전달
4. 일관성보정
일관성을 포기하고 가용성을 우선으로 하는 AP(PA) 설계
최근에 등장하는 게임 들은 , 게임클라이언트를 우선 업데이트후 일관성을 보정 하는 방법 사용
응답 속도가 낮을 경우 뒤늦게 이벤트 적용하는 등에 부작용 존재
(게임에서 핑이 이런존재 아닌가 싶다.)
포트나이트 - 클라리언 예측 , 서버 조정
우선순위 서버 > 클라이언트
클라이언트 보간
네트워크는 강하게 결합 되어있지 않다.
불안정한 전기신호여서
균일하게 브로드 캐스팅 되지않고 띄엄 띄엄 되어있을 수 있다. (버퍼링 존재)
서버데이터 수신 - 클라이언트 버퍼링 - 보간 계산 - 렌더링
비동기
네트워크 세션을 유지하기 어려운 환경등에서 사용하는방법
보장된 데이터를 사용하여 환경을 구축함.
느리지만 손실 허용이 안되는 TCP프로토콜을 사용
이벤트만 서버로 전송하고, 서버는 이벤트를 검증하고 그 결과를 DB에 저장
다른 플레이어의 접속 여부와 관계없이 게임진행 가능
이 부분을 보아하니 같은 게임을 하지만 서로 영향을 끼치지않는 부분에서는 비동기를 사용해야될 것 같다.
네트워크의 병목 현상
여러 서버가 있으면
그중 한 서버에서 과부하가 걸려서전체시스템의 성능이 떨어지는 현상
서버가 많아지면 서 스위치로 클라이언트와 서버의 연결을 이어주는데
클라이언트와 스위치사이에서 방화벽을 연결 하는등
온라인 회사가 잘될수록 서버 증설은 불가피한 것 같다.