TCP(Transmission Control Protocol) : 전파 제어 통신 규약
IP(Internet Protocal) : 인터넷 규약
TCP/IP : 인터넷을 사용하는 모든 통신의 기본적인 프로토콜


-데이터 링크,IP, 전송, 응용
물리 > 데이터 링크 >네트워크> 전송> 세션> 표현> 응용

순서대로 데이터를 주고 받음
랜선으로 온 데이터를 각 컴퓨터에 전달
255: 8비트(사실 2의 8제곱이 256인데 0부터 시작하기 때문에 255가 나오는거임)
근데 255가 최대값이라서 1
기본 웨이트웨이를 겨쳐서
서브넷 마스크는 최대치
IPv4는 주소가 나뉘어짐
:32비트(8비트 * 4)
IPv6 : 128비트

램카드에 마다 MAC주소(물리 주소)가 정해진다
IP주소를 MAC주소로 바꾸어 주는 것이 ARP
IP 주소를 네트워크 주소와 호스트 주소로 분리하는 역할을 하는 32비트의 숫자입니다.
IP 주소의 네트워크 부분을 반영하며, 이를 통해 네트워크의 구조와 크기를 결정합니다.
네트워크와 호스트 부분을 나타내는데, '1’의 비트는 네트워크 부분을, '0’의 비트는 호스트 부분을 나타냅니다.
ex) A : 18.17.100.1
다른 네트워크로 들어가는 관문 (입구) 역할을 하는 네트워크 포인트입니다
전송 제어 프로토콜* TCP 프로토콜 번호 6
사용자 데이터그램 프로토콜 UDP 17
데이터그램 혼잡 제어 프로토콜 DCCP 33
스트림 제어 전송 프로토콜 SCTP 132
전송하는 방식
TCP : 데이터 -> 재대로 갔는지 -> 잘 받으면 -> 회신
단점 : 속도느림 정확성 o
UDP : 신경안쓰고 보냄
단점 : 속도빠름 정확성 x
요즘은 TCP와 UDP를 섞어서 한다.
100MB 자체를 보내는 거는 아니다.
하나하나 분해서 보낸다. TCP 규약에 맞쳐서 조금씩 보낸다. 순서대로 넣는것은 아닌다. 컴퓨터는 가장 빠른 회선으로 보낸다. 그다음 패키지를 짜집기를 한다음에 조각들이 다 모아지면 파일 하나가 만들어진다.
인터넷 브라우저 역할
DHCP(Dynamic Host Configuration Protocol)
동적 호스트 설정 프로토콜
DNS(Domain Name System)
도메인 주소 : 홈페이지 주소 IP주소를 도메인주소로 바꾸어준다.
ex)www.google.com -> 74.125.224.112
NAT(Network Address Translation, 네트워크 주소 변환)
패킷 : 데이터를 보내는 단위(박스)
라우팅 : 제일 빠른 회선을 찾아내는 과정
오버플로우 : 패킷을 너무 많아서 한계가 넘어가비리는 경우
레이턴시 : TCP에서 패킷을 보내고 나서 응답이 걸리는 시간
타임 아웃 : 응답이 기다리는데. 응답이 없으면 끊던지, 아님 한번더 보낸다.
케이블
TCP/IP Packet

직렬화(Serialization)
이것은 데이터 구조나 객체 상태를 저장하거나 전송할 수 있는 형식으로 변환하는 과정입니다. 예를 들어, 컴퓨터 게임에서 캐릭터의 상태를 저장하려면 그 캐릭터의 모든 정보(예: 위치, 체력, 아이템 등)를 직렬화하여 파일에 저장해야 합니다.
역직렬화(Deserialization)
이것은 직렬화의 반대 과정으로, 직렬화된 데이터를 원래의 데이터 구조나 객체 상태로 복원하는 것입니다. 예를 들어, 저장된 게임을 다시 시작하려면 저장된 파일에서 캐릭터의 정보를 읽어와 역직렬화하여 캐릭터를 원래 상태로 복원해야 합니다.
빅 엔디언(Big-Endian)
a. 하위 바이트르 먼저 기록
b. 패키지가 따로 따로 오는데. 순서를 정한다.
-IBM PowerPC, XBox 360, One, Playstation 4, Andioid
리틀 엔디언
a. 상위 바이트를 먼저 기록
exx86 x64 ios XBox One, Playstation 4, Android
용어정리
-Scale UP : 서버 크기 증가
-Scale Out: 서버 대수 증가
사용자 인증만을 담당하는 인증 서버
사용자가 먹은 아이템이나 키운 캐릭터 정보를 저장하는 DB서버
랭킹을 보여주기 위한 통계 서버
해킹 차단을 하기 위한 미들웨어 서버와 방화벽 머신 -> 클라우드 서버로 한다.
인던이나 방 만들기를 담당하는 로비 서버
게임을 플레이하면서 사람들과 같이 활동하는 것을 중재하는 zone서버
몹들을 움직여주는 NPC서버
사용자 간 채팅과 욕설 필터링을 담당하는 채팅 서버
사용자 간 일대일 대화를 위한 메신저 서버
GM과의 소통과 기록을 위한 운영서버
모든 서버들의 상태를 관리하고 지휘하는 중앙 서버 관리자
게임 서버에서 일어나는 모든 일들을 기록으로 남기는 로그 서버 부분
부분 유료화 아이템(캐시템) 구매와 사용을 처리해주는 아이템 현금 구매 서버
Stateless + Stateful
비동기 온라인 게임 + 실시간 채팅
비동기 온라인 게임 + 실시간 PVP 인스턴스 던전
Stateful + Stateless
실시간 온라인 게임 + 토탈 랭킹 컨탠츠
실시간 온라인 게임 + 로비, 캐릭터 꾸미기
실시간 온라인 + 느슨한 상호작용 컨탠츠
Network Topology
Client / Server 방식 : 서버가 중앙에 위치하고 클라이언트들이 서버에 연결하여 통신
P2P(Peer to Peer) 방식 : 유저들 끼리 게임
Dedicated Server 방식(단일 서버) : 서버를 기준으로 다른 컴퓨터로 전달
Host 기반 P2P (Super Peer) : 한 컴퓨터를 서버로 두고 유저들끼리 게임
두 방식을 썩어서도 사용

장점
-서버 단독 처리
-일관성 있는 결과 및 동기화
-해킹이나 핵 사용에 강함
-대규모 유저 상호작용 가능
단점
-게임서버 로직의 부담
-개발 기술 및 유지보수 비용
-모든 클라이언트가 서버를 경유해야 하므로 응답성 떨어짐
-서버의 부하나 통신 지연 등으로 인해 정교한 액션 처리 어려움
리슨 서버(Listen Server)
-Host Server
-유저 한명이 서버
P2P (Peer to Peer)
모두가 호스트

잠정
메세지를 직접 상대방에게 전달
네트워크 지연 최소화
클라이언트에서 로직을 처리하므로 정교하고 빠른 처리 가능
서버의 부담이 적음
단점
핵, 치트 등에 취약
개별적인 로직 처리로 동기화 어려움 (충돌 처리 등)
전달 미보장 데이터
전달 보장 데이터
최신 상태 데이터
특급 전달 보장 데이터
ex) 베틀넷
결정론적 락스탭(Deterministic Lockstep)
위치가 아닌 입력 값 넘기기
ex)에이지 엠파이어
데드 레커닝(Dead Reckoning) : 항법추척
ex) 공 굴려가는 거보고 다음 프레임이 플레이 계산을 해서 예측 플레이어들의 계산
링크텍스트
게임 서버 엔진 : Firebase, FLox, Kii