정보 출처 : 게임 서버 프로그래밍 교과서 (배현직 - 길벗출판사)
스트림 형식
- 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 |