공부 학습

게임 서버 공부_네트워크

Multitab 2023. 2. 28. 18:04

정보 출처 : 게임 서버 프로그래밍 교과서 (배현직 - 길벗출판사)

스트림 형식

  • A에서 B로 전송되는 데이터 흐름
  • 사용자의 의도와는 다른게 보낸 메세지수와 받은 메세지 수가 다를수 있다.
  • 사용자의 의도대로 데이터를 구분하기 위해 다음과 같은 방식을 사용하나
    • 첫바이트에 전송될 데이터의 크기를 붙히고 데이터를 넣어 전송한다.
    • 데이터를 보내고 구분자를 뒤에 붙힌다.
    • 이때 데이터 내에 구분자와 동일한 부분이 없도록 주의해야한다.

메세지 형식

  • 자체적으로 데이터롸 시작과 끝을 구별하는 방식
  • 약속된 필드를 규정하여 서로의 명령을 주고 받는다.
  • 만약 IP 패킷의 최대 크기(1300byte)를 넘는 메세지를 보내야한다면 크기제한에 맞추어 나눈다.(fragmentation)

게임에서 사용하는 메세지 형식

  • 텍스트 형식
    • HTTP나 Json 형식으로 사용
    • 디버깅이 편함
    • Parser가 별도로 필요함
  • 바이너리 형식
    • Binary 형식으로 사용
    • 디버깅이 불편함
    • 해킹이 어려움
    • 통신량, 보안에 효율적임
  • 메타데이터
    • 자신이 어떤 정보를 담고있는지 포함가능
    • 해킹이 편하고 통신량이 늘어남
    • 하위 호환성 측면에서 유리함

네트워크 주소 변환

  • 포트 매핑 엔트리 : 송신자의 끝점과 수신자의 끝점을 이어주는 매핑정보
  • 홀펀칭 : 외부 IP와 내부 IP를 연결하기 위해 공유기가 임의의 포트를 할당하는것
    • 외부 주소에서 내부 주소로 변경하면서 공유기는 패킷 헤더에 목적지 IP를 변경함. 반대도 마찬가지

'공부 학습' 카테고리의 다른 글

Rust 입문 정리  (3) 2024.09.22
Rust 개발 환경 설정 및 빌드 방법  (1) 2024.09.22
게임 서버 공부_멀티스레드 2  (0) 2023.02.28
게임 서버 공부_멀티스레드 프로그래밍 1  (0) 2023.02.28
Docker 명령어 정리  (0) 2022.12.17