개발 서적 리뷰/게임서버 프로그래머 책(10)
-
Socket의 기본 정리 ( feat, Blocking / Non-Blocking )
소켓소켓의 경우 파일 핸들작업과 유사파일 핸들 : 파일의 읽고/쓰기를 조작하기 위한 컨트롤소켓 핸들 : 네트워크 연결을 조작하기 위한 컨트롤소켓의 경우 비동기 처리가 주로 사용됨비동기처리의 필요성동기처리일경우, 해당 소켓의 통신과정 동안 사용자 입장에서는 Main 함수가 정지되어있음 (다른 일을 처리하지 못해 멈춰있는것처럼 보임)비동기 방식논블로킹 소켓Overlapped I/Oepoll (linux)I/O Completion Port (IOCP / Window) Blocking 통신 구조클라이언트sock_handle = socket(TCP)sock_handle.bind(any_port)sock_handle.connect(server_ip:port)sock_handle.send()sock_handle.c..
2024.05.30 -
[게임서버프로그래밍#번외1] 네트워크 간단 요약
네트워크 간단 요약 정리 바이너리 전송- 이진화 되어있어서 컴퓨터가 이해하기 쉽게 표현 (사람이 보기 힘듬) 장점 : 해커가 확인하기 어려움단점 : 디버깅 힘듬 메타 데이터란 ?바이너리의 경우 사람이 알아보기 힘든 부분도 있고, 서로 다른 버전 (통신규격 변경으로 인해) 의 경우 서로 통신이 어려운 단점이 존재메타데이터일종의 어떤 데이터인지 설명 장점디버깅이 쉬움클라이언트 버전이 다르더라도 (메시지 형태가 다름) 메타데이터를 통해 인지할 수 있다.단점데이터 크기가 커진다사람이 알아보기 쉽다스트림 vs 메시지스트림 : 송신자와 수신자가 받는 크기가 일정하지 않을 수 있다메시지 : 송신자와 수신자가 받는 크기가 일정하다TCP vs UDPTCP : 신뢰성 있는 통신, 스트림 형식 ( 데이터를 받았다는 응..
2024.05.30 -
[게임서버프로그래밍#7] 네트워크 기본 통신 정리 (TCP/UDP, NAT, 네트워크 품질)
이 글에서는 네트워크 통신의 기본 개념을 정리한다.레이턴시, 패킷 유실률, 전송 속도와 같은 품질 지표부터, TCP/UDP 통신 방식 차이, NAT(Network Address Translation)의 개념까지 실제 사례를 통해 살펴본다. 네트워크 품질을 결정하는 요소네트워크 품질은 다음 3가지 주요 지표로 평가할 수 있다.1. 레이턴시(Latency)데이터가 목적지에 도달하는 데 걸리는 시간이다.라우터, 스위치 경유가 많거나 거리(물리적 거리)가 멀수록 레이턴시가 증가한다.진단 방법:tracert 명령어를 이용해 중간 경유지 확인 가능.예시:한국 → 미국 서버로 접속할 때 레이턴시가 100ms 이상 발생할 수 있다.2. 패킷 유실률(Packet Loss)네트워크 전송 중 패킷이 손실되는 비율이다.라..
2024.05.26 -
[게임서버프로그래밍#8] 병렬성, 싱글/멀티스레드 서버, 세마포어, 병렬 자료구조
이 글에서는 병렬 처리의 기본 개념부터, 싱글스레드 서버와 멀티스레드 서버의 차이, 세마포어의 역할, 그리고 병렬 자료구조까지 실제 서버 개발에서 반드시 고려해야 할 병렬성 이슈를 다룬다. 병렬성(Parallelism)이란정의:병렬성은 여러 작업을 동시에 수행하는 능력을 의미한다.CPU의 여러 코어를 활용하거나, I/O 대기 시간 동안 다른 작업을 처리하여 시스템 자원을 최대로 활용하는 것이 목적이다.진짜 병렬성:하드웨어적으로 여러 코어가 동시에 다른 작업을 수행하는 것논리적 병렬성:하나의 코어에서 여러 작업이 번갈아가며 실행되는 것(비동기 처리 포함) 싱글스레드 서버하나의 스레드만 사용하여 모든 작업을 처리하는 서버이다.장점: 구조가 단순하고 디버깅이 쉽다.단점: 다수 클라이언트 접속 시 병..
2024.05.26