CoderTools

Protocol Buffers 도구

Protocol Buffers 메시지 인코딩, 디코딩 및 검증

Proto 스키마

샘플 스키마:

입력

스키마를 파싱하고 메시지 유형을 선택하여 폼 필드를 생성하세요

출력

Protocol Buffers 문서

Protocol Buffers란?

Protocol Buffers(Protobuf)는 Google에서 개발한 언어 중립적, 플랫폼 중립적인 구조화된 데이터 직렬화 메커니즘입니다. 데이터 직렬화에 있어 XML 및 JSON보다 작고, 빠르며, 간단합니다.

주요 기능

  • 언어 및 플랫폼 중립적
  • XML/JSON보다 작고 빠름
  • 스키마 정의를 통한 강력한 타이핑
  • 하위 및 상위 호환성
  • 자동 코드 생성
  • 효율적인 바이너리 인코딩

이 도구 사용 방법

  1. 스키마 에디터에 .proto 스키마 정의를 입력하세요
  2. 스키마 파싱을 클릭하여 스키마를 검증하고 파싱하세요
  3. 작업할 메시지 유형을 선택하세요
  4. 인코딩: JSON 데이터를 입력하고 인코딩을 클릭하세요
  5. 디코딩: 바이너리 데이터를 입력하고 디코딩을 클릭하세요
  6. Raw 디코딩을 사용하여 스키마 없이 바이너리 데이터 분석

도구 기능

인코딩

JSON 데이터를 Protocol Buffers 바이너리 형식으로 변환합니다. 유형 검증과 함께 쉬운 데이터 입력을 위한 폼 기반 입력을 지원합니다.

디코딩

Protocol Buffers 바이너리 데이터를 읽을 수 있는 JSON 형식으로 다시 변환합니다. Base64, Hex 및 C 스타일 hex 입력 형식을 지원합니다.

Raw 디코딩

스키마 없이 protobuf 바이너리 데이터를 분석합니다. 디버깅, 리버스 엔지니어링 또는 알 수 없는 메시지 분석에 유용합니다.

폼 입력

스키마를 기반으로 입력 폼을 생성하는 사용자 친화적인 폼 인터페이스입니다. 중첩 메시지, 열거형 및 repeated 필드를 지원합니다.

Proto 구문 참조

Protocol Buffers는 메시지 유형 정의를 위한 간단한 구문을 사용합니다:

syntax = "proto3";

message Person {
    string name = 1;
    int32 id = 2;
    string email = 3;
    
    enum PhoneType {
        MOBILE = 0;
        HOME = 1;
        WORK = 2;
    }
    
    message PhoneNumber {
        string number = 1;
        PhoneType type = 2;
    }
    
    repeated PhoneNumber phones = 4;
}
  • syntax: protobuf 버전 지정 (proto2 또는 proto3)
  • message: 필드가 있는 메시지 유형 정의
  • field: 각 필드는 유형, 이름 및 고유 번호를 가짐
  • enum: 열거형 유형 정의
  • repeated: 필드를 repeated로 표시 (배열/리스트)
  • optional: 필드를 optional로 표시 (proto3)

스칼라 유형

Protocol Buffers는 다양한 스칼라 유형을 지원합니다:

유형 설명 기본값
int32, int64부호 있는 정수 (가변 길이 인코딩)0
uint32, uint64부호 없는 정수0
sint32, sint64ZigZag 인코딩을 사용하는 부호 있는 정수 (음수에 효율적)0
fixed32, fixed64고정 너비 부호 없는 정수 (4 또는 8 바이트)0
sfixed32, sfixed64고정 너비 부호 있는 정수 (4 또는 8 바이트)0
float, double부동 소수점 숫자 (32 또는 64비트)0.0
bool불리언 값 (true/false)false
stringUTF-8 인코딩된 텍스트 문자열""
bytes임의의 바이너리 데이터empty

와이어 유형

Protobuf는 와이어 유형을 사용하여 바이너리 데이터에서 값을 읽는 방법을 결정합니다:

와이어 유형 의미 사용처
0Varintint32, int64, uint32, uint64, sint32, sint64, bool, enum
164-bitfixed64, sfixed64, double
2Length-delimitedstring, bytes, embedded messages, packed repeated
532-bitfixed32, sfixed32, float

모범 사례

  • 새 프로젝트에는 proto3 구문을 사용하세요 - 더 간단하고 광범위하게 지원됩니다
  • 필드 번호를 안정적으로 유지하세요 - 기존 필드의 번호를 재사용하거나 변경하지 마세요
  • 데이터를 명확하게 설명하는 의미 있는 필드 이름을 사용하세요
  • 자주 사용되는 필드에는 필드 번호 1-15를 사용하세요 (1바이트 사용)
  • 값의 배열/리스트에는 'repeated' 키워드를 사용하세요
  • 가능한 값의 고정 세트가 있는 필드에는 enum을 정의하세요

자주 묻는 질문

Protocol Buffers (Protobuf)란 무엇입니까?

Protocol Buffers는 구조화된 데이터를 직렬화하기 위한 언어 중립적이고 플랫폼 중립적인 확장 가능한 메커니즘입니다. JSON과 유사하지만 더 작고 빠르며 기본 언어 바인딩을 생성합니다. gRPC 마이크로서비스에서 널리 사용됩니다.

이 온라인 Protobuf 도구는 어떻게 사용합니까?

먼저 `.proto` 스키마 정의를 에디터에 붙여넣습니다(또는 샘플 로드). '스키마 파싱/구문 분석'을 클릭하고 메시지 유형을 선택합니다. 그런 다음 '인코딩'(JSON → 바이너리) 모드와 '디코딩'(바이너리 → JSON) 모드 간을 전환하여 데이터를 처리할 수 있습니다.

'Raw 디코딩'(Raw Decode)이란 무엇입니까?

Raw 디코딩을 사용하면 `.proto` 파일이 없어도 바이너리 Protobuf 메시지를 검사할 수 있습니다. 바이너리 구조를 파싱하고 필드 번호, Wire Type 및 값을 표시하므로 알 수 없는 패킷의 디버깅이나 리버스 엔지니어링에 매우 유용합니다.

데이터 처리는 안전합니까?

네. 이 도구는 JavaScript (protobuf.js)를 사용하여 브라우저에서 100% 실행됩니다. 스키마, JSON 데이터 및 바이너리 데이터는 서버로 전송되지 않으므로 민감한 정보가 안전하게 보호됩니다.

일반적인 사용 사례

  • 마이크로서비스의 서비스 간 통신 (gRPC)
  • 데이터 저장 및 캠싱
  • 구성 파일
  • 네트워크 프로토콜 및 API

참조

빠른 메뉴

최근 사용 도구 없음