전체 글 67

20250122

패킷파서    socket.buffer = Buffer.concat([socket.buffer, data]);    console.log('=== 새로운 패킷 수신 ===');    console.log('수신된 데이터:', data);    // 패킷의 버전 길이까지의의 헤더 길이 (패킷 길이 정보 + 버전 길이이 정보)    const leastHeaderLength = config.packet.packetTypeLength + config.packet.versionLengthLength;    let totalHeaderLength =      config.packet.packetTypeLength +      config.packet.versionLengthLength +      config.p..

카테고리 없음 2025.01.22

20250121

렐름 기반 MMO 게임 서버 아키텍쳐mmo에서 여러 렐름 서버를 구성하여 평행세계처럼 구성한다.온라인 게임의 경우 스테이스풀한 상태가 필수적이다.수평확장 서버를 사용하며 던전이나 레이드의 경우에는 추가로 데디케이트 서버를 열어 다른 요소로부터 독립시킬수도 있다. 매치기반 실시간 전투 게임 아키텍쳐스테이트풀한 실시간 전투를 위한 서버로 데디케이트 서버를 사용한다.소프트웨어 전개를 하고 유지보수하며 조율하는것은 어렵기에 여러 도구를 사용한다.구글에의해 만들어진 애플리케이션의 디플로이 스케일링을 제공하는 관리 시스템인 쿠버네티스(오픈소스)를 사용해 전개하고, ai 서비스인 orchestrate(www.IBM.com) 를 활용해 반복적인 작업 및 노드 작업을 한다. 로드벨런서로 k8s에서 Nginx ingres..

카테고리 없음 2025.01.21

20250120

클라이언트에 맞춰서 헤더를 변경하였다.  ushort packetType = 1;    //패킷 타입 (2바이트)   ubyte  versionLength = 2; // 버전 길이 (1바이트)   string version = 3;       //버전 (문자열)   uint32 sequence = 4;      //패킷 번호 (4바이트)   uint32 payloadLength = 5; // 데이터 길이 (4바이트)   bytes  payload = 6;       // 실제 데이터 전에 프로토버퍼에서 보지 못한 데이터형이 있었다. ushort, ubyte 이 둘은 프로토버퍼 변수형에 없었다.https://protobuf.dev/programming-guides/proto3/ Language Guide ..

카테고리 없음 2025.01.20

20250118

트러블 슈팅사실 트러블 슈팅도 아니다 따지자면 트러블한테 총을 맞은 느낌이다.   npm init -y 부터 시작하기를 실패했다.파일 구조만 가지고 처음부터 만들기 시작했다.버그 리스트가 한 화면에 안들어오자 강의 내용에서 조금씩 가져다가 넣었다.버그가 사라졌는데 작동도 안되었다. 금요일 새벽 3시쯤에 강의 코드 통쨰로 복사해서 필수 기능이 작동하도록 수정했다.  스스로를 너무 과신한 동시에 시간 조절에 실패했다.

카테고리 없음 2025.01.17

20250114

네트워크 7계층물리계층  케이블등 하드웨어데이터 링크 계층 데이터 전송의 오류 검출과 수정 프레임 전송을 담당 mac주소 등네트워크 계층 데이터 패킷을 효율적으로 전달하는 역할 ip주소 등전송 계층 TCP UDP세션 계층 통신 세션을 설정 관리 및 종료프레젠테이션 계층 데이터의 인코딩 디코딩 암호화 복호화 담당응용계층 사용자가 접하는 소프트웨어와 인터페이스 등을 말한다.HTTP, FTP, SMTP 등  CPU 의 구조 연산장치(ALU) 산술 및 논리 연산을 수행 제어장치역할 명령어 인출 명령어 해독 명령어 실행 명령어 순서 제어 데이터 이동 제어구성 요소 프로그램 카운터  다음에 실행할 명령어의 주소를 저장 명령어 레지스터 IR  현재 명령어를 저장 디코더  명령어를 해독한다. 제어 신호 생성기  다양한..

카테고리 없음 2025.01.14

TIL20250109

삼각함수cos sin tan를 기반으로 하는 수학 계산식 sin = 대변/빗변cos= 인접변/빗변tan= 대변/인접변 역삼각함수는 분모분자를 뒤집으면 된다. 삼각함수로 각도 계산할떄 라디안이라는 단위를 많이 쓴다반지름 만큼의 길이만큼 갔을때 1라디안 이라고 한다. 원의 지름은 2파이r 이니까 360도는 2파이 라디안이 된다. 게임에서 무언가가 이동하는걸 계산할때 자주 응용된다.  삼각함수를 활용해서 각도를 응용해 좌표를 계산하기 좋고 아크삼각함수는 좌표를 응용해 각도를 계산하기 좋다.

카테고리 없음 2025.01.09

TIL20250108

TCP 연결장점:낮은 지연 시간: 네트워크 지연 시간이 적고 빠른 응답 속도를 제공합니다.연결 유지: 지속적인 연결을 통해 데이터를 스트리밍하거나 실시간으로 송수신할 수 있습니다.프로토콜 유연성: 사용자가 필요에 따라 커스터마이징 할 수 있는 원시 소켓 통신을 제공합니다.단점:복잡성: 커스터마이징과 구현이 복잡할 수 있으며, 연결을 관리하는 데 추가적인 코드와 노력이 필요합니다.보안: 별도의 보안 프로토콜을 구현해야 할 수 있습니다(예: TLS).API 통신 (HTTP/HTTPS)장점:표준화: RESTful API, GraphQL 등 표준화된 방식으로 통신할 수 있습니다.확장성: 요청/응답 구조를 통해 다양한 클라이언트(웹, 모바일 등)와 쉽게 통신할 수 있습니다.보안: HTTPS를 통해 기본적인 보안이..

카테고리 없음 2025.01.08

TIL20250107

1. 전송 계층 프로토콜tcp,udptcp는 연결지향 신뢰도 높고 흐름을 제어함udp 데이터를 던지고 도착하길 기도함2. 대칭키, 비대칭키 암호화대칭키 서버랑 클라이언트가 같은 키를 가지고 암호/복호화를 한다 보안이슈!비대칭키 주로 인증서를 통한 개인키와 공개키를 이야기 한다.ca인가 하는 공인 인증기관 인증서를 받아놓고 이 인증서 기반의 공개키를 보내면 클라이언트에서 인증서와 키를 가지고 검증하고 서버에 전송한다.보안 이슈가 없지는 않다. 하지만 언제나 비용과 효율을 가지고 생각해야 한다.이상적으로는 적어도 비밀번호 변경 권장기한 이내에는 해독이 어려우면 좋다.3. 로드밸런싱서버를 물리/로직상으로 분리할 경우 총괄하는 메니저가 있어야 하고 이것에서 일을 나눠주거나 하는것을 말한다.서버에서 일을 하고있는..

카테고리 없음 2025.01.07

TIL2025-01-03

javascript 버퍼개체 바이너리를 다루기 위해 있는 형식? 변수? 유니코드 변환 형식과 함께 쓰며 (8/16 비트) 고정된 메모리 블록을 다룬다. 앞으로 tcp 통신을 하면서 필수적으로 사용될 예정 tcp 주요 특징을 다시 짚고 가야한다.연결 지향적이다. (html도 tcp기반이지만 매번 다시 핸드셰이크를 한다.)신뢰성이 높다데이터 흐름 제어를 한다 (UDP랑 비교해서 확인할것)데이터 순서를 보장한다. 핸드셰이크송신 SYN -> 수신송신 송신 ACK -> 수신연결됨....syn(synchronize)ack(acknowledgment)싱크 요청 - 확인함 이라는 뜻 싱크요청싱크 확인함확인함의 과정이 됨 종료시 송신 FIN->수신 송신 송신  FIN 수신 송신 ACK ->수신보통 클라이언트가 먼저 fi..

카테고리 없음 2025.01.03