반응형
Development/Network
클라이언트와 웹 게임의 통신 관계(feat. 이벤트페이지)
클라이언트와 웹 게임의 통신 관계(feat. 이벤트페이지)
2021.03.30보통 게임에서 통신의 흐름은 다음과 같이 클라이언트가 요청하고 서버가 그에대해 응답하는 방식임 그렇다면 반대로 아래와 같이 서버가 먼저 요청하거나 명령하는 경우는 없을까? 없다고 봐도 무방함. 게임으로 예를 들자면 위와 같이 내 몬스터가 상대방의 몬스터를 죽여서 재화를 얻는 경우는 아래와 같겠지? 1. 클라이언트가 특정 몬스터(헬하운드)를 사냥했다고 서버에게 요청하면, 2. 서버는 진짜로 그 몬스터가 사냥되었는지 데이터를 검토해서 확인하고 진짜로 죽었다면? 서버에 저장되어있는 보상 테이블을 검색해(헬하운드 사냥했을 때 보상은 무엇인가?) 3. 그 보상을 서버 내 데이터베이스에 저장하고 클라이언트쪽으로 경험치 300 올렸다고 응답해줌 4. 클라이언트는 그 응답을 받고 서버가 보내준 경험치만큼 경험치 상승했..
[네트워크 기초 지식] IP, CIDR 표기법, 서브넷 마스크
[네트워크 기초 지식] IP, CIDR 표기법, 서브넷 마스크
2019.07.03IP란? IP? IP Address? Internet Protocol(인터넷 프로토콜)의 약자다. 설명하기 위해 예를 들자면, 사람마다 사용하는 컴퓨터는 운영체제도 다르고, 프로그램의 경우 구현된 언어도 다르다. 이렇게 각자 다른 시스템끼리 통신하는 방법도 각각 다르기 마련인데, 다른 시스템끼리 통신이 가능하도록 일종의 규약을 정해야 하는데 이것을 인터넷 프로토콜이라 한다. 비유를 하자면 한국인, 일본인, 중국인은 서로 사용하는 언어가 다르기 때문에 대화가 되지 않는다. 따라서, 영어라는 세계 공용어(일종의 규약)를 정해서 의사소통이 가능하도록 만들었는데 이를 컴퓨터 입장에서 생각해보자 이제, 서로 어떻게 통신할 것인지 규약을 정했다. 그렇다면 서로 통신을 하기 위해선 상대방이 누군지 알아야 한다. (내..
[UDP 홀펀칭(Hole Punching)] - UDP 홀펀칭(2/2)
[UDP 홀펀칭(Hole Punching)] - UDP 홀펀칭(2/2)
2018.12.042줄 요약 UDP 홀펀칭을 통해 NAT가 구성되어있는 호스트끼리 통신이 가능하다 홀펀칭을 위해서 중개서버가 필요하다 UDP 홀펀칭 이전 글에서 NAT로 인해 서로의 Public IP와 Port번호를 몰라, P2P 통신을 하기가 어렵다고했다. 그렇다면 이러한 문제를 어떻게 해결 할 까? 간단하다, 이 글의 주제대로 UDP 홀펀칭 기법을 사용하면 된다. 이러한 기계를 실생활에서 본 적이 있을것이다. 구멍을 뚫어주는 녀석인데 UDP 홀펀칭도 의미대로 P2P통신을 하기 위해 NAT에다가 통로(?)같은 것을 뚫어주는 기법을 뜻한다 UDP 홀펀칭을 위해선 중개서버라는 존재가 필요하다. 중개 서버 아래 예시에서 IP 체계상 300.300.300.300이라는 IP는 존재할 수 없습니다. (255가 최대 수치기 때문) ..
[UDP 홀펀칭(Hole Punching)] - NAT 그리고 P2P(1/2)
[UDP 홀펀칭(Hole Punching)] - NAT 그리고 P2P(1/2)
2018.12.03설명 전 2줄 요약 NAT는 내부 네트워크에서 외부 네트워크로 통신을 할 때 IP를 변환하는 기술이다. 보통 P2P 형식의 게임을 만들 때 NAT때문에 UDP 홀펀칭이란 기법을 사용해 통신 할 수 있도록 한다. P2P(Peer to Peer) 스타크래프트같은 대전게임은 상대방과 어떤 구조로 통신하면서 패킷을 주고받을까? 위와 같이 중간에 특별한 서버 없이 유저와 유저끼리 직접적으로 통신하여 데이터를 주고 받는다. (물론 로그인이나 승/패 관리 등등 이런 기능들은 게임서버가 관리한다) 위와 같이, 유저와 유저끼리 통신을 하는 방식을 P2P(Peer to Peer)라고 한다. 보통 P2P 스타일의 게임에서 지연을 최소화 하기 위해 UDP방식을 사용하여 통신을 하는데 TCP도 그렇지만 통신을 하기 위해서 서로..